Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Forbedringer til fire niv udtræk-observationer #781

Open
krebslw opened this issue Oct 15, 2024 · 1 comment
Open

Forbedringer til fire niv udtræk-observationer #781

krebslw opened this issue Oct 15, 2024 · 1 comment
Labels
bug Fejl i programmel optimering Issues mhp at afvikle koden hurtigere

Comments

@krebslw
Copy link
Collaborator

krebslw commented Oct 15, 2024

Der er flere ting ved udtræk-observationer som kan være bedre, herunder oplistet:

  1. --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:
    billede
    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)
  1. Filtrering på DVR90 er unødvendig. Se kodestump nedenfor.
    1. 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. )
    2. 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.
            # Forbereder søgefunktion med argumenter fastsat.
            DVR90 = db.hent_srid(SRID.DVR90)
            funktion = db.hent_observationer_fra_opstillingspunkt
            fastholdte_argumenter = dict(
                tid_fra=fra,
                tid_til=til,
                srid=DVR90,
                kun_aktive=True,
                sigtepunkter=punkter,
            )

Dette kan fikses ved bare at fjerne argumentet srid=DVR90,

  1. 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 Sammenføj og harmonisér regnearksfunktionalitet #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.
@krebslw krebslw added bug Fejl i programmel optimering Issues mhp at afvikle koden hurtigere labels Oct 15, 2024
@krebslw
Copy link
Collaborator Author

krebslw commented Oct 30, 2024

Endnu ét punkt til ønskelisten efter snak med @Aslak-Meister:

  1. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Fejl i programmel optimering Issues mhp at afvikle koden hurtigere
Projects
None yet
Development

No branches or pull requests

1 participant