Der er flere ting ved udtræk-observationer som kan være bedre, herunder oplistet:
--buffer virker ikke efter hensigten
Det er meningen at enheden på bufferafstanden skal være i [m]. Fx udtrækker fire niv udtræk-observationer TEST_SAG GRNA --buffer 1 20701 observationer, se figur:
Den nuværende implementering definerer funktionen polygoner til at omdanne en liste af punkter og bufferafstanden til en liste af geometrier (cirkler). Der bliver ikke gjort noget for at omregne afstande til meter, så afstanden bliver ved med at være i grader. Kan fixes ved at bruge punktets utm-koordinater i stedet.
def polygoner(punkter: Iterable[Punkt], buffer: int) -> Iterator[Geometry]:
"""Returnerer en søgeklar liste med Geometry-instanser til søgning i databasen."""
# Hent punkternes WGS84-koordinater:
# Geometri-koordinaterne er altid i WGS84.
koordinatsæt = (punkt.geometri.koordinater for punkt in punkter)
# Opbyg geometri for punkt-koordinater til søgning.
shapely_punkter = (geometry.Point(*koordinater) for koordinater in koordinatsæt)
# Lav den endelige søge-geometri ved at bruge den angivne buffer som
# radius i en forsimplet cirkel (polygon) omkring koordinaterne.
shapely_polygoner = (punkt.buffer(buffer) for punkt in shapely_punkter)
# Tilføj polygonerne for de enkelte identer til geometrier, der skal søges i nærheden af.
# Opret samtidig et geometri-objekt med hver søge-geometris Well-Known Text (WKT).
return (Geometry(polygon.wkt) for polygon in shapely_polygoner)
Filtrering på DVR90 er unødvendig. Se kodestump nedenfor.
For det første ligger der mange observationer som slet ikke kan mappes til en koordinat (via beregninger) og dermed kan filtering på srid ikke foretages. Dette er gældende for ca 100 000 ud af 243 000 observationer af typen geometrisk eller trigonometrisk. Disse observationer vil være umulige at fremsøge ud fra punktets ident alene (dog er det stadig muligt at finde dem på anden vis, se næste punkt. )
For det andet bliver der alligevel ikke filtreret på DVR90 når man søger via geometrier eller buffer-afstand, så i bedste fald er filtrering på DVR90 inkonsistent.
Dette kan fikses ved bare at fjerne argumentet srid=DVR90,
Skrivning til regneark gøres ikke på samme måde som i de andre niv-underkommandoer
Det gøres med funktionen skriv_data. I alle andre niv-kommandoer anvendes funktionen skriv_ark. Jeg ved godt der lavet en indsats for at refaktorisere en del af regnearks-funktionaliteten til at ligge i fire.io.regnerk , så måske hører dette til i #498 . For nu fejler det i hvert fald grimt hvis man fx kører fire niv udtræk-observationer og samtidig har regnearket åbent, hvilket det ikke gør når man bruger de andre niv-kommandoer.
Endnu ét punkt til ønskelisten efter snak med @Aslak-Meister:
Tilføj mulighed for at filtrere MGL-observationer på attributten "præcisionsnivellement", for nemt at kunne trække observationer ud som indgik i ét at de tre landsdækkende nivellementer.
Der er flere ting ved udtræk-observationer som kan være bedre, herunder oplistet:
--buffer
virker ikke efter hensigten Det er meningen at enheden på bufferafstanden skal være i [m]. Fx udtrækkerfire niv udtræk-observationer TEST_SAG GRNA --buffer 1
20701 observationer, se figur: Den nuværende implementering definerer funktionenpolygoner
til at omdanne en liste af punkter og bufferafstanden til en liste af geometrier (cirkler). Der bliver ikke gjort noget for at omregne afstande til meter, så afstanden bliver ved med at være i grader. Kan fixes ved at bruge punktets utm-koordinater i stedet.Filtrering på DVR90 er unødvendig. Se kodestump nedenfor.
Dette kan fikses ved bare at fjerne argumentet
srid=DVR90,
Skrivning til regneark gøres ikke på samme måde som i de andre niv-underkommandoer Det gøres med funktionen
skriv_data
. I alle andre niv-kommandoer anvendes funktionenskriv_ark
. Jeg ved godt der lavet en indsats for at refaktorisere en del af regnearks-funktionaliteten til at ligge ifire.io.regnerk
, så måske hører dette til i #498 . For nu fejler det i hvert fald grimt hvis man fx kørerfire niv udtræk-observationer
og samtidig har regnearket åbent, hvilket det ikke gør når man bruger de andre niv-kommandoer.