User:Ajoessen/Grenzkontrollen
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.