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: object

Koter 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: object

Almindelige, 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:

Metode | MGL | MGL | MTL | MTL |
| Forkastelses- | Empirisk spredning | Forkastelses- | Empirisk spredning |
| kriterium | (brugt á priori) | kriterium | (brugt á priori) |
Krav | [mm / sqrt(km)] | [mm / sqrt(km)] | [ppm] | [ppm] |

|-----------|-----------------|--------------------|---------------|--------------------| | 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: RegneMotor

Eksempel 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: RegneMotor

Regnemotor 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 NivObservation hhv. 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_koter som list[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_koter og self.nye_koter kan bruges til at vise udjævningsresultaterne i forskellige formater. til_dataframe genererer en dataframe i samme format som inputtet i fra_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: Exception

Der gik noget galt under udjævningen

exception fire.api.niv.regnemotor.ValideringFejl

Bases: Exception

Input til regnemotoren er forkert