Straatnamen, plaatsnamen en postcodes ophalen

Na een aantal dagen hiermee bezig te zijn geweest heb ik toch maar besloten om het na te vragen op het forum.
Ik heb zojuist (opnieuw) de osm file van nederland geïmporteerd naar postgresql (osm2pgsql) met parameter -l (voor de latitudes)
Nu leek het mij mogelijk om alle straatnamen + Plaats + longitude + latitude te verkrijgen vanuit de database.
Echter lukt dit mij niet. Ik zie wel heel veel gegevens, maar geen woonplaats.
Bij het zoeken op deze site is het wel mogelijk om op woonplaats + straatnaam te zoeken.
Is de database die daar achter hangt ook beschikbaar voor gebruik of is deze gesloten?

Bij voorbaat dank voor ieders hulp!

De woonplaatsen zitten in planet_osm_polygon

SELECT *
FROM planet_osm_polygon
WHERE admin_level=‘10’

Dat zou je alle woonplaatsen die momenteel in OSM zitten moeten geven.

Ah mooi, waar staat dat admin level precies voor?
en staan straatnamen dan in planet_osm_roads(lijkt me logisch)

admin_level is een hierarchie voor de administrative grenzen zie de wiki.

planet_osm_roads bevat inderdaad de wegen :slight_smile:

Overigens zitten er weinig postcodes in OSM zelf. Meeste kan je echter wel ophalen uit 6pp

En de zoekfunctie op openstreetmap.org maakt onder andere gebruik van Nominatim: http://nominatim.openstreetmap.org/ en de broncode is ook beschikbaar. Zie de documentatie: http://wiki.openstreetmap.org/wiki/Nominatim

Is het wel de bedoeling dat de postcodes in OSM kaart komen, en zo ja wat is de juiste schrijf wijze, ik heb het bij twee straten in gorinchem ingevuld, addr:postcode = 4206XJ; 4206XK
Of is het helemaal niet de bedoeling dat het in de kaart wordt ingevuld?

Ik vul ze zelf nooit in. Ik gooi ze wel altijd richting 6pp. Die info is toch redelijk goed te koppelen en het datamodel daar is beter voor postcodes.

Maar je kan ze in osm knnallen met addr:postcode. net wat je zelf wil :slight_smile:

Postcodes heb ik nu via 6PP, maar dan moet het toch (vrij makkelijk) mogelijk zijn om die met elkaar te mergen zodat ik
<6pp>straatnaam,plaats</6pp> = straatnaam,plaats maar ik krijg nu de straatnaam en plaats uit OSM, maar deze zijn niet aan elkaar gekoppeld (dus met 2 verschillende query’s). Is dit wel mogelijk? En hoe kan ik daar de lat/long weer aan hangen?

De coordinaten die bij 6pp staan zijn bijna altijd de coordinaten van de plaats, niet van de straat.

Dat had ik ook gezien, maar in OSM staan wel coordinaten per straat, dus moet een merge op straatnaam + plaats het mogelijk maken om een volledige file met straatnaam, postcode, plaats, latitudes en longitudes te hebben

Probeer:

SELECT straat, gemeente, x(centroid(transform(t1.way, 4326))) AS lon, y(centroid(transform(t1.way, 4326))) AS lat
FROM 
(
  SELECT name AS straat, way
  FROM planet_osm_roads
  WHERE name IS NOT NULL
) AS t1,
(
  SELECT name AS gemeente, way
  FROM planet_osm_polygon
  WHERE admin_level='8'
) AS t2
WHERE t1.way && t2.way
  AND ST_Intersects(t1.way, t2.way)

Dit geeft uiteraard de gemeente. Voor woonplaats heb je admin_level=‘10’ nodig. Echter die staat nog niet overal goed. Verder zou je ng wat kunnen groeperen in de straat query en iets slimmer het puntn kunnen kiezen. Maar het kan dus wel degelijk.

Dankje, ik ga het morgen gelijk proberen!

Heb het geprobeerd en het werk goed, alleen ik merk wel dat er heel veel straten niet in zitten.
Bijvoorbeeld: Europaweg, Zwijndrecht
Pruimendijk, Rijsoord(gem: Ridderkerk)
(waren eerste 2 probeersels) ik gebruik nu de osm file van http://planet.openstreetmap.nl/benelux/ maar ik zie dat als ik nomatim search(op de website) doe dat ik
die straten er wel uit krijg.
Zit er gewoon nog te weinig data in de OSM database of ligt dat ergens anders aan?

Vervang planet_osm_roads door planet_osm_line en je krijgt alle wegen, en niet alleen een gedeelte.

planet_osm_roads is bedoeld voor low-zoom renders, en heeft alleen de grotere wegen, en geen unclassified/residential. planet_osm_line heeft alle wegen.

Slaat met hand tegen hoofd
dankje :wink: dat scheelt een hoop.