[OSM-talk-nl] Huisnummers - het vervolg
Freek
freek_osm at vanwal.nl
Sun Aug 17 22:06:54 UTC 2008
Hoi allemaal,
Ik heb zojuist een eerste versie gemaakt van een huisnummer-opzoek-service,
gebaseerd op de geconverteerde AND data. Deze is hier te bewonderen:
http://www.vanwal.nl/cgi-bin/hnsearch
Voor elke overeenkomende huisnummer-serie (meestal van straathoek tot
straathoek) berekent hij de meest waarschijnlijke ligging van het betreffende
huis. De getoonde positie is een link naar openstreetmap.org met een marker
op die positie.
Met een kleine steekproef heb ik vastgesteld dat ongeveer 75% van de
huisnummers correct zijn. De overige 25% bestaat voornamelijk uit huisnummers
die aan de verkeerde kant van de weg liggen of missen.
Ik hoop dat we deze service kunnen integreren met Lambertus' route planner
(wat vind je ervan?). Ik denk dan bijvoorbeeld aan twee extra huisnummer
vakjes die, als ze ingevuld zijn, een request doen naar de huisnummer
zoekmachine in plaats van de namefinder. Hiervoor zal ik natuurlijk een
computer-vriendelijker interface maken.
Ten tweede dacht ik dat Stefan nog een mooi bestandje had liggen met
postcodes, zouden we die kunnen gaan correleren?
DETAILS
Er wordt gebruik gemaakt van een PostgreSQL database (zonder PostGIS: dom,
dom, dom, zie verderop...). De data is direct geconverteerd van AND formaat
naar PostgreSQL, dus het is geen live OSM data. In de database zitten ook
alle AND plaatsnamen, bijbehorende IDs en coördinaten. AND is zo vriendelijk
geweest om bij ongeveer 60% van de straten ook het ID van de bijbehorende
plaats mee te nemen waardoor het zoeken behoorlijk snel gaat. Dit betekend
helaas ook dat ik voor 40% van de straten geen idee heb bij welke plaats ze
horen. Daarom wordt een tweede zoekactie ondernomen wanneer er geen
resultaten zijn. Hierbij wordt gekeken naar de afstand van de straat tot de
plaats. Door middel van een (beetje gare...) index werkt ook deze tweede
zoekactie nog redelijk snel.
Doordat de AND plaatsnamen gebruikt worden kan het zijn dat bepaalde namen
niet gevonden worden (bijvoorbeeld 's-Gravenhage, Den Haag werkt wel), mocht
je nog echt wat missen dan hoor ik het wel.
Het zoekinterface heeft nu nog één vervelend probleem dat ik niet zomaar
opgelost kreeg: huisnummers die alleen staan en waarvan de plaats niet bekend
is kunnen niet gevonden worden.
De oorzaak hiervan is dat ik PostgreSQL "path" objecten [1] gebruik om de
wegdelen in op te slaan, maar PostgreSQL kan de afstand niet berekenen tussen
een punt (de plaats) en een pad dat uit maar één punt bestaat (het ene
huisnummer). Als er nog een mogelijkheid zou zijn om het eerste punt uit een
pad te selecteren zou ik er wel uit komen, maar ook zo'n functie kan ik
nergens vinden. Tips zijn zeer welkom (ik ben bang dat ik beter PostGIS had
kunnen gebruiken...).
[1] http://www.postgresql.org/docs/8.3/interactive/datatype-geometric.html
--
Freek
More information about the Talk-nl
mailing list