fire.api.niv package
Module contents
API-modul til fire niv-underkommandoer.
Submodules
Funktionalitet til fire niv udtræk-observationer
- fire.api.niv.udtræk_observationer.OBSKLASSE = {NivMetode.MGL: <class 'fire.api.model.observationer.GeometriskKoteforskel'>, NivMetode.MTL: <class 'fire.api.model.observationer.TrigonometriskKoteforskel'>}
Oversætter mellem nivellementsmetode og observationsklasse.
- fire.api.niv.udtræk_observationer.brug_alle_på_alle(operationer: Iterable[Callable], objekter: Iterable[Any]) Iterator[Any]
Udfør hver operation på hvert objekt og returnér resultaterne.
- fire.api.niv.udtræk_observationer.filterkriterier(nøjagtigheder: Iterable[Nøjagtighed]) Mapping[int, float]
Returnerer en dictionary med en spredning for hver kombination af nivellementsmetode og valgte nøjagtigheder.
- fire.api.niv.udtræk_observationer.filtrer_præcisionsnivellement(observationer: list[Observation], præcisionsnivellement: int) list[GeometriskKoteforskel]
Filtrer observationer på præcisionsnivellement hvis de er af typen GeometriskKoteforskel
- fire.api.niv.udtræk_observationer.klargør_geometrifiler(geometrifiler: Iterable[str]) List[Geometry]
Returnerer samlet liste med hvert lag i hver fil.
Hver geometrifil kan have flere features eller lag.
Åbn og konvertér indhold af geometrifiler.
- fire.api.niv.udtræk_observationer.observationer_inden_for_spredning(resultatsæt: Set[GeometriskKoteforskel | TrigonometriskKoteforskel], spredninger: Mapping[int, float]) Iterator[GeometriskKoteforskel | TrigonometriskKoteforskel]
- fire.api.niv.udtræk_observationer.søgefunktioner_med_valgte_metoder(forberedt_søgefunktion: Callable, metoder: List[NivMetode]) Iterator[Callable]
Returnerer en søgefunktion med fastsatte argumenter for hver metode.
- fire.api.niv.udtræk_observationer.timestamp() str
- class fire.api.niv.datatyper.NivKote(punkt: str, H: float, dato: datetime, spredning: float, fasthold: bool = False, nord: float = nan, øst: float = nan)
Bases:
objectKoter som enten indgår som input eller output til en beregning
- H: float
- dato: datetime
- fasthold: bool = False
- nord: float = nan
- punkt: str
- spredning: float
- øst: float = nan
- class fire.api.niv.datatyper.NivMetode(*values)
Bases:
Enum- MGL = 1
- MTL = 2
- MotoriseretGeometriskNivellement = 1
- MotoriseretTrigonometriskNivellement = 2
- class fire.api.niv.datatyper.NivObservation(fra: str, til: str, dato: datetime, multiplicitet: int, afstand: float, deltaH: float, spredning: float, id: str)
Bases:
objectAlmindelige, ukorrelerede nivellementobservationer
- afstand: float
- dato: datetime
- deltaH: float
- fra: str
- id: str
- multiplicitet: int
- spredning: float
- til: str
- class fire.api.niv.datatyper.Nøjagtighed(*values)
Bases:
Enum- D = 3
- Detail = 3
- K = 2
- Kvalitet = 2
- P = 1
- Præcision = 1
- U = 9
- Ukendt = 9
Nivellementskriterier og hjælpefunktionalitet.
Nøjagtighedskrav (også kaldet forkastelseskriterier) for nivellementmålinger samt de erfarede og i databasen indtastede empiriske spredninger per afstandsenhed, som bruges som á priori-spedninger for en given opmåling.
Nøjagtighedskrav:
|-----------|-----------------|--------------------|---------------|--------------------| | Præcision | 2.0 | 0.6 | 2.0 | 1.5 | | Kvalitet | 2.5 | 1.0 | 2.5 | 2.0 | | Detail | 3.0 | 1.5 | 3.0 | 3.0 | | Eksternt | 5.0 | | | |
- fire.api.niv.kriterier.EMPIRISK_SPREDNING: Mapping[Tuple[Nøjagtighed, NivMetode], float] = {(Nøjagtighed.D, NivMetode.MGL): 1.5, (Nøjagtighed.D, NivMetode.MTL): 3.0, (Nøjagtighed.K, NivMetode.MGL): 1.0, (Nøjagtighed.K, NivMetode.MTL): 2.0, (Nøjagtighed.P, NivMetode.MGL): 0.6, (Nøjagtighed.P, NivMetode.MTL): 1.5, (Nøjagtighed.U, NivMetode.MGL): 9999.9, (Nøjagtighed.U, NivMetode.MTL): 9999.9}
Implementerer empiriske spredninger (brugt á priori) jævnfør nøjagtighedskrav i modulets dokumentation.
- fire.api.niv.kriterier.FORKASTELSESKRITERIUM: Mapping[Tuple[Nøjagtighed, NivMetode], float] = {(Nøjagtighed.D, NivMetode.MGL): 3.0, (Nøjagtighed.D, NivMetode.MTL): 3.0, (Nøjagtighed.K, NivMetode.MGL): 2.5, (Nøjagtighed.K, NivMetode.MTL): 2.5, (Nøjagtighed.P, NivMetode.MGL): 2.0, (Nøjagtighed.P, NivMetode.MTL): 2.0}
Implementerer forkastelseskriterier jævnfør nøjagtighedskrav i modulets dokumentation.
- fire.api.niv.kriterier.mildeste_kvalitetskrav(nøjagtigheder: List[Nøjagtighed], metoder: List[NivMetode], mapping: dict = {(Nøjagtighed.D, NivMetode.MGL): 1.5, (Nøjagtighed.D, NivMetode.MTL): 3.0, (Nøjagtighed.K, NivMetode.MGL): 1.0, (Nøjagtighed.K, NivMetode.MTL): 2.0, (Nøjagtighed.P, NivMetode.MGL): 0.6, (Nøjagtighed.P, NivMetode.MTL): 1.5, (Nøjagtighed.U, NivMetode.MGL): 9999.9, (Nøjagtighed.U, NivMetode.MTL): 9999.9}) float
Returnerer mildeste (højeste værdi) kvalitets-kriterium i enheden [mm / km ** (1/2)] ud fra kombination af flere mulige kombinationer af nøjagtighed og metoder.
- class fire.api.niv.regnemotor.DumRegn(*args, **kwargs)
Bases:
RegneMotorEksempel på en alternativ regnemotor
- property filer: list
DumRegn producerer ingen filer, returnerer altid den samme tomme liste.
- udjævn()
Udjævn observationer
- exception fire.api.niv.regnemotor.FastholdtIkkeObserveret(uobserverede_fastholdte_punkter: list[str] = None)
Bases:
ValideringFejl
- class fire.api.niv.regnemotor.GamaRegn(*, xml_in: str = None, xml_out: str = None, html_out: str = None, **kwargs)
Bases:
RegneMotorRegnemotor som bruger GNU Gama til at lave nivellementberegninger.
- property filer: list
En liste af filer som Gama producerer
- kald_gama()
Udjævning via gama
- læs_gama_outputfil() list[NivKote]
Læser output fra GNU Gama og returnerer relevante parametre til at skrive xlsx fil
- skriv_gama_inputfil()
Skriv gama-inputfil i XML-format
- udjævn()
Skriver gama input, kalder gama og læser gama output.
- class fire.api.niv.regnemotor.RegneMotor(observationer: list[NivObservation], gamle_koter: list[NivKote], projektnavn: str = 'fire')
Bases:
ABCØverste led i RegneMotor-hierarkiet til udjævning af nivellementsobservationer
En RegneMotor fungerer som en "adapter", som gør det muligt at arbejde med forskellige repræsentationer af nivellementobservationer og koter på en ensartet måde.
En RegneMotor består basalt set af et sæt af observationer til et sæt fikspunkter,samt ét eller flere fastholdte punkter. Disse er hver defineret som lister af dataklasserne
NivObservationhhv.NivKote. Disse klasser indeholder de basale attributter nødvendige for nivellementberegninger.Instantiering
Der er defineret forskellige metoder til instantiering:
fra_dataframe : Start RegneMotor ud fra pandas DataFrames som anvendes i det almindelige fire niv-workflow
Udjævning
Udjævning af observationer foretages med udjævn som forventes at være implementeret i alle nedarvende klasser. Udjævningsresultaterne er tilgængelige i
self.nye_kotersomlist[NivKote].Grafanalyse
Observationerne i et nivellementprojekt danner et netværk af punkter (knuder) som forbindes af observationslinjerne (kanter). Tilsammen kaldes dette en graf. RegneMotor anvender derfor værktøjer kendt fra grafteori til at beregne størrelser som man normalt er interesseret i ifm. et nivellementprojekt.
Der kan bl.a. undersøges, om netværket består af flere usammenhængende grafer (subnet), samt, for hver af disse subnet, om det indeholder mindst ét fastholdt punkt. Hvis ikke, vil det ikke være muligt at gennemføre udjævningen for punkterne i pågældende subnet.
Almindeligvis er man ved nivellementberegninger også interesseret i at identificere lukkede "polygoner", bestående af observationslinjerne, også kaldet en "kreds". Analyseres de observerede højdeforskelle langs kanterne i en kreds er det muligt at beregne polygonens lukkesum for frem- og tilbagenivellement samt forskellen herimellem, som kaldes "summa rho".
Resultater
RegneMotor attributterne
self.gamle_koterogself.nye_koterkan bruges til at vise udjævningsresultaterne i forskellige formater.til_dataframegenererer en dataframe i samme format som inputtet ifra_dataframe- beregn_lukkesummer(min_længde=3, metode: str = None, **kwargs) dict[tuple[str], LukkesumStats]
Finder polygoner i nivellementnettet og beregner lukkesummer
Returnerer en dict hvor nøglerne er selve polygonerne, givet ved kredse, og værdierne er de beregnde statistiske parametre, herunder lukkesummer, pakket ind i dataklassen LukkesumStats.
Ønsker man at beregne lukkesummen af en bestemt polygon kan man bruge lukkesum_af_polygon direkte.
- property fastholdte: dict[str, float]
Find fastholdte punkter og koter til en beregning
- abstract property filer: list
En liste af filnavne som motoren producerer
- classmethod fra_dataframe(observationer_df: DataFrame, punkter_df: DataFrame, **kwargs) Self
Oversæt fra regneark til internt format
- property gamle_koter
- property gyldighedstidspunkt: datetime
Tid for sidste observation der har været brugt i beregningen
- property multidigraf: MultiDiGraph
Byg en digraf ud fra observationerne
Returnerer et networkx MultiDiGraph objekt som kan indeholde flere parallelle (deraf Multi), rettede (deraf Di(rectional)) linjer (kanter) mellem hvert punkt (knude). Hver kant i grafen har en nøgle som refererer til en
NivObservation.
- netanalyse() tuple[dict[str, set[str]], list[list[str]], list[str]]
Konstruér netgraf og find ensomme punkter
Nettet reduceres for de ensomme punkter, da ensomme punkter ikke kan estimeres i udjævningen.
- property observationer
- property observerede_punkter: set[str]
Foreningsmængden af opstillings- og sigtepunkter
- property opstillingspunkter: set[str]
Alle opstillingspunkter
- property sigtepunkter: set[str]
Alle sigtepunkter
- til_dataframe() DataFrame
Oversætter udjævningsresultater fra det interne format til dataframe
Den returnerede dataframe har samme kolonnenavne som "Punktoversigt"- arkdefinitionen. Der bruges kun den delmængde af kolonnerne som er relevante for nye koter. Dvs. at der ignoreres kolonnerne "uuid", "System" og "Udelad publikation". Disse kolonner skal man selv udfylde bagefter.
- abstractmethod udjævn()
Udjævn observationer
- valider_fastholdte()
- exception fire.api.niv.regnemotor.UdjævningFejl
Bases:
ExceptionDer gik noget galt under udjævningen
- exception fire.api.niv.regnemotor.ValideringFejl
Bases:
ExceptionInput til regnemotoren er forkert