<http://osm.kodapan.se/postnummer>

Nu med Voronoi där regioner med angränsande punkter i samma postnummer slås 
ihop till en polygon. Det senare buggar lite och skapar exempelvis lite 
oväntade streck här och där.

OSM-filer att hälla in i JSOM för varje postnummerområde (varje postnummer kan 
alltså bestå av flera stycken områden) finns för Halmstad (som i princip bygger 
på noderna av  vägar som finns i ett enda postnummer) och Lund (där nästan 
varje hus i centrala delarna har ett nummer och skapar en känd punkt för ett 
postnummer) här:

<http://osm.kodapan.se/postnummer/lund.tar.gz>
<http://osm.kodapan.se/postnummer/halmstad.tar.gz>

Lade även upp ett par screenshots från JOSM om man inte orkar:

<http://osm.kodapan.se/postnummer/lund%20kommun.tiff>
<http://osm.kodapan.se/postnummer/lund.tiff>
<http://osm.kodapan.se/postnummer/lund%20centralt.tiff>

<http://osm.kodapan.se/postnummer/halmstad%20kommun.tiff>
<http://osm.kodapan.se/postnummer/halmstad.tiff>
<http://osm.kodapan.se/postnummer/halmstad%20centralt.tiff>

Det kräver fortfarande ytterligare några helgers arbete innan det här är klart.

Om någon känner sig manad att kolla hur bra det fungerar i ett område de känner 
till är det bara att säga till.


Applikationen äter ruskigt mycket minne och är ganska långsam om man inte 
cachar alla anrop till Posten, vilket man naturligtvis inte vill göra i det 
långa loppet.  Vill någon leka med java-projektet (som också är en soppa) är 
det bara att höra av sig.

Det kommer bli en baggis att extrahera postortsgränser från det här. Portorter 
är inte samma sak som SCBs småorter och tätorter, men jag tycker nog att en 
postortspolygon i många fall är mycket bättre än en enda nod som pekar ut 
centroiden av en ort.

Ett stort problem är att jag inte vet till vilken postort en given punkt hör. 
Jag måste söka upp de närmsta städerna och slå upp om gatan är unik för de 
närmsta städerna. Är det inte unikt (vilket det ofta inte är) kan jag inte 
använda mig av datan. Man kan förvisso efter ett par iterationen använda sig av 
de framgruvade postortspolygonerna till detta, men jag oroar mig för att detta 
kommer skapa för mycket feedback med grus i systemet. En lösning är att komma 
över en öppen karta som visar två- eller tresiffrors postnummer. Annars vet jag 
inte riktigt. Om någon har förslag är det mycket välkommet.


Slutmålet är som tidigare nämnt att skriva en öppen svensk geocoder som 
inter/extrapolerar fram husnummer (Posten listar alla nummer som finns), fixar 
med svenska regler för hur man kan tänkas skriva fel, etc . Detta ligger dock 
långt fram (flera år?) om det över huvud taget blir av. Det stora problemet är 
att gruva fram all saknad data... Det borde dock gå att få till när man 
kombinerar Postens data med OSM. Det krävs även en hel del arbete med att 
extrahera data från Postgis så det bildar en hierarkisk struktur. Nominatim gör 
det, men det är en soppa av olika språk och verktyg och jag lyckas inte tyda 
vad som händer. Om någon har tankar kring det kan jag ganska omgående skriva en 
geocoder fungerar kanon i Kalmar och Lund, men det känns relativt meningslöst 
att lägga tid på det nu.

Har också kommit fram till att om något av detta (postnummerpolygonerna, 
postortspolygoner, gissa position för husnummer, etc)  någonsin blir klart 
kommer jag nog sätta upp en ny Postgis med Overpass API som enbart innehåller 
dessa data så det blir lättare att rendera om allt från början lite då och då. 
Slipper folk som ritar in saker i noderna, osv. Dessutom blir det jag 
personligen och inte OSM som är data-martyren om någon (läs: Posten, PTS, etc) 
skulle bli väldigt arga. Kanadensiska posten blev ju väldigt upprörda.




                kalle


3 jan 2013 kl. 20:06 skrev Karl Wettin:

> Jag har sytt ihop en snurra som fixar postnummer via postens webtjänst 
> <http://www.posten.se/soktjanst/postnummersok/>.
> 
> Den kan redan nu lägga till och rätta postnummer på postadressrelaterade 
> saker, tycker ni jag skall släppa loss den för att göra det? Skall slänga upp 
> koden på github eller något sånt.
> 
> Jag hade dock tänkt mig att den skall skapa områdespolygoner vilket tyvärr 
> inte fungerar så bra ännu.
> 
> Först samlar den upp massa punkter den kan koppla till ett postnummer:
> 
> 1. Nodes och ways med [addr:street=*] och [addr:housenumber=*].
> 2. Ways med [highway=*] och [name=*] där  hela gatan befinner sig i samma 
> postnummer.
> 
> Saknas [addr:city] väljer den det på följande sätt:
> 
> 1. Hämtar alla [place={hamlet, village, town, city}] med [ref:se:scb=*].
> 2. Väljer ut de som har [name] som existerar som postort hos Posten.
> 3. Sorterar till avståndet från positionen till alla postorter.
> 4. Söker efter den första förekommande husnummer med rätt gatunamn bland 
> listan av möjliga postorter. (Bör nog göras om så den väljer bara om det 
> finns i en av postorterna)
> 
> För att skapa polygoner har jag testkört lite över Lund (centrala) och 
> Halmstad (kommunen).
> 
> Mitt första försök är att hälla alla punkter per postnummer i ett Graham scan 
> convex hull. Då blir det så här:
> 
> <http://osm.kodapan.se/tmp/lund.osm>
> <http://osm.kodapan.se/tmp/halmstad.osm>
> 
> Halmstads kommun får lite konstiga fel, ett par polygoner sträcker sig från 
> Falkenberg till Laholm, men generellt sett är det rätt bra inne i stan. Ett 
> par för mig kända brytningspunkter löser den riktigt bra. Lund kan jag 
> egentligen inte uttala mig så mycket om men det blir ett par postnummer som 
> ligger inbakat i ett annat. Det är ju fel. Men med lite manuellt pill så tror 
> jag det blir riktigt bra. Man ser klart och tydligt hur PTS tänkt. Man skulle 
> även ganska enkelt göra 2 och 3-sifferspostnummerpolygoner redan nu.
> 
> Har försökt lite med Voronoi men totalt misslyckats att få det fungera. 
> Kanske ger mig in på det igen om någon vecka eller så. Skulle nog även vara 
> bra att ha en hull-algoritm som skapar exakta polygoner mellan punkterna i 
> stället för konvexa.
> 
> 
>                       kalle


_______________________________________________
Talk-se mailing list
Talk-se@openstreetmap.org
http://lists.openstreetmap.org/listinfo/talk-se

Till