Spring til indhold

Geospatial

data hvis betydning afhænger af hvor de er

Hvad det er

Geospatial bruges om data, analyser og software, hvor en placering på jorden er en del af betydningen. En vindmåling er bare et tal, indtil den er knyttet til den mast, den blev taget ved. En måleraflæsning bliver brugbar til planlægning, når den kan placeres på en bestemt strækning af nettet, inden for et bestemt kvarter eller tæt på en vejrstation. Ordet er et tillægsord og følger det, det beskriver: geospatiale data, en geospatial join, geospatial modellering.

Rumlig er det bredere ord. Et printudlæg, en lagerplan målt i lokale meter og en maskintegning er alle rumlige, og deres koordinater giver kun mening inden for tegningen. Geospatiale data er forankret til kloden gennem et koordinatsystem, så to datasæt, der aldrig er lavet til hinanden, alligevel kan lægges oven på hinanden og sammenlignes.

Placering når et datasæt i flere former, og de er langt fra lige brugbare.

  • Koordinater, som regel bredde og længde fra en GPS-modtager eller en geokoder, giver et punkt, som software kan regne direkte med.
  • Geometrier beskriver linjer og flader foruden punkter: et kabeltracé, udbredelsen af en oversvømmelse, et forsyningsområde. Simple Features-modellen fra Open Geospatial Consortium (OGC), også udgivet som ISO 19125, definerer de figurer, som de fleste databaser og filformater deler.
  • Adresser og stednavne bærer placering for mennesker, men de skal geokodes, altså omsættes til koordinater, før noget kan måles, og hver geokoder rammer med sin egen præcision.
  • Områdekoder som postnumre, kommunenumre eller id’er for gitterceller fortæller, hvilket område noget ligger i, men ikke hvor i området.

Under det hele ligger en række åbne standarder, der lader geospatiale data flytte mellem systemer uden at miste deres betydning. OGC udgiver specifikationerne for geometri, for filer som GeoPackage og for webtjenester som OGC API – Features. EPSG-registret giver hvert koordinatsystem en talkode, så 4326 betyder bredde og længde på WGS 84, hvor koden end optræder. PROJ, et open source-bibliotek, omregner koordinater fra ét af de systemer til et andet og understøtter mere end hundrede kortprojektioner.

Hvorfor det betyder noget

Placering er en joinnøgle, som næsten alle datasæt allerede har. Måleraflæsninger, vejrobservationer, kunderegistre og netkomponenter deler sjældent et id, men hver af dem skete et sted. En geospatial join parrer rækker efter, hvordan deres placeringer forholder sig til hinanden, den ene inde i den anden, inden for en given afstand eller krydsende, i stedet for efter ens værdier. Den forbinder data, som en fremmednøgle aldrig har bundet sammen, og det er ofte den første grund til, at en organisation begynder at behandle sine data som geospatiale: spørgsmålet går på tværs af datasæt, der kun mødes på kortet.

Den anden grund er, at placering ændrer, hvad et gennemsnit betyder. Et landstal for forbrug eller afbrydelser kan skjule ét område, der er ved sin grænse, mens resten har luft, og den beslutning, der tæller, handler om netop det område: hvor nettet skal forstærkes, hvor der skal investeres, og hvor en montør skal sendes hen. At gruppere efter område eller afstand viser den spredning, som en samlet total skjuler.

Placering vejer også tungere end selve analysen. Et kort spor af GPS-punkter fra én telefon viser som regel, hvor ejeren sover og arbejder, så placeringsdata om mennesker fortjener samme omhu som andre personoplysninger. I praksis betyder det at indsamle dem med den præcision, formålet kræver, at gøre dem grovere, før de deles, og at slette dem, når formålet er opfyldt.

Sådan ser det ud i praksis

Smart-målere spredt over flere regioner leverede dataene bag over 500 analyserapporter skrevet i ren SQL på PostgreSQL og BigQuery. Aflæsningerne havde geolokationskoordinater for hver måler, så scriptene kunne bruge geospatiale joins sammen med CTE’er og window functions til at finde regionale tendenser og anomalier. Hver rapport fulgtes af sin annoterede SQL, så kolleger kunne genskabe og efterprøve den, og de almindelige datakvalitetsproblemer blev skrevet ned med en anbefalet håndtering af hvert enkelt. Rapporterne endte med at understøtte regional load balancing og bidrog til en forbedring af driftsplanlægningens effektivitet på 10–15 %.

Elleve eldistributionsoperatører havde driftsdataene, men kun lidt geospatial analyse at basere deres beslutninger om forstærkning og investering på. Deres driftsdata blev bragt sammen med geospatial modellering, så hvert net kunne ses på kortet og stilles konkrete spørgsmål: hvilke strækninger var på vej mod deres grænser, og hvilke områder retfærdiggjorde investering først. Analysen blev tilpasset den måde, hver operatør faktisk drev sit net på, i stedet for at blive udleveret som én fælles skabelon.

Geospatiale data skal også forblive hurtige, når mængden vokser. I en PostgreSQL-applikation, hvor databaseforespørgsler på geospatiale data var blevet langsomme sammen med tidsserierne for elforbrug, blev der oprettet GiST-indeks til de geospatiale data, og de geografiske data blev hash-partitioneret. Bagefter kørte geospatiale opslag på millisekunder.

Hvor det går galt

Ukendte placeringer hober sig op på nul grader bredde og nul grader længde. Et kort over kunder eller enheder viser en tæt klynge i Guineabugten, hvor ækvator krydser nulmeridianen, og regionale totaler medregner poster fra et sted, hvor ingen kunde kan bo. En enhed uden GPS-fix, eller en import, der ramte en tom celle, skrev nuller i stedet for at lade placeringen stå åben. Gem en ukendt placering som NULL, tilføj en constraint, der afviser præcis parret 0, 0, et punkt i åbent hav, og tæl de manglende placeringer i hver batch, så hver rapport oplyser, hvor mange poster der stod uden placering.

Joins på koordinater rammer kun en håndfuld rækker. To datasæt beskriver de samme transformerstationer, men en join på ens bredde og længde parrer kun få af dem. Hver kilde målte eller afrundede sine koordinater på sin egen måde, og koordinater er kommatal, så to positioner med få centimeters afstand er simpelthen forskellige værdier. Join i stedet på afstand, med en tolerance valgt ud fra kildernes nøjagtighed, gennem et prædikat, som det rumlige indeks kan betjene. I PostGIS, med geography-kolonner målt i meter:

SELECT a.substation_id, b.asset_ref
FROM survey AS a
JOIN register AS b
  ON ST_DWithin(a.location, b.location, 15);

Gennemgå derefter de rækker, der fik mere end én partner, for en tolerance, der er bred nok til at opsuge målefejl, kan også bygge bro mellem to nabokomponenter.

Punkter midt i postnummeret går for at være præcise positioner. En afstandsanalyse melder om snesevis af kunder, der bor på nøjagtig samme sted, eller et heatmap viser skarpe toppe midt i hvert postnummer. Adresserne blev kun geokodet ned til postnummeret, og hver kom tilbage som midtpunktet af sit område, uden at analysen opdagede det. Gem det niveau, hvert punkt blev bestemt på, som adresse, vej eller postnummer, i en kolonne ved siden af, og filtrér eller vægt efter det niveau, før der måles afstande, der er kortere end selve området.

Sidste års regionale totaler ændrer sig efter en grænseopdatering. En rapport, der køres igen på uændrede historiske data, giver andre tal pr. region end dem, der først blev offentliggjort. Punkterne blev joinet til det aktuelle grænselag, og siden er kommuner lagt sammen, postnumre delt eller et forsyningsområde tegnet om. Behold de rå koordinater frem for kun den region, de faldt i, gem grænselag med de datoer, de var gyldige, join hver post til den grænse, der gjaldt på dens tidsstempel, og skriv i hver rapport, hvilken grænseversion der lå bag tallene.

Læs mere

  • OGC Standards — Open Geospatial Consortiums katalog over åbne geospatiale standarder, hver med sine specifikationsdokumenter.
  • Simple Feature Access – Part 1 — den fælles geometrimodel med punkter, linjer og polygoner, som databaser og formater deler.
  • EPSG Geodetic Parameter Dataset — registret bag koder som 4326 og 3857, med den fulde definition af hvert referencesystem.
  • PROJ — open source-biblioteket, der omregner koordinater mellem referencesystemer, med kommandolinjeværktøjer og API.
  • OGC API – Features — OGC-standarden for at udgive og forespørge geospatiale features over HTTP.

Ordliste