Karl Ove Hufthammer

Generering av områdekart basert på punktobservasjonar

27. januar 2012 (oppdatert 12. august 2021)

Av og til har ein behov for å laga kart som viser korleis eit geografisk område er delt inn, basert på observasjonar i området. Denne artikkelen viset eit eksempel på korleis me lett kan gjera dette automatisk, ved av hjelp av frie verktøy.

Me skal prøva å laga eit postnummerkart, altså eit kart som viser korleis landet er delt inn i postnummersoner. Overraskande nok er ikkje dette offentlig tilgjengelig informasjon! Heldigvis har ein gjeng, med Erik Bolstad i spissen, på dugnad laga ei oversikt over midtpunktet til kvart postnummer. Denne er tilgjengelig under ein Creative Commons Navngivelse 3.0 Unported-lisens.

Me startar med å lasta ned CSV-versjonen av postnummeroversikta. Det kan òg vera greitt å bruka eit norgeskart som utgangspunkt for kartet vårt, for å hindra at me får postnummersoner som går langt til havs. Her kan me lasta ned eit gratiskart frå Statens kartverk, på litt strengare vilkår (Navngivelse-DelPåSammeVilkår 3.0 Norge). Sluttresultatet vert altså tilgjengelig under denne lisensen. Last ned shapefile-versjonen av fylkeskartet.

Til slutt treng me programpakka R, som kan brukast til det meste. For å redigera og kjøra R-skript anbefaler eg å bruka RStudio.

Så er det berre å setta i gang. Me plasserer CSV-fila med postnummer i ei mappe, og pakkar ut kartfila same plass. Litt enkel R-kode hentar inn og gjer klar dei to datakjeldene:

For å «gjetta» oss fram til korleis kvar postnummersone ser ut, lagar me ei Voronoi-tesselering. Wikipedia har ei veldig fin forklaring på kva dette er, men kort sagt går det ut på at me for kvar postnummerposisjon generer ei postnummersone som består av alle geografiske punkta som er nærare denne posisjonen enn dei er nokon av dei andre postnummerposisjonane. Ut av dette får me ei postnummer-tesselering (flisinndeling) som dekker heile landet.

Dette ser jo greitt ut, men det kan vera fint med litt fargar òg. Som kjent finst det eit matematisk teorem som seier at alle kart kan fargeleggast med maks fire fargar slik at ingen naboland har same farge. Nokre kart kan vera fryktelig vanskelige (men mulig!) å farga med fire fargar, så me nøyer oss med ein enklare og kjapp algoritme, som likevel brukar få fargar. Det finst postnummersoner med både 12 og 13 nabosoner, men denne algoritmen klarar å fargelegga kartet med berre seks (nesten fem!) fargar.

Så enkelt var det å laga eit postnummerkart! Og når me først har dataa, kan me eksperimentera litt. Kva med eit kart over første to siffer i postnummera?

Samanlikn gjerne dette med Posten Norge sitt kart (legg for øvrig merke til den ikkje heilt optimale fargelegginga der). Og hugs at vårt kart er basert på automatisk inndeling i postnummersoner, utan tilgang til dei faktiske grensene.

Me kan òg laga eit kart over berre første siffer i postnummera.

Det ser litt ut som Norge etter mulige framtidige fylkessamanslÃ¥ingar! ☺

Til slutt: Korleis kunne postnummerkartet gjerast betre? Jo, viss me hadde fleire posisjonar frå kvar postnummersone, kunne me fått mykje meir nøyaktige sonegrenser. Hugs at i vårt kart er kvar sone basert på berre éin posisjon (pluss indirekte informasjon frå nabopostnummer)!

Oppgåva til lesaren som vil øva seg litt på handtering av slike geografiske data: Last ned heile programmet ovanfor. Test korleis fleire observasjonar innanfor kvar sone påverkar kor nøyaktig sluttkartet vert. Som utgangspunkt kan du prøva å generera eit fylkeskart berre basert på tilfeldige posisjonar i ulike fylke. Bruk funksjonen spsample() til å plukka nokre posisisjonar frå kartobjektet fylke. (Dette er i prinsippet omtrent det same som å ringa til ein haug tilfeldige personar i Norge og be dei oppgje geografisk posisisjon og fylke.) Kjør så ei tesselering. Kvar observasjon vert òg her til éi sone. Slå saman soner i same fylke ved å bruka unionSpatialPolygons()-funksjonen. Samanlikn til slutt grafisk dei automatisk genererte fylkesgrensene med «fasiten» i fylke-objektet.

Kjelder:
Postnummerliste: www.erikbolstad.no/postnummer/
Kartgrunnlag: Statens kartverk (cc-by-sa-3.0)

Emne: Geodata, Matematikk og statistikk, Programvare

[Abonner på kommentarar til artikkelen]

Kommentarar

Legg kommentar til Gunnar Birkeland





Du kan bruka dei vanlegaste elementa og attributta i HTML. Avsnitt lagar du med vanlege linjeskift. Eg kan komma til å gjera typografiske og ortografiske endringar i innlegg (men vil aldri endra sjølve innhaldet), samt fjerna upassande innlegg.

Skriven av Karl Ove Hufthammer og driven med WordPress. Du kan abonnera på innleggs-RSS eller kommentar-RSS.