OpenStreetMap Forum

The Free Wiki World Map

You are not logged in.

#1 2014-11-27 11:33:28

Duvodas
Member
Registered: 2013-01-17
Posts: 9

PLZ von Gemeinden - Datenbankabfrage?

Hallo zusammen,
ich bin auf der Suche nach einem Weg, die PLZ von Gemeinden aus der Datenbank auszulesen. Ich möchte (falls möglich automatisiert) eine Liste Gemeinden anhand ihres Schlüssels in eine Abfrage stecken und eine Liste aller PLZ erhalten, deren Gebiet die jeweilige Gemeinde überschneidet. Leider kenne ich mich bisher kaum mit Overpass API aus.
Kann mir jemand sagen, ob solch eine Abfrage machbar ist?

Offline

#2 2014-11-27 12:27:45

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

Re: PLZ von Gemeinden - Datenbankabfrage?

Duvodas wrote:

Kann mir jemand sagen, ob solch eine Abfrage machbar ist?

Ja.



Sie ist. Mit der CSV-Ausgabe kann man auch nur die Postleizahl-Liste erhalten.

/edit: Link für CSV

Last edited by rayquaza (2014-11-27 12:30:05)

Offline

#3 2014-11-27 12:43:22

Gehrke
Member
From: Bremen, DE
Registered: 2013-10-19
Posts: 1,894
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

rayquaza wrote:

Geht bei mir mit den meisten Gemeinden nicht - Output Menge ist leer.

Wie ist denn bei Overpass "(area.searchArea)" nach DE-9IM definiert?

Offline

#4 2014-11-27 12:56:22

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

Re: PLZ von Gemeinden - Datenbankabfrage?

https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#By_area_.28area.29 wrote:

Nodes are found if they are properly inside or on the border of the area. Ways are found if at least one point (also points on the segment) is properly inside the area. A way ending on the border and not otherwise crossing the area is not found. Relations are found if one of its members is properly inside the area.

F*… Kann man irgendwie einen ganz ganz kleinen Buffer um die Grenze legen?

Offline

#5 2014-11-27 13:35:29

Duvodas
Member
Registered: 2013-01-17
Posts: 9

Re: PLZ von Gemeinden - Datenbankabfrage?

Prinzipiell geht das ja schonmal in die richtige Richtung.

Blöd, dass der area Filter die relations nicht erfasst, wenn sie nur Elemente auf dem Rand der area haben. Da muss es doch irgendeine Lösung für geben?

Kann ich die Area auch über den Gemeindeschlüssel definieren? geocodeArea akzeptiert ja nur den Namen der Gemeinde oder? Und der ist ja leider nicht immer eindeutig...

Offline

#6 2014-11-27 13:48:49

gormo
Member
Registered: 2013-08-01
Posts: 2,016
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

rayquaza wrote:
https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#By_area_.28area.29 wrote:

Nodes are found if they are properly inside or on the border of the area. Ways are found if at least one point (also points on the segment) is properly inside the area. A way ending on the border and not otherwise crossing the area is not found. Relations are found if one of its members is properly inside the area.

F*… Kann man irgendwie einen ganz ganz kleinen Buffer um die Grenze legen?

Irgendwie mit around, aber das verstehe ich nicht

http://wiki.openstreetmap.org/wiki/Over … 8around.29


OSM hat nicht das Ziel bis Ende des Monats einen vollständigen Datensatz der Welt zu enthalten.
(nach S.W.) - Aber weil die Welt vielfältig ist, weil sie auch im Detail interessant ist, mag ich genaue Karten (nach C.)

Offline

#7 2014-11-27 14:06:42

Gehrke
Member
From: Bremen, DE
Registered: 2013-10-19
Posts: 1,894
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

rayquaza wrote:

F*… Kann man irgendwie einen ganz ganz kleinen Buffer um die Grenze legen?

Das ist doch alles Gefrickel. Gibt es in Overpass also kein vernünftiges Intersection-Konzept? Dann doch besser PostGIS. Ist aber natürlich auch nicht so einfach...

Offline

#8 2014-11-27 14:43:32

gormo
Member
Registered: 2013-08-01
Posts: 2,016
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

http://overpass-turbo.eu/s/6gI

[out:json][timeout:50];
{{geocodeArea:Landkreis Goslar}}->.searchArea;
(
  relation["boundary"="administrative"]["de:amtlicher_gemeindeschluessel"="03153017"](area.searchArea)->.b;
  relation["boundary"="postal_code"](around.b:1)
);
out body;
>;
out skel qt;

Man muss anpassen
* die Nominatim-Area, in der man sucht (im Zweifelsfall Deutschland nehmen)
* den AGS, nachdem man sucht

...Aber damit kriegt man auch die PLZ, die direkt an die Gemeinde mit dem AGS angrenzen.

Als Basis zum Weiterarbeiten ist das aber vielleicht schon nützlich

Gehrke wrote:
rayquaza wrote:

F*… Kann man irgendwie einen ganz ganz kleinen Buffer um die Grenze legen?

Das ist doch alles Gefrickel. Gibt es in Overpass also kein vernünftiges Intersection-Konzept? Dann doch besser PostGIS. Ist aber natürlich auch nicht so einfach...

Eben. Einiges geht schnell, einiges nicht. So wie immer ;-)

Last edited by gormo (2014-11-27 14:44:41)


OSM hat nicht das Ziel bis Ende des Monats einen vollständigen Datensatz der Welt zu enthalten.
(nach S.W.) - Aber weil die Welt vielfältig ist, weil sie auch im Detail interessant ist, mag ich genaue Karten (nach C.)

Offline

#9 2014-11-27 19:28:12

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: PLZ von Gemeinden - Datenbankabfrage?

Hier mal ein ganz anderer Ansatz mit is_in: http://overpass-turbo.eu/s/6iR

[out:json][timeout:300];

// Area für Merchweiler in .a1 merken
area["boundary"="administrative"]["de:amtlicher_gemeindeschluessel"="10043113"]->.a1;
// Area in .a1 umwandeln in eine Relation und dafür die Wege/ Knoten ermitteln
// Ergebnis in .n1 merken. In .n1 sind nun alle Wege/Knoten, die den
// Rand der boundary=administrative Relation beschreiben
rel(pivot.a1); > -> .n1;
// Für die Area .a1 (Merchweiler) alle Knoten ermitteln, die einen Tag haben
// Annahme: es gibt mindestens einen Knoten in der Area
// Ergebnis in .n2 merken. Knoten, die den Rand der Area beschreiben
// sind dort noch enthalten
node[~"."~"."](area.a1) -> .n2;
//Randknoten rauswerfen
(.n2; - .n1;);
//Alle Areas ermitteln, in denen innere Knoten in Merchweiler vorkommen
is_in;
//Filtern auf Areas mit boundary=postal_code
area._["boundary"="postal_code"];
//Area wieder in eine Relation umwandeln
rel(pivot);
//und ausgeben
out geom;

Last edited by couchmapper (2014-11-29 17:16:46)

Offline

#10 2014-11-27 23:15:45

Duvodas
Member
Registered: 2013-01-17
Posts: 9

Re: PLZ von Gemeinden - Datenbankabfrage?

Ich bin gerade auf die openGeoDB nodes gestoßen, die sowohl die Gemeindeschlüssel als auch die der Gemeinde zugeordneten PLZ enthalten.

k="openGeoDB:community_identification_number"
k="openGeoDB:postal_codes"

Wenn man davon ausgeht, dass diese Daten in der OSM Datenbank noch aktuell sind, könnte man doch über diese nodes leicht an die PLZ kommen. Ich habe mal stichprobenartig 15 Gemeinden quer durch Deutschland überprüft und die Daten sind sowohl vorhanden als auch korrekt.

[out:csv("openGeoDB:postal_codes";false)][timeout:25];
(
  node["openGeoDB:community_identification_number"="16069001"];
);
out;

Wie würde ich denn nun vorgehen, wenn ich sagen wir die PLZ aller ~11000 Gemeinden abfragen möchte? Gibt es eine Möglichkeit, mit der Overpass API eine Liste aller Gemeindeschlüssel zu importieren und dann beispielsweise über eine for-Schleife alle Gemeinden abzuarbeiten?

Last edited by Duvodas (2014-11-27 23:23:23)

Offline

#11 2014-11-27 23:53:01

fx99
Member
From: Baden-Württemberg
Registered: 2009-06-02
Posts: 1,498

Re: PLZ von Gemeinden - Datenbankabfrage?

Duvodas wrote:

Ich bin gerade auf die openGeoDB nodes gestoßen, die sowohl die Gemeindeschlüssel als auch die der Gemeinde zugeordneten PLZ enthalten.

k="openGeoDB:community_identification_number"
k="openGeoDB:postal_codes"

Wenn man davon ausgeht, dass diese Daten in der OSM Datenbank noch aktuell sind, könnte man doch über diese nodes leicht an die PLZ kommen.

Vorsicht: die openGeoDB wurden irgendwann mal importiert, werden aber kaum gepflegt.

Offline

#12 2014-11-28 01:28:53

Netzwolf
Member
Registered: 2008-04-01
Posts: 1,665

Re: PLZ von Gemeinden - Datenbankabfrage?

Nahmd,

Duvodas wrote:

Ich möchte (falls möglich automatisiert) eine Liste Gemeinden anhand ihres Schlüssels in eine Abfrage stecken und eine Liste aller PLZ erhalten, deren Gebiet die jeweilige Gemeinde überschneidet. Leider kenne ich mich bisher kaum mit Overpass API aus.
Kann mir jemand sagen, ob solch eine Abfrage machbar ist?

<mode="Advocatus diaboli">
Die — rechnet man seine Arbeitszeit mit — kostengünstigste Lösung ist, bei Postdirekt die CD “DATAFACTORY BASIC” zu bestellen, die Daten in eine MySQL/PostgreSQL/YouNameItSQL-DB einzuspielen und darauf Selects loszulassen.
</mode>

Gruß Wolf

Offline

#13 2014-11-28 07:40:38

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: PLZ von Gemeinden - Datenbankabfrage?

Duvodas wrote:

Wie würde ich denn nun vorgehen, wenn ich sagen wir die PLZ aller ~11000 Gemeinden abfragen möchte? Gibt es eine Möglichkeit, mit der Overpass API eine Liste aller Gemeindeschlüssel zu importieren und dann beispielsweise über eine for-Schleife alle Gemeinden abzuarbeiten?

Also für ganz DE wird dir Roland sicher früher oder später auf die Finger hauen (->lese: eigene Instanz aufbauen!!), aber für's Saarland kann man das schon noch laufen lassen:

http://overpass-turbo.eu/s/6iS

Prinzipiell würde ich empfehlen, einen Extrakt von Geofabrik zu nehmen und damit eine eigene DB zu füttern.

Last edited by couchmapper (2014-11-29 17:17:36)

Offline

#14 2014-11-28 14:29:30

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

Re: PLZ von Gemeinden - Datenbankabfrage?

Oder anders gesagt: Wenn du die Daten aus diesen Tags nutzen willst nutze lieber direkt die openGeoDB.

Eine Lösung für die Grenzsuchanfrage (aka "zu welchem Landkreis gehört Kleinstadt") würde mich jedenfalls dennoch interessieren.

Offline

#15 2014-11-28 14:50:23

Gehrke
Member
From: Bremen, DE
Registered: 2013-10-19
Posts: 1,894
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

OpenGeoDB ist da zu veraltet, soweit ich informiert bin.

Offline

#16 2014-11-28 19:10:20

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: PLZ von Gemeinden - Datenbankabfrage?

rayquaza wrote:

Eine Lösung für die Grenzsuchanfrage (aka "zu welchem Landkreis gehört Kleinstadt") würde mich jedenfalls dennoch interessieren.

Das geht auch mit is_in - einfach mal selbst ausprobieren... cool

Offline

#17 2014-11-28 19:55:11

rayquaza
Member
From: DE-BW
Registered: 2012-11-18
Posts: 2,007

Re: PLZ von Gemeinden - Datenbankabfrage?

Ich beginne zu verstehen. Vielen Dank!

Offline

#18 2014-11-28 23:13:07

Gehrke
Member
From: Bremen, DE
Registered: 2013-10-19
Posts: 1,894
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

is_in wird aber doch nicht funktionieren, wenn sich z.B. 2 Gemeinden eine PLZ teilen, oder?

Offline

#19 2014-11-29 00:05:14

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,316
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

Gehrke wrote:

is_in wird aber doch nicht funktionieren, wenn sich z.B. 2 Gemeinden eine PLZ teilen, oder?

nö, und ausserdem ist is_in am Aussterben und auf keinen Fall komplett.

Gruss
walter

Offline

#20 2014-11-29 00:28:21

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: PLZ von Gemeinden - Datenbankabfrage?

Wie bitte?

Ich rede hiervon: http://wiki.openstreetmap.org/wiki/Over … 28is_in.29

Beispiel: http://overpass-turbo.eu/s/6iu

Last edited by couchmapper (2014-11-29 00:31:18)

Offline

#21 2014-11-29 00:39:40

wambacher
Member
From: Schlangenbad/Wambach, Germany
Registered: 2009-12-16
Posts: 16,316
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

couchmapper wrote:

Ok, war auf dem falschen Dampfer. weitermachen wink

Gruss
walter

Offline

#22 2014-11-29 10:07:32

Gehrke
Member
From: Bremen, DE
Registered: 2013-10-19
Posts: 1,894
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

couchmapper wrote:

The results are all areas which contain at least one of node from the input set or the specified coordinates.

Das klingt so ähnlich wie "intersect". Funktioniert aber nicht, wenn die boundary/exterior-Punkte auch gelten.

Last edited by Gehrke (2014-11-29 10:07:49)

Offline

#23 2014-11-29 10:11:53

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: PLZ von Gemeinden - Datenbankabfrage?

Gehrke wrote:

Funktioniert aber nicht, wenn die boundary/exterior-Punkte auch gelten.

Naja, das kommt auf die Query an. In Post #9 / #13 habe ich die Ränder ja auch explizit rausgeworfen.

Offline

#24 2014-11-29 10:27:44

Gehrke
Member
From: Bremen, DE
Registered: 2013-10-19
Posts: 1,894
Website

Re: PLZ von Gemeinden - Datenbankabfrage?

couchmapper wrote:
Gehrke wrote:

Funktioniert aber nicht, wenn die boundary/exterior-Punkte auch gelten.

Naja, das kommt auf die Query an. In Post #9 / #13 habe ich die Ränder ja auch explizit rausgeworfen.

Ah, dann wäre das ja ok. Für mich ist Overpass leider weitgehend Kauderwelsch.

Offline

#25 2014-11-29 10:38:03

couchmapper
Member
Registered: 2013-02-17
Posts: 462

Re: PLZ von Gemeinden - Datenbankabfrage?

Gut, ich habe im Post #9 noch die Kommentare ergänzt. War vorgestern zu faul.

Last edited by couchmapper (2014-11-29 10:38:34)

Offline

Board footer

Powered by FluxBB