Geospatial
om data vars betydelse beror på var de finns
Vad det är
Geospatial beskriver data, analyser och mjukvara där en position på jorden är en del av betydelsen. Ordet böjs som andra adjektiv, geospatialt och geospatiala, och i svensk text möter man ofta geodata för samma sorts uppgifter. En temperaturmätning är bara ett tal tills den knyts till platsen där den gjordes. En avläsning från en smart elmätare blir användbar för planering först när den kan placeras på en matarledning, inom ett distrikt eller nära en väderstation. Ordet följer med det som det beskriver: geospatiala data, en geospatial join, geospatial modellering.
Spatial är det vidare ordet. En kretslayout, en planritning av ett lager mätt i lokala meter och en maskinritning är alla spatiala, men deras koordinater betyder ingenting utanför ritningen. Geospatiala data är fästa vid planeten genom ett koordinatreferenssystem, så två dataset som aldrig utformades tillsammans kan ändå läggas ovanpå varandra och jämföras.
Platsen kommer in i ett dataset i flera former, och de är inte lika användbara.
- Koordinater, oftast latitud och longitud från en GPS-mottagare eller en geokodare, ger en punkt som mjukvara kan räkna med direkt.
- Geometrier beskriver linjer och ytor likaväl som punkter: en kabelsträckning, en översvämnings utbredning, ett serviceområde. Simple Features-modellen från Open Geospatial Consortium (OGC), som också är utgiven som ISO 19125, definierar de former som de flesta databaser och filformat delar.
- Adresser och ortnamn bär plats för människor, men de måste geokodas, alltså omvandlas till koordinater, innan något kan mätas, och varje geokodare löser upp dem med sin egen precision.
- Områdeskoder, som postnummer, kommunkoder eller id:n för rutor i ett rutnät, säger vilket område något ligger i utan att säga var i området.
Under allt detta ligger öppna standarder som låter geospatiala data flytta mellan system utan att tappa sin betydelse. OGC publicerar specifikationerna för geometri, för filer som GeoPackage och för webbtjänster som OGC API – Features. EPSG-registret ger varje koordinatreferenssystem en numerisk kod, så att 4326 betyder latitud och longitud på WGS 84 var koden än dyker upp. PROJ, ett bibliotek med öppen källkod, transformerar koordinater från ett av de systemen till ett annat och har stöd för mer än hundra kartprojektioner.
Varför det spelar roll
Platsen är en kopplingsnyckel som nästan varje dataset redan har. Mätaravläsningar, väderobservationer, kundregister och nätets anläggningar delar sällan en identifierare, men allt det har hänt någonstans. En geospatial join parar ihop rader efter hur deras positioner förhåller sig till varandra, en inuti en annan, inom ett visst avstånd eller korsande, i stället för efter lika värden. Den kopplar samman data som ingen främmande nyckel någonsin länkade. Det är ofta det första skälet till att en organisation börjar behandla sina data som geospatiala: frågan den vill ha besvarad spänner över dataset som bara möts på kartan.
Det andra skälet är att platsen ändrar vad ett medelvärde betyder. En nationell siffra för förbrukning eller avbrott kan dölja ett distrikt som ligger vid sin gräns medan resten har marginal kvar, och det beslut som räknas handlar om just det distriktet: var nätet ska förstärkas, var pengarna ska investeras, vart ett arbetslag ska skickas. Att gruppera efter område eller avstånd visar den spridning som en enda summa döljer.
Platsen väger också tungt utanför analysen. Ett kort spår av GPS-punkter från en enda telefon visar oftast var ägaren sover och arbetar, så platsdata om människor förtjänar samma omsorg som alla andra personuppgifter. I praktiken betyder det att samla in dem med den precision som ändamålet kräver, göra dem grövre innan de delas och radera dem när ändamålet har upphört.
Så ser det ut i praktiken
Smarta elmätare spridda över flera regioner producerade underlaget till över 500 analysrapporter skrivna i ren SQL i PostgreSQL och BigQuery. Avläsningarna kom med geografiska koordinater för varje mätare, vilket lät skripten använda geospatiala joins tillsammans med CTE:er och fönsterfunktioner för att hitta regionala trender och avvikelser. Varje rapport bar sin kommenterade SQL så att kollegor kunde reproducera den, och de vanliga datakvalitetsproblemen, bland dem saknade GPS-koordinater, dokumenterades med en rekommenderad rutin för vart och ett. Rapporterna kom sedan att stödja regional lastbalansering, och de bidrog till att den operativa planeringen effektiviserades med 10–15 %.
Elva elnätsbolag hade driftdata men lite geospatial analys att grunda sina beslut om förstärkning och investeringar på. Deras driftdata fördes samman med geospatial modellering, så att varje nät kunde studeras på kartan och man kunde fråga vilka ledningssträckor som var på väg mot sina gränser och vilka områden som motiverade investeringar först. Analysen anpassades efter hur varje bolag faktiskt drev sitt nät i stället för att delas ut som en och samma mall.
Geospatiala data måste också förbli snabba när de växer. I en PostgreSQL-applikation där databasfrågor mot platser hade blivit tröga i takt med tidsserierna för el lades GiST-index till för de geospatiala data, och de geografiska data hashpartitionerades för att fördela lasten jämnt mellan noderna. Geospatiala uppslag kördes sedan på millisekunder.
Var det går fel
Okända positioner samlas vid noll latitud och noll longitud. En karta över kunder eller enheter visar ett tätt kluster i Guineabukten, där ekvatorn korsar nollmeridianen, och regionala summor räknar med poster från en plats där ingen kund kan finnas. En enhet utan GPS-fix, eller en import som stötte på en tom cell, skrev nollor i stället för att lämna positionen tom. Lagra en okänd position som NULL, lägg till ett villkor som avvisar exakt paret 0, 0, en punkt i öppet hav, och räkna de saknade positionerna i varje omgång, så att varje rapport anger hur många poster den lämnade utan plats.
Joins på koordinater hittar nästan ingenting. Två dataset beskriver samma transformatorstationer, men en join på lika latitud och longitud matchar bara en handfull rader. Varje källa mätte eller avrundade sina koordinater på sitt sätt, och koordinater är flyttal, så två positioner några centimeter från varandra är helt enkelt olika värden. Koppla i stället efter avstånd, med en tolerans som väljs utifrån hur noggranna källorna är, genom ett predikat som det spatiala indexet kan betjäna. I PostGIS, med kolumner av typen geography mätta 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);
Granska sedan rader som matchade mer än en gång, eftersom en tolerans som är bred nog att svälja mätfel också kan överbrygga två närliggande anläggningar.
Punkter mitt i postnummerområden tas för exakta positioner. En avståndsanalys rapporterar dussintals kunder som bor på exakt samma punkt, eller en värmekarta visar skarpa toppar mitt i postnummerområden. Adresserna geokodades bara ned till postnumret, och var och en kom tillbaka som mittpunkten i sitt område utan att analysen märkte det. Registrera vilken nivå varje punkt löstes upp till, t.ex. adress, gata eller postnummer, i en kolumn bredvid punkten, och filtrera eller vikta efter den nivån innan du mäter något avstånd som är kortare än själva området.
Förra årets regionala summor ändras efter en gränsuppdatering. En rapport som körs om på oförändrade historiska data ger andra siffror per region än de som först publicerades. Punkterna kopplades till det aktuella lagret med gränser, och sedan dess har kommuner slagits samman, postnummer delats eller ett serviceområde ritats om. Behåll de råa koordinaterna och inte bara regionen de hamnade i, lagra gränslager med de datum då de gällde, koppla varje post till den gräns som gällde vid postens tidsstämpel och ange i varje rapport vilken version av gränserna som gav den.
Läs mer
- OGC Standards — Open Geospatial Consortiums katalog över öppna geospatiala standarder, var och en med sina specifikationsdokument.
- Simple Feature Access – Part 1 — den gemensamma geometrimodellen med punkter, linjer och polygoner som databaser och filformat delar.
- EPSG Geodetic Parameter Dataset — registret bakom koder som 4326 och 3857, med den fullständiga definitionen av varje referenssystem.
- PROJ — biblioteket med öppen källkod som transformerar koordinater mellan referenssystem, med sina kommandoradsverktyg och sitt API.
- OGC API – Features — OGC-standarden för att publicera och söka i geospatiala objekt över HTTP.