Hopp til innhold

Geospatial

data der betydningen avhenger av hvor de er

Hva det er

Geospatial beskriver data, analyser og programvare der en posisjon på jorden er en del av betydningen. En temperaturmåling er bare et tall til den knyttes til stedet der den ble tatt. En avlesning fra en smartmåler blir nyttig for planlegging først når den kan plasseres på en kurs, inne i et bydistrikt eller i nærheten av en værstasjon. Ordet er et adjektiv og følger det det beskriver: geospatiale data, en geospatial join, geospatial modellering.

Romlig er det videre ordet. Layouten på en databrikke, en plantegning av et lager målt i lokale meter og en maskintegning er alle romlige, og koordinatene deres betyr ingenting utenfor tegningen. Geospatiale data er festet til kloden gjennom et koordinatreferansesystem, så to datasett som aldri ble laget for hverandre, likevel kan legges over hverandre og sammenlignes.

Plassering kommer inn i et datasett i flere former, og de er ikke like nyttige.

  • Koordinater, som regel bredde- og lengdegrad fra en GPS-mottaker eller en geokoder, gir et punkt som programvare kan regne med direkte.
  • Geometrier beskriver linjer og flater i tillegg til punkter: en kabeltrasé, utbredelsen av en flom, et forsyningsområde. Simple Features-modellen fra Open Geospatial Consortium (OGC), også utgitt som ISO 19125, definerer formene de fleste databaser og filformater deler.
  • Adresser og stedsnavn bærer plassering for mennesker, men de må geokodes, altså gjøres om til koordinater, før noe kan måles, og hver geokoder løser dem opp med sin egen presisjon.
  • Områdekoder, som postnumre, kommunenumre eller identifikatorer for ruter i et rutenett, sier hvilket område noe ligger i, uten å si hvor inne i det.

Under det hele ligger et sett åpne standarder som lar geospatiale data flytte mellom systemer uten å miste betydningen sin. OGC gir ut spesifikasjonene for geometri, for filer som GeoPackage og for webtjenester som OGC API – Features. EPSG-registeret gir hvert koordinatreferansesystem en tallkode, så 4326 betyr bredde- og lengdegrad på WGS 84 uansett hvor koden dukker opp. PROJ, et bibliotek med åpen kildekode, transformerer koordinater fra ett av disse systemene til et annet og støtter mer enn hundre kartprojeksjoner.

Hvorfor det er viktig

Plassering er en koblingsnøkkel som nesten alle datasett allerede har. Måleravlesninger, værobservasjoner, kunderegistre og nettanlegg deler sjelden en identifikator, men hver av dem skjedde et sted. En geospatial join parer rader etter hvordan posisjonene deres forholder seg til hverandre, den ene inne i den andre, innenfor en gitt avstand eller på kryss av hverandre, i stedet for etter like verdier. Den kobler sammen data som ingen fremmednøkkel noen gang har bundet sammen, og det er ofte den første grunnen til at en virksomhet begynner å behandle dataene sine som geospatiale: spørsmålet den vil ha svar på, spenner over datasett som bare møtes på kartet.

Den andre grunnen er at plassering endrer hva et gjennomsnitt betyr. Et nasjonalt tall for forbruk eller for strømbrudd kan skjule ett distrikt som er ved grensen sin, mens resten har god margin, og beslutningen som teller, hvor nettet skal forsterkes, hvor pengene skal inn, hvor et mannskap skal sendes, handler om nettopp det distriktet. Å gruppere etter område eller etter avstand viser spredningen som én enkelt sum skjuler.

Plassering veier også tungt utenfor analysen. Et kort spor av GPS-punkter fra én telefon viser som regel hvor eieren sover og arbeider, så posisjonsdata om mennesker fortjener samme omtanke som andre personopplysninger. I praksis betyr det å samle dem inn med den presisjonen formålet trenger, gjøre dem grovere før de deles, og ikke beholde dem lenger enn formålet varer.

Slik ser det ut i praksis

Smartmålere spredt over flere regioner sto for dataene bak mer enn 500 analyserapporter skrevet i ren SQL på PostgreSQL og BigQuery. Avlesningene kom med geolokasjonskoordinater for hver måler, og det lot skriptene bruke geospatiale joins sammen med CTE-er og vindusfunksjoner for å finne regionale trender og avvik. Hver rapport hadde med seg kommentert SQL, slik at kolleger kunne reprodusere den, og de vanlige datakvalitetsproblemene, manglende GPS-koordinater blant dem, ble skrevet ned med en anbefalt måte å håndtere hvert av dem på. Rapportene ble siden brukt i regional lastbalansering og bidro til en forbedring på 10–15 % i effektiviteten i den operative planleggingen.

Elleve nettselskaper hadde driftsdataene, men lite geospatial analyse å bygge beslutningene om forsterkning og investering på. Driftsdataene deres ble koblet sammen med geospatial modellering, slik at hvert nett kunne betraktes på kartet og stilles spørsmålet om hvilke strekninger som var på vei mot grensene sine, og hvilke områder som fortjente investeringer først. Analysen ble tilpasset hvordan hvert nettselskap faktisk drev nettet sitt, i stedet for å bli delt ut som én mal.

Geospatiale data må også holde seg raske etter hvert som de vokser. I en PostgreSQL-applikasjon der spørringer mot plassering hadde blitt trege sammen med tidsseriene for strøm, ble GiST-indekser lagt til for de geospatiale dataene, og de geografiske dataene ble hash-partisjonert for å fordele lasten jevnt mellom nodene. Etterpå gikk geospatiale oppslag på millisekunder.

Hvor det går galt

Kartet får en tett klynge på null bredde og null lengde. Et kart over kunder eller enheter viser en tett samling i Guineabukta, der ekvator krysser nullmeridianen, og de regionale summene tar med poster fra et sted ingen kunde kan befinne seg. En enhet uten GPS-posisjon, eller en import som traff en tom celle, skrev nuller i stedet for å la posisjonen stå tom. Lagre en ukjent posisjon som NULL, legg til en begrensning som avviser nøyaktig paret 0, 0, et punkt ute på åpent hav, og tell de manglende posisjonene i hver bolk, slik at hver rapport oppgir hvor mange poster den lot stå uplassert.

Joins på koordinater gir bare en håndfull treff. To datasett beskriver de samme transformatorstasjonene, men en join på lik bredde- og lengdegrad treffer bare noen få rader. Hver kilde målte eller rundet av koordinatene sine på sin måte, og koordinater er flyttall, så to posisjoner som ligger noen centimeter fra hverandre, er rett og slett ulike verdier. Koble heller på avstand, med en toleranse valgt ut fra hvor nøyaktige kildene er, gjennom et predikat som den romlige indeksen 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);

Gå deretter gjennom rader som traff mer enn én gang, for en toleranse som er vid nok til å svelge målefeil, kan også bygge bro mellom to naboanlegg.

Punkter midt i postnummerområder går for å være nøyaktige posisjoner. En avstandsanalyse melder at dusinvis av kunder bor på nøyaktig samme sted, eller et varmekart viser skarpe topper midt i postnummerområdene. Adressene ble bare geokodet ned til postnummeret, og hver av dem kom tilbake som midtpunktet i området sitt uten at analysen merket det. Registrer nivået hvert punkt ble løst opp til, for eksempel adresse, gate eller postnummer, i en kolonne ved siden av det, og filtrer eller vekt etter det nivået før du måler en avstand som er kortere enn selve området.

Fjorårets regionale summer endrer seg etter en grenseendring. En rapport som kjøres på nytt på uendrede historiske data, gir andre tall per region enn de som først ble publisert. Punktene ble koblet mot det gjeldende laget med grenser, og siden den gang har kommuner slått seg sammen, postnumre blitt delt eller et forsyningsområde blitt tegnet om. Behold de rå koordinatene og ikke bare regionen de havnet i, lagre grenselagene med datoene de var gyldige, koble hver post mot den grensen som gjaldt på tidspunktet i posten, og noter i hver rapport hvilken grenseversjon den bygger på.

Les mer

  • OGC Standards — katalogen over åpne geospatiale standarder fra Open Geospatial Consortium, hver med sine spesifikasjonsdokumenter.
  • Simple Feature Access – Part 1 — den felles geometrimodellen med punkter, linjer og polygoner som databaser og formater deler.
  • EPSG Geodetic Parameter Dataset — registeret bak koder som 4326 og 3857, med den fullstendige definisjonen av hvert referansesystem.
  • PROJ — biblioteket med åpen kildekode som transformerer koordinater mellom referansesystemer, med kommandolinjeverktøy og API.
  • OGC API – Features — OGC-standarden for å publisere og spørre etter geospatiale objekter over HTTP.

Ordliste