Behöver du ett nytt adresseringssystem? Kanske inte så stort behov för oss i Sverige, men det finns platser där ett etablerat system för adresser saknas. Hur gör man då?
Man skulle kunna kika på what-three-words, men detta är i mitt tycke endast en gimmick och ett tragiskt inlåst sätt att försöka tjäna pengar. W3W är en produkt, som aggressivt bevakas av företaget bakom. Vill man använda en motsvarande tjänst, utan att bekymra sig om licenser och användningsrättigheter, så får man hitta ett annat sätt.
Open Locator Code är Open Source med Apache 2.0 licens! Hela källkoden för användning finns på GitHub (https://github.com/google/open-location-code) och kan implementeras i valfri applikation utan att man behöver vara speciellt orolig för att advokaterna skall knacka på dörren inom kort.
Koden är baserad på koordinater i longitud och latitud. Den kod som genereras kallas för ”plusskod”, eftersom man använder ett ”+” tecken i koden för att kunna förenkla och förkorta koden på ett tydligt sätt.
De första fyra tecknen i koden beskriver en ruta på 1 x 1 grad. Därefter fyller man på med teckenpar (två tecken) som för varje steg bryter ner rutan i 1/20 delar (längdskala). Vilket gör de resulterande rutorna en 400-del av föregående ruta.
AAAA BB CC
Om AAAA är 1 grad, så är BB därmed 3 minuter och CC blir en ruta på 9 sekunder. Detta motsvarar en ruta på 278 meter, vid ekvatorn. Efter det åttonde tecknet så infogar man ett ”+” och sedan fortsätter man med ytterligare ett kodpar.
AAAA BB CC + DD
DD beskriver då en ruta på ca 14 meter, vilket i de allra flesta fallen räcker för att ange en adress. Det går att dela denna ruta ytterligare om det skulle behövas, men det görs på ett annat sätt.
AAAA BB CC + DD E
Den sista indelningen är ett enda kodtecken och beskriver en position i ett 4 x 5 rutnät i den sista rutan. Denna nedbrytning ger en ruta på runt 3,5 x 2,8 meter.
Systemet kan användas i sin helhet för att ange en position var som helst på jorden, men genom att använda ”+” så kan man tydligt förkorta koden så att den blir lättare att förstå för oss användare. Exempelvis så kan man utgå från en tätort, där adressen hör hemma. Beroende på om tätorten ryms i en stor eller liten ruta (exelvis helt inom AAAA BB) så kan man reducera mängden kodsiffror.
Jönköping Q5M5+VR
Koden ovan beskriver resecentrum i Jönköping, och kan beskriva hur man kan tillämpa plus-koder som adresser.
Exemplet ovan anger att adressen finns i Jönköping. Det går även att utläsa att adressen finns i området ”8F”.
På GitHub sidan finns det exempelvis ett pythonbibliotek som enkelt kan sparas i QGIS Pythonkatalog (.local/share/QGIS/QGIS3/profiles/default/python) och sedan vara tillgänglig direkt från pythonkonsolen, eller i skript och uttryck.
>>import openlocationcode as olc >>olc.encode(57.66721,14.97169) '9F9PMX8C+VM' >>olc.encode(57.66721,14.97169,11) '9F9PMX8C+VMP' >>olc.decode('9F9PMX8C+VM').latitudeCenter 57.6671875 >>olc.decode('9F9PMX8C+VM').longitudeCenter 14.971687499999987 >>olc.shorten('9F9PMX8C+VM', 57.6, 14.9) 'MX8C+VM' >>olc.recoverNearest('MX8C+VM', 57.6, 14.9) '9F9PMX8C+VM'
Det finns ett antal funktioner i biblioteket för att omvandla till och från plus-koder. I koden ovan har jag använt kyrkan i Eksjö som exempel för dessa kommandon. En förkortad plus-kod skulle kunna bli:
Eksjö MX8C+VM
Det är inte så svårt att generera plus-koder för ett vektorlager med detta som utgångspunkt.
from qgis.core import * from qgis.gui import * @qgsfunction(args='auto', group='Custom') def olc(decLat, decLong, feature, parent): """ Calculates the Open Location Code. <h2>Example usage:</h2> <ul> <li>olc(57.667, 14.972) -> 9F9PMX8C+VM</li> </ul> """ import openlocationcode as olc return olc.encode(decLat, decLong)
Detta kan sedan användas för att fylla en kolumn i en tabell med värden.
Beroende på hur många punkter man har så kan det ta lite olika lång tid att färdigställa…
Funktionen kan även användas för att skapa och skriva ut etiketter med mera.
Här har jag använt en annan funktion som tar samma indata som tidigare, men försöker skapa en förkortad adress utifrån ett avrundat värde för longitud och latitud.
Slutsatser
Det är väldigt användbart att det finns ett globalt system som kan användas för att ange adresser, där sådana saknas. Vägar kan sakna namn, byggnader kan sakna nummer, exempelvis i ett flyktingläger eller ett slumområde. Man behöver dock en dator för att säkerställa att de adresser man har översätts korrekt. En adress som finns angiven på en karta, som i bilden ovan, är inte den enda plus-kod som finns för den fastighet som avses, så beroende på vilken punkt som används för att definiera adressens position så kan man få lite olika koder.
Det som talar för systemet jämfört med What3Words och liknande tjänster är att det är open source och fritt att använda. Det är baserat på vetenskaplighet och inte en gimmick. Det går att härleda en adress utifrån koden, i relation till andra koder, det vill säga i vilket område finns en adress.
Det är inga problem att generera ett rutnät med rutor i 9 x 9 sekunders storlek, och rita ut dessa på en karta, och därmed skapa en adresskarta för en tätort, men det tänker jag vänta med till i morgon.
Det här med positionsanknutna adresser måste vara ytterligare grundbultar som vårt nationella lantmäteri aldrig tagit tag i på allvar. Internationellt likaså. Trots skriande behov har adresser (mest betraktade som punkter) istället angivits efter i tid rådande administrativa, juridiska och politiska indelningar.
En till att börja med nationell standard där tillämpade adresstermer över tid översätts till gis-begrepp som vektorgrafiska punkt, linje och polygon samt, mycket viktigt, tidsstämplas (giltighetstiden) vore enormt värdefullt.
Geokodning av tidsstämplade adressbegrepp skulle eliminera problemen med att t ex gator byter namn, födelseförsamlingar förändras eller försvinner helt, namn med -torp och -gård sammanblandas, bebyggelser rivs, nationer skapas, socknar blir kommuner etc.
Om ingen gör någonting åt det här gör någon annan det – fast på deras sätt…