User:Ajoessen/Grenzkontrollen

From OpenStreetMap Wiki
Jump to navigation Jump to search

Nachfolgend wird geschildert, wie man mit einer Postgis-Datenbank und Quantum Gis zerbrochene Grenzrelationen visualisieren kann. Ausgangspunkt ist ein beliebiges Geofabrik-Extrakt.

Ausschneiden der Grenzrelationen

Da das Einlesen eines Bundesland-Extraktes Stunden dauert, werden nur die Grenzrelationen mit osmosis ausgefiltert.

admin-level.bat

D:\Karten\OpenStreetMap\osmosis\bin\osmosis.bat --read-pbf D:\Karten\osm\Geofabrik\nordrhein-westfalen.osm.pbf --tf accept-relations admin_level=* --used-way --used-node --write-xml D:\Karten\osm\osmosis\adminlevel.osm


Einladen in die Datenbank

Um einen vorhandenen Komplettimport nicht zu zerstören, wird der Extrakt in eine Zweitdatenbank geladen. Im Prinzip reicht auch der default.style von osm2pgsql.

D:\Karten\OpenStreetMap\osm2pgsql\osm2pgsql --create --database bboxdb --username osmuser --prefix planet --slim --cache 1512 -S D:\Karten\OpenStreetMap\osm2pgsql\extended.style --hstore D:\Karten\osm\osmosis\adminlevel.osm


Einbinden der Datenbank in QGIS

Quantum GIS in der Version 1.7.0 Wroclaw wird im folgenden vorausgesetzt. Bezugsquelle: hier

Layer/PostGIS-Layer hinzufügen

Neu

Name: bboxdb (Name der Verbindung, nicht unbedingt der Datenbank. Erscheint beim nächsten Aufruf automatisch als Vorgabe)
Dienst: (frei lassen)
Host: localhost
Port: 5432
Datenbank: bboxdb
Benutzername: osmuser
Passwort: (frei lassen, wenn nicht gesetzt)
[x] Benutzernamen speichern

Verbindung testen (solte erfolgreich sein)

Ok

Verbinden

Zeile mit planet_polygon auswählen

Abfrage erstellen

Felder: admin_level doppelklicken

=

Stichprobe (oben rechts)

4 doppelklicken

UND

In der SQL_WHERE-Klausel steht dann:

"admin_level" = '4' AND geometrytype("way") IN ('POLYGON','MULTIPOLYGON')

'Testen' sollte dann angeben, wieviele Datensätze gefunden wurden.

OK

OK

Hinzufügen

Rechte Maustaste auf den Legendeneintrag planet_ploygon

Umbenennen auf Bundesländer

Layer/Postgis-Layer hinzufügen

Verbinden

usw wie oben mit admin_level 5 bis 8 für Regierungsbezirke, Kreise, Verbandsgemeinden und Gemeinden. In einigen Bundesländern gibt es keine Verbandsgemeinden, dann entfällt der admin-level=7. Wenn man die Einträge in der Legende entsprechend umbenannt hat, stehen dort in der Reihenfolge Gemeinde ->Bundesländer die einzelnen Layer hierarchisch sortiert. Die Farben können mit Doppelklick auf den Legendeneintrag / Stil /Fülloptionen geändert werden.

Nun sieht man hoffentlich den größten Teil der Kartenfläche in der Gemeindefarbe. Lediglich die kreisfreien Städte dürfen andersfarbig sein. Entfernt man das Kreuz vor den Gemeinden, sollte alles in der Kreisfarbe erscheinen. Gibt es Lücken, so sind die Kreisgrenzen nicht geschlossen, und Postgis hat deswegen kein Polygon erstellen können. Gleiches gilt für Regierungsbezirksgrenzen und ggf Bundeslandgrenzen. Es kann aber auch sein, dass das Ausschneidepolygon der Geofabrik zu knapp gehalten ist. Also eventuell das nächstgrößere Extrakt (Deutschland oder Europa) testen.

Wiederherstellung in JOSM

Um die zerstörte Relation zu laden, zoomt man im Datendownload so weit hinein, dass man die Kreisgrenzen auf der OSM-Karte sieht. Dann ein kleines Stück Grenze mit einer Ecke drin herunterladen. Im Relationsfenster die vermisste Relation suchen und im Relationseditor öffnen. Sollte die Relation aus einer großen Anzahl Elemente bestehen, kann man die Relation auch abschnittsweise herunterladen. Dazu einen Block von etwa 20 unvollständigen Elementen markieren und das unterste Symbol links anklicken. Dies wiederholen, bis alle Elemente geladen sind.

Im Idealfall sollten alle outer-Elemente rechts verbunden sein, und eine zweite Line von ganz unten wieder nach oben gehen. Wenn das nicht der Fall ist, die Relation sortieren lassen mit dem Symbol A..Z. Gibt es dann immer noch keinen geschlossenen Ring, mit Rechtsklick auf das erste Element zoomen (oder eines der anderen, die nicht mit Vorgänger und Nachfolger verbunden sind). Meist erkennt man dann die freien Enden der Kette. Dort soweit hineinzoomen, dass die Lücke gut im Bild ist, und diesen Bereich vom Server nachladen. Wenn jetzt ein Wegelement auftaucht, dass die Lücke schließt, dieses als outer zur Relation hinzufügen und die Relation sortieren lassen. Eventuell muß das Wegelement aber auch aufgeteilt werden, wenn es weiter geht als die Lücke in der Relation. Findet sich kein Wegstück, muß man ein neues mit boundary=adminsitrative und passendem admin_level anlegen, welches die Lücke schließt. Oder man verlängert ein Teilsegment bis zum nächsten Knoten, wenn keine weiteren Eigenschaften dran hängen.

Den Vorgang wiederholt man so lange, bis das Polygon geschlossen ist. Anschließend hochladen und auf das Geofabrik-Extrakt am Folgetag warten. Beim nächsten Kontrollgang braucht man nur noch obige Batch-Datei durchlaufen zu lassen, die Einbindung in Quantum GIS bleibt unverändert.