Geokoordinaten der Gemeindegrenzen für ganz Deutschland in einer Datei

Hallo zusammen,

ich versuche jetzt schon seit einigen Stunden, die Geodaten der Gemeindegrenzen aller deutschen Gemeinden ausfindig zu machen. Prinzipiell sind diese ja hier: http://wiki.openstreetmap.org/wiki/WikiProject_Germany/Grenzen verfügbar. Jedoch muss man sich für die einzelnen Punkte der Polygone sehr weit durchklicken. Gibt es eine Möglichkeit, die Punkte (Geokoordinaten) der Gemeindegrenz-Polygone gleichzeitig runterzuladen? Sehr grobe Daten würden mir schon reichen.

Vielen Dank im Voraus!

Beste Grüße

Fred

Kleine Zusatzinfo, wofür ich das ganze brauche: Ich habe bereits eine Datenbank mit allen Gemeinden sowie den jeweiligen Einwohnern. Nun möchte ich für ein bestimmtes Produkt Potentialanalysen machen. D.h. ich gebe einen Punkt ein und möchte im Umkreis von bzw. 20 km wissen, wieviel Menschen dort leben. Im Moment nutze ich für die Umkreissuche noch den Mittelpunkt der Gemeinde. Aber vor allem bei großen Gemeinden (z.B. Berlin, Hamburg, München) funktioniert das nicht sonderlich gut, da entweder alle Berliner mit reingerechnet werden oder keiner.

Hi,
in der Wiki Übersicht sind bei weitem nicht alle Grenzen drin (Hab grad mal “meinen” Kreis Coesfeld ergänzt).

2 Möglichkeiten:

Du lädst Dir germany.osm von der Geofabrik runter und filterst zB mit osmosis die Daten raus,
oder Du holst Dir das direkt per API / XAPI Aufrufen, wobei XAPI zur Zeit überlastet ist, und es
bei API Download -Beschränkungen gibt.

Chris

Hallo,

vielen Dank für deine Antwort. Die Idee, die Daten aus der germany.osm rauszufiltern hatte ich auch schon mal. Bin dann allerdings am mangeldem Verständnis von Osmosis gescheitert. Aber wenn das, wie du schreibst, die beste Möglichkeit ist, werde ich mich da wohl durchkämpfen müssen. :slight_smile:

Solange die größten (vllt.) 1000 Gemeinden drin sind, reicht mir das vollkommen. Für die kleinen mache ich einfach mit Hilfe der Gemeindefläche ein “Quadrat” um den Gemeindemittelpunkt. Für meine Zwecke ist das ausreichend genau.

So, dann setze ich mich mal an die Dokumentation von Osmosis.

Vielen Dank noch mal!

Gruß

Hallo,
Falls es gar nicht klappt, gibts noch diese Alternative: http://wiki.openstreetmap.org/wiki/DE:Osmfilter
Wichtig ist dann das hier, weil ja Relationen auch in anderen Relationen enthalten sein können:
http://wiki.openstreetmap.org/wiki/DE:Osmfilter#Ber.C3.BCcksichtigung_von_Abh.C3.A4ngigkeiten

Als Filtereinstellung müsstest du vermutlich so etwas wie das hier verwenden:
-k"admin_level=2 =3 =4 =5 =6"
Je nachdem wie weit runter du in der Hierarchie der Grenzen gehen willst.

P.S.:
Für Osmosis gibts eine relativ neue Bedienoberfläche Namens Osmembrane. Vielleicht hilft dir das auch weiter.

evtl. hilft auch das programm boundaries.pl, siehe wiki?

Das Filtern der Gemeindegrenzen aus den osm Daten ist nicht trivial … und die Gemeindegrenzen auch noch lückenhaft

Evt ist eine shape Datei mit den Postleitzahlgrenzen besser geeignet für dein Vorhaben:

http://arnulf.us/PLZ

ist eigentlich recht simpel:

osmosis.bat --read-pbf nordrhein-westfalen.osm.pbf --tf accept-ways boundary=administrative --used-node --tf accept-relations boundary=administrative --write-xml nrw-grenzen.osm

Die Extrakte gibts hier:
http://download.geofabrik.de/osm/europe/germany/

Gruß,
ajoessen

Da fehlen dann aber alle Grenzen, die nur per Relation erfasst wurden. :wink:

Danke euch allen. Ich bin froh, dass ich noch mal hier rein geguckt habe. :slight_smile: Tolles Forum.

Da ich mich jetzt schon relativ intensiv mit Osmosis auseinander gesetzt habe, habe ich den Vorschlag von ajoessen als erstes probiert. Hat auch geklappt. Bin gerade dabei die Koordinaten in meine mysql Datenbank zu bringen.

Jetzt habe ich gerade den Post von aighes gesehen. :frowning:

Ist es “regelmäßig” so, dass für eine Anzahl Gemeinden die Grenzen vorhanden sind und die Gemeinde in der Mitte ihre Grenzen anhand der umliegenden bekommt? Oder ist das eher die Ausnahme? Gint es diesbezüglich Größenklassen? Ich meine kann man bei den großen Gemeinden davon ausgehen, dass diese eher “richtig” erfasst wurden?

Vielen Dank noch mal!

Gruß Fred

Hi, also das teilen von Grenzways ist eigentlich die Regel. Denn genaugenommen gehört die Grenzlinie ja zu 2 Gebieten :wink:
http://wiki.openstreetmap.org/wiki/Relation:boundary
http://wiki.openstreetmap.org/wiki/DE:Grenze_zeichnen
Du könntest mal das source Tag beachten, da steht drin wie amtlich ein Grenzverlauf ist

P.S. Denke übrigens aber auch an unsere Lizenz, wenn du die Daten weiterverarbeitest :slight_smile:

Hier gibt es eine Übersicht über alle erfassten administrativen Grenzen in D:
http://osm-static.anders-hamburg.de/Deutschland/index.html

Da wohl in D “alle” Gemeinden als Relation existieren, müsste folgendes reichen:
osmosis.bat --read-pbf germany.osm.pbf --tf accept-relations boundary=administrative --used-way --write-xml grenzen.osm

Meine Batch stammt noch aus Zeiten, als es --used-way nicht gab. Impliziert denn --used-way auch --used-nodes? Sonst hat man die Koordianten nämlich immer noch nicht drin.

gruß,
ajoessen

Hab nochmal in osmosis-dev gelesen:

osmosis.bat --read-pbf germany.osm.pbf --tf accept-relations boundary=administrative --used-way --used-node --write-xml grenzen.osm

Evtl. ist es aber auch günstiger nach admin_level=6 und 8 getrennt zu filtern und diese 3 xml-Dateien dann zu mergen. Das geht auch alles in einem Aufruf, muss man mal mit OSMembrane zusammenbasteln. Mit obigem Aufruf muss man dann noch alle Grenzen rauswerfen, die nicht admin_level=6 oder admin_level=8 haben. Wenn die Kreise auch nicht drin sein sollen, sollte man das mergen von 6 und 8 manuell machen und vor dem mergen bspw. per josm alle Kreise aus dem 6er rauswerfen. Oder hat jemand noch eine bessere Methode parat um Kreise und kreisfreie Städte zu separieren?

Genau das ist der Punkt, warum ich mich mit osmosis so schwer getan habe. Die Begriffe kann man sich nicht herleiten, sondern wissen muss.

Mit dem Befehl von aighes erhalte ich für Hamburg ca. 1,3 Millionen Zeilen. Mit dem Befehl von ajoessen sind es ca. 70.000. Aber was der Unterschied ist, konnte ich bis jetzt noch nicht feststellen. Vom grundsätzlichen Aufbau sind sie gleich. Also node, way, relation. Ich werde aber sicherheitshalber mit dem Befehl von aighes weiterarbeiten. Nicht das mir später ein paar Punkte fehlen…

Ich probiere jetzt schon wieder seit einer Weile nur Datensätze mit admin_level=8 rauszubekommen. Leider gelingt es mir nicht. Könnte mir bitte noch mal einer von euch helfen? Mein letzter Versuch war so:

osmosis.bat --read-pbf hamburg.osm.pbf --tf accept-relations boundary=administrative, admin_level=8 --used-way --write-xml hamburg_grenzen.osm

Davor gab es noch weitere. die ich jetzt nicht alle aufliste. Entweder gibt er einfach die gleiche Datei aus, als würde admin_level gar nicht drin stehen oder es gibt eine Fehlermeldung. :frowning:

Vielen Dank im Voraus.

Gruß

Fred

EDIT: Hatte den vorherigen Post noch nicht gesehen.

Bei meiner ersten Zeile hat noch ein --used-node gefehlt, daher sind da wohl alle nodes drin geblieben. Sinnvoll ist es, dein Resultat einfach mal mit josm zu öffnen und zu schauen, was noch drin ist. Dann weiß man/du was noch raus muss.

Soviel ich weiß, kann man dem tag-filter immer nur ein key-value-Paar mitgeben. Wenn du bei osmosis nicht so recht weißt, was du tust, bastel dir die Zeile mit osmembrane zusammen. Din dem Programm kannst du dir das schön zusammen klicken.

Ja, mit osmembrane “spiele” ich gerade schon rum. Da muss man sich aber auch erst rein arbeiten. Deshalb werde ich die überflüssigen admin_level einfach beim Einsortieren der xml in meine Datenbank mit php aussortieren. Mit PHP kenne ich mich wenigstens ein bißchen aus. :slight_smile: Alles in allem habe ich ja jetzt sogar mehr als ich brauche. :slight_smile:

Vielen Dank euch allen für die tolle Hilfe!

Da admin_level=8 ja nur zusammen mit boundary=administrative vorkommen dürfte, filter doch gleich nur danach. Und lad dir das Ergebnis in josm ein, um zu sehen, obs passt.

Gruß,
ajoessen

Habe ich schon versucht. Das hatte nicht geklappt. Jetzt schon! Danke für den Tipp.

Was mir gerade noch Sorgen macht, ist das bei den Relationen die “ref”-Nummern von den “ways”, zu einem großen Teil nicht in den “ways” vorhanden sind. Oder habe ich da einen Denkfehler?

Gruß

Ich hatte ja schon angedeutet: Das extrahieren der Gemeindegrenzen aus den OSM Daten ist nicht trivial …

In deinem Beispiel mit Hamburg sind die meisten Gemeindegrenzen nicht komplett, weil diese schon in der hamburg.osm.pbf nicht komplett sind da das poly file, mit dem das OSM Extrakt von der Geofabrik erstellt wird, nur sehr grob ist und gerade Stücke an den Rändern fehlen.

Bei Hamburg würde das alles aber noch “händisch” gehen, in dem man die Datei z.B. in Josm lädt und die fehlenden Teile der admin-level-8 Relationen einzeln nachlädt.

Das geht aber dann nicht mehr mit ganz Deutschland. Auch da ist das OSM Extrakt der geofabrik sehr grob und viele Grenzrelationen an den Rändern fehlen dort.

Du müsstest also erst mal selbst einen kompletten Extrakt von Deutschland aus der Europa OSM erstellen.

Aber auch dann ist das Ergebnis noch nicht komplett. Erst fehlen überhaupt noch viele Grenzen in Deutschland:

z.B. in Sachen Anhalt 500 von knapp 1000 oder in Niedersachsen 350 von 1100

http://osm-static.anders-hamburg.de/Deutschland/Sachsen-Anhalt/
http://osm-static.anders-hamburg.de/Deutschland/Niedersachsen/

Dann sind auch nicht alle vorhandenen Gemeindegrenzen sauber mit admin_level=8 getaggt … manche sind auch mit post_code_level=8 getaggt.

Du wirst also trotz großem Zeitaufwand am Ende nur eine sehr unvollständige Übersicht der Gemeinden für ganz Deutschland aus den OSM Daten bekommen.

Die admin-level=6, also die Kreiskrenzen sind dagegen komplett in Deutschland erfasst, allerdings kann man die auch nicht aus dem besagten Grund des groben Geofabrik Extraktes nicht komplett aus dem germany.osm bekommen, man muss auch da den Umweg über die Europa OSM gehen.

Allerdings gibt es da einen schnellen und einfachen alternativen Weg: Die Daten des OSM Inspektor lassen sich ja auch einfach per WFS Server abrufen, die Kreiskrenzen sind da in einem eigenen Layer und ganz schnell mit einem WFS Client, z.B mit Quantum GIS geladen.

http://tools.geofabrik.de/osmi/