2007-03-19

03:34 Frigör datan! Postnummertrivia

Man kan köpa postnummer från Postnummerservice Norden AB, till usla köpvillkor, för 2 500 kr plus moms och fakturaavgift. Det tycker jag verkar innovationshämmande och allmänt skitdumt. Eller 4kkr/år för kvartalsvis uppdateringar, 9kkr/år för månadsvisa och 18kkr/år för veckovisa. Precis lika vansinnigt och dumt. Idag är det inte primärt företag med budget som gör bra IT-verktyg, utan (o)vanliga lekmän som jag, som får en fix idé och lägger en halvdag på att göra någon riktigt bra webtjänst som betjänar allmänheten på något vis. Just postnummer och informationen kring dem (vilket geografiskt område de avser och vad det sorterar under för andra geografiska eller politiska områden) tycker jag borde vara allmän egendom, tillgänglig för vem som helst, och publicerad centralt. (Då är det helt okej att det finns företag som kränger bonustjänster ovanpå, som att rätta kundregister och så där.)

Särskilt som flertalet av dessa postnummer (eller de intressanta; vilka svarspostnummer som finns vilket år ger nog de flesta som inte behöver dela ut post egentligen katten i) torde vara instiftade för svenska skattepengar, och därigenom borde vara svenska allmänhetens egendom, betalad för och klar. Så fungerar det med data som producerats av amerikanska myndigheter; de faller samtliga i public domain, när myndigheten själv har copyright på datat. Det är en av det fåtal lagar USA fått till helt rätt, och det har gett en explosiv tillväxt av riktigt bra husnära tjänster och det landets IT-utveckling i allmänhet. Du kan ange din zip code (som de heter där) och få en massa info om väder och vind, pollenprognoser, hitta folk som vill bli hittade och bor i närheten av dig, och mycket, mycket annat smått och gott av samma slag som innovativa småpysslare, företag och andra hittat på, just för att det är enkelt för dem att bygga det, på data med marginalkostnaden noll.

Sammalunda är allt USGS' material (U.S. Geological Survey -- Federal source for science about the Earth, its natural and living resources, natural hazards, and the environment) av samma anledning gratis, till skillnad från vårt lantmäteris kartor och dylikt, som först betalats av skattepengar i produktionsledet, och sedan säljs igen till privatpersoner och företag för hutlösa pengar som långt ifrån bara täcker tryck- och distributionskostnader (som dessutom är nära noll på nätet). Vi har en tratidion av dubbelbeskattning i det här landet, och en dito tradition av att undervärdera samhällsnyttan av lättillgänglig gratis innovation, och att dumsnålt sälja grisen många gånger om till den promille potentiella köpare som har djupa fickor.

SMHI producerar väderstatistik och -prognoser enligt samma princip, och drar in pengar flera gånger om för allt de gör, med statens kapital i ryggen. Sen sitter de på sina enorma mängder högkvalitativa data, som en minimal klick företag betalar dyrt för och gör någonting lagom kreativt med (publicerar i sina tidningar eller på sina kommersiella webportaler, kanske). Jag har en ljuvlig kontrast att bjuda på, som började som en digital termometer kopplad till en dator i Ryd, och under kärleksfull översyn av sin upphovsman växte till en landsomspännande vy över utomhustemperaturen just nu: www.temperatur.nu. Det kostar inte folk någonting att surfa omkring i datamängderna, jämföra olika platser mot varann, eller rentav bygga egna vyer över datan, som jag gjorde här, för en tid sedan -- och vill man bli en mätstation själv, tillhandahåller Erik Freiholtz som driver tjänsten byggsatser och färdiga kit för att bli med. Erik har lagt ned i storleksordningen 1000 hobbytimmar på alltsammans. Och tjänsten är mycket flitigt använd. Temperatur intresserar. (SMHI själva står för övrigt tydligen för mätbara delar av webtjänstens trafik, även om man får förmoda att de inte använder själva datamaterialet, som de inte har någon möjlighet till kvalitetsbedömning av, till skillnad från sina egna väderstationer. Det är väl vädermänniskor som vill veta hur varmt det är, och har upptäckt att det är smidigt att gå rakt på informationen utan byråkratisk inblandning, kan jag tro.)

I förra veckan läste jag att det blossat upp tillräcklig opinion mot förslaget att statliga myndigheter ska få avlyssna all nättrafik som råkar passera en landsgräns, under förespegling av vad de själva bedömer som ett "hot". Jag kan med lätthet föreställa mig vad en Sverigedemokratregering finner hotfullt, eller en vänsterregering under Lars Ohly, till exempel. En demokrati måste inrätta lagar som är idiotsäkrade, så den rådande regimen inte har alltför fria händer att ta sig vilka friheter de vill på bekostnad av ditt och mitt privatliv, och nu är det med litet tur plötsligt dåligt politiskt klimat för att rösta genom det här förslaget. Reinfeldt verkar dock väldigt sugen på det likafullt, så än kanske man inte ska blåsa faran över. I vilket fall, noterade jag att namninsamlingen som startats mot den snart är uppe i 4000 röster. Och som folk ombeds skriva namn och postort, blev jag sugen på en vy över vilka delar av landet som bryr sig om att engagera sig mot förslaget. Det borde räcka med litet enkelt sifferdribblande för att pussla ihop en fin graf över det.

Så jag karvade hem datasetet, och gjorde en liten snabbvy över det. Det visar sig genast att läsförståelse är ganska svårt; 3-4% skriver sitt postnummer i fältet rubricerat "postort". Det ÄR svårt med instruktioner, teknik och så. Folks uppmärksamhet räcker helt enkelt inte till för att läsa instruktioner särskilt noga, och ber någon om en uppgift de inte väntar sig tillfrågas om, anger de i vilket fall ofta vad de själva trodde efterfrågades, utan att tänka närmare efter. Jag beter mig likadant ibland, och det är förstås en brist i formuläret att inte hjälpa till att göra rätt mer än det gör. Nå, som postnummer rentav är ännu mer precisa angivelser än postort, borde det vara lätt att Konvertera till den lägre precisionen, och få ett mindre bortfall ur datamängden än med alla icke-postorter strukna. Om det nu varit lätt att få en tabell som förvandlar postnummer till postorter. Men de kostar tusentals kronor, och SÅ intresserad av att rädda dessa 3-4% av datapunkterna är jag faktiskt inte.

Fast litet intresserad var jag, och borde man inte kunna underhålla ett fritt alternativ till det hutlöst dyra du-får-inte-använda-datat-hur-du-vill som Postnummerservice säljer? Lägga det på Wikipedia, eller så, och låta vem som vill korrigera och uppdatera med förändringar i framtiden. Jag surfade omkring litet på Postens websidor, och hittade ett sökformulär där man kunde slå upp ett postnummer och få se vilken postort det hörde till, och litet om vilka gator och gatunummerintervall de motsvarade. Med litet pyssel mot den, hade jag till slut en egen postnummertabell. Alltså: Johan har hela listan! (Webapplikationsbyggare kan tänkas finna den här varianten användbarare.) Med god hjälp av Fredrik, förädlade jag sen fram en version med någorlunda vettig versalisering (GATUNAMN OCH POSTORTER I VERSALER ÄR FULA OCH LUKTAR 1900-TAL, JURIDISKA ELLER BÅDADERA!), och samtlig information om gatunamn, adresser och så vidare (6M). Här följer litet slumpmässiga trivianedslag från materialet:

I regel ligger lägre postnummer längre söderut i landet än högre postnummer. Undantaget Stockholm, som är lägre än de lägsta, med nummerserien 1xxxx.

Man kommer inte mycket lägre över huvud taget än Kungliga Tekniska Högskolan (10044), men Riksdagen lyckas faktiskt (10012).

Spejarvägen, Saltsjöbaden, har postnummer 13337.

Det finns ingen Snabelgatan i hela Sverige, men väl en Elefantgränd (62157) i Visby.

Postnummerligatoppen: Stockholm har 1028 postnummer, Göteborg 670, Malmö 542, Borås 242, Uppsala 235, Helsingborg 212, Sundsvall 209, Umeå 188, Linköping 168, Örebro 153.

Det finns 482 postorter som bara har ett postnummer, 125 som bara har två, 71 som har tre, 39 fyra och 26 fem.

Av någon anledning har en sporthall på Kärrtorpsvägen 5 i Johanneshov (12155) listats inte mindre än elva gånger i Postens översikt över postnumrets ingående delområden.

I Morgongåva (74451) finns det en gata som heter Tjusarvägen.

Svenska vägar (med mera smått och gott) som har romerska ordningstal i sig är uppkallade efter någon av:

Erik XIII
Gustav III
Johan III
Karl IX
Karl XI
Carl XI
Karl XII
Kristian II
Christian II
Kristian III
Christian IV
Kristian IV
Oskar II

Slutligen, en nykläckt tungvrickare från Pajala (98499), med lätt finsk brytning: Kaan de' vaara Kaarnevaarakarnevalkaravanen?

10 kommentar:

Blogger Unknown skrev...

Tackar för postnummer listan!

Jag satt just och irriterade mig på att de vill ha betalt för en tjänst som borde vara gratis, och funderade på att skriva en snutt i Java för att slå upp alla nummer via Postens hemsida, men tänkte att någon måste ha gjort det före mig :)

27 maj, 2007 20:32  
Anonymous Anonym skrev...

Bra att någon tänker där ute.

mer programmerings jobb.
Kan ni inte skriva en lista som visar postnummer geografiskt med 3 ställig kod. typ 126. Posten har en geografisk karta som är värdelös 2 ställig kod men det hjälper ju inte om man vill se var gränserna går mellan ex. 126xx och 129xx postnummer.
Kanon om någon är duktig att skiva sånt. kartan finns på postens sida för 2 ställig kod men man måste ha förstoringsglas för att läsa den.

eller vet någon var man får tag i en, har letat på posten, lantmäteriet, kartor sajter m.m..
hälsn. jaana

10 februari, 2008 21:38  
Blogger Johan Sundström skrev...

Det där var en annan bra idé. Det fattas dock en viktig komponent för att jag själv ska kunna skriva det, och det är vektordata över varje postnummers geografiska utsträckning -- kort och gott hur en polygon som täcker in ett helt postnummerområde ser ut (geografiska koordinater för dess hörn). Skulle posten, eller någon annan, publicera den informationen, vore det en smal sak att bygga den där kartan, med en till och med fem siffrors noggrannhet.

Vad som däremot går, redan nu, är att göra något som ger ett litet hum om ungefär hur det torde se ut, genom att plotta en prick som (med rätt stor sannolikhet) befinner sig i varje postnummerområde i, säg, 126xx -- vilket ger en ungefärlig bild av vad 126xx kan tänkas täcka in -- men som inte kan svara säkert på om en given punkt på kartan hör till zonen eller inte.

Fast det är tämligen troligt att upplösningen för de där prickarna inte blir mycket större än att var och en hamnar i rätt stad, för jag känner inte till någon fri geocoder som gör ett bättre jobb än så. Det är dock väldigt troligt att såväl posten som lantmäteriet har datan, likaså att du behöver prata med dem själv för att erbjudas köpa den (de har nog usel marknadsföring av den) och att det är drakoniska såväl priser som licensavtal på den.

10 februari, 2008 23:17  
Blogger Unknown skrev...

Skulle så gärna vilja ha en sådan karta!
Annars får man väl manuellt se till att organisera en snubbe från varje postkontor som kan det där med vilka postnummer som ligger var. Själv är jag hyfsad på 115, men det skulle ju ta en himla tid...

29 februari, 2008 10:44  
Anonymous Anonym skrev...

är de dessa former som du letar efter
http://www.scb.se/templates/Standard____75518.asp
de gratis filer som finns i ArcView shape-format.
ser fram emot postnummer med geografisk mittpunkt i longitud och lattitud.

01 juli, 2008 16:20  
Anonymous Anonym skrev...

Du råkar inte ha kvar ditt lilla pysselskript? Jag är på jakt efter en färsk postnummertabell nämligen...

28 september, 2009 18:34  
Anonymous Anonym skrev...

Hittade en, så ansträng dig inte för min skull.. Men du ska ha tack för att du på något abstrakt vis ledde mig till målet ;)

28 september, 2009 19:57  
Anonymous Mikael Grön skrev...

Postnummers geografiska position kan man idag få med t.ex. denna kod:

18 december, 2012 00:05  
Anonymous Mikael Grön skrev...

och så koden (som inte hänger med när det finns phptaggar runt):

$resultat = json_decode( file_get_contents( "http://maps.google.se/maps/api/geocode/json";
$request_url = $base_url . "?address=[postnummer]&sensor=false&region=se" ) );

18 december, 2012 00:06  
Anonymous Mikael Grön skrev...

Haha, copypaste-bugg.. Många kommentarer blir det! :)

$postnummer = '53238'; // till exempel
$resultat = json_decode( file_get_contents( "http://maps.google.se/maps/api/geocode/json?address=$postnummer&sensor=false&region=se" ) );
$position = $resultat->results[0]->geometry->location;
echo "Latitud: {$position->lat}
Longitud: {$position->lng}
";


18 december, 2012 00:11  

Skicka en kommentar

Bloggtoppen.se