You are not logged in.
- Topics: Active | Unanswered
Announcement
Please create new topics on the new site at community.openstreetmap.org. We expect the migration of data will take a few weeks, you can follow its progress here.***
Pages: 1
#1 2013-06-25 13:19:31
- mvollmer
- Member
- Registered: 2012-01-03
- Posts: 33
Postleitzahl zu Ort
Hallo zusammen,
mit folgender Abfrage ist es ja möglich die einen Ort in einer OSM Datenbank zu suchen:
SELECT
cast(poly.name as VarChar(50))
FROM
planet_polygon as poly
WHERE
admin_level IS NOT NULL AND
poly.name ILIKE '%Ortsname%';Jedoch würde ich gerne die Postleitzahlen zu den Orten wissen.
Ich habe nur PLZ in der Tabelle planet_line/point gefunden, jedoch war es mir nicht möglich da eine Abfrage zu gestalten die dieses kombiniert.
Könnt ihr mir eventuell Tipps geben, wie ich das ganze angehen muss?
Mit freundlichen Grüßen
mvollmer
Offline
#2 2013-06-25 17:07:45
- stephan75
- Member
- Registered: 2008-05-28
- Posts: 2,918
Re: Postleitzahl zu Ort
Du musst dabei unterscheiden, dass es zwar ganz viele Orte in Deutschland gibt, wo Gemeindegrenze und PLZ-Grenze identisch sind, es gibt aber auch etliche, wo für einen Ort mehrere PLZ gelten, oder mehrere Orte teilen sich eine PLZ.
Dadurch kann es sich ergeben, dass du die PLZ eunes Ortes eher am Place-Node suchen musst als an der Grenzrelation mit einem admin_level=x
Offline
#3 2013-06-25 22:37:39
- maxbe
- Member
- Registered: 2010-01-19
- Posts: 3,255
- Website
Re: Postleitzahl zu Ort
Ich habe nur PLZ in der Tabelle planet_line/point gefunden, jedoch war es mir nicht möglich da eine Abfrage zu gestalten die dieses kombiniert.
Hi,
falls Du deine Datenbank mit osm2pgsql und der Option -k (oder --hstore) importiert hast, landen alle Schlüssel, die nicht in eine eigene Tabellenspalte kommen in der Spalte tags (ein hstore):
select name,tags->'postal_code' as PLZ from osm_polygon where admin_level is not null and name ilike '...'Manche Postleitzahlen stehen nicht an der Grenze sondern zusätzlich oder aussschliesslich in place-nodes:
select name,place,tags->'postal_code' as PLZ from osm_point where place is not null and tags->'postal_code'!='';Geduldige Menschen können auch alle Nodes mit gesetztem "addr:postcode=*" abfragen, die innerhalb einer Grenze liegen (Relation 62428 ist München, limit 1, weils da Exklaven gibt und mich nur die grösste Teilfläche interessiert (dauert nen Kaffee lang uns liefert 93 Stück PLZs):
select distinct(tags->'addr:postcode') from osm_point where st_contains((select way from osm_polygon where osm_id=-62428 order by way_area desc limit 1),way);Noch geduldigere Leute wiederholen das ganze noch mit polygonen im Grenzpolygon, könnte ja sein, dass die Adressen am Gebäudeumriss hängen.
Grüße, Max
Offline
#4 2013-06-25 23:08:08
- wambacher
- Member

- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,769
- Website
Re: Postleitzahl zu Ort
Es gibt für die PLZ-Gebiete eigenständige Relationen mit type=multipolygon/boundary und boundary=postal_code. Diese sind die "richtigen" PLZ-Gebiete, während die Administrativen Grenzen mMn dafür "missbraucht" werden. Die sollten dann und nur dann benutzt werden, wenn sich PLZ-Gebiet und Stadtfläche zu 100% decken. Und das ist wirklich nicht oft der Fall.
Ich habe schon die abenteuerlichsten Konstrukte gesehen. Angefangen von mehreren Administrativen Grenzen und jeweils der gleichen PLZ bis hin zu Grenzen mit postal_code=1,2,3,4,5 postal_code=1;2;3;4;5 oder postal_code=1-5
Noch geduldigere Leute wiederholen das ganze noch mit polygonen im Grenzpolygon, könnte ja sein, dass die Adressen am Gebäudeumriss hängen.
Und extrem geduldige Leute machen sowas: http://osm.wno-edv-service.de/plz ![]()
Gruss
walter
Ich muß das Teil wirklich mal wieder aus der Mottenkiste rausholen. Sind viele kleine Unschönheiten drin um die ich mich mal kümmern sollte.
Darum klemme ich das heute Abend (Mi) wieder ab.
Last edited by wambacher (2013-06-25 23:11:51)
Offline
#5 2013-06-25 23:13:21
- SimonPoole
- Member
- Registered: 2010-03-14
- Posts: 2,195
Re: Postleitzahl zu Ort
...
Noch geduldigere Leute wiederholen das ganze noch mit polygonen im Grenzpolygon, könnte ja sein, dass die Adressen am Gebäudeumriss hängen.
... und interpolations :-)
Offline
#6 2013-06-25 23:16:51
- wambacher
- Member

- From: Schlangenbad/Wambach, Germany
- Registered: 2009-12-16
- Posts: 16,769
- Website
Re: Postleitzahl zu Ort
... und interpolations :-)
Wow, DIE hab ich auch noch nicht drin ![]()
Offline
#7 2013-06-25 23:38:55
- SimonPoole
- Member
- Registered: 2010-03-14
- Posts: 2,195
Re: Postleitzahl zu Ort
SimonPoole wrote:... und interpolations :-)
Wow, DIE hab ich auch noch nicht drin
Auf den 2 address layern auf qa.poole.ch berücksichtige ich die schon immer, dass einzige was ich weglasse sind site relations ... muss aber dann auch mal gemacht werden.
Simon
PS: noch was zum Thema (PLZ in OSM): die Schweiz und Deutschland haben da ein ähnliches Konzept, im Gegensatz z.B. zu der UK. Ich hab für die Schweiz mal eine Auswertung gemacht Gemeinde-Polygone (die wir vollständig in OSM haben) vs. PLZ Polygone (die wir nicht importiert haben und vermutlich auch nicht werden): http://qa.poole.ch/ch-plz/ (auf das "m" Klicken zeigt das Gemeindepolygon auf einer PLZ-Karte).
Last edited by SimonPoole (2013-06-25 23:58:19)
Offline
#8 2013-06-26 07:35:25
- mvollmer
- Member
- Registered: 2012-01-03
- Posts: 33
Re: Postleitzahl zu Ort
Guten Morgen,
erstmal Vielen Dank zu den zahlreichen Antworten! Ja ich habe die Daten in die Datenbank mit --hstore importiert.
maxbe, die letzte Query scheint genau die richtige für mich zu sein. Ich habe sie wiefolgt umgeschrieben:
SELECT
DISTINCT ON (plz)
tags->'addr:postcode' as plz, way
FROM
planet_point
WHERE
st_contains((select way from planet_polygon where name ILIKE '%Ortsname%' ORDER BY way_area DESC LIMIT 1),way)
and tags->'addr:postcode' ILIKE '%PLZ%';
Dies wird nun als Suche genutzt. D.h. es soll dem User ermöglichen PLZ + Ortsname anzugeben um dann dort hinnavigieren zu können.
Falls ihr optimierungsvorschläge habt, höre ich sie mir gerne an ![]()
Mit freundlichen Grüßen
mvollmer
Offline
Pages: 1