<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