Qualitätskontrolle mit osmfilter

Neben Osmosis bietet u.a. das Programm http://wiki.openstreetmap.org/wiki/Osmfilter die einfache Möglichkeit, aus einer originären OSM-Datei für ein bestimmtes Gebiet ganz bestimmte Elemente herauszufiltern.

So kann man beispielsweise aus Datenextrakten für ganze Bundesländer oder gar ganze Staaten (herunterladbar von geofabrik.de oder cloudmade.com etc.) nur jene Elemente belassen, die man sich mal näher anschauen möchte.

(Zwar kann man bestimmte OSM-Elemente auch aus einer Datenbank abfragen, aber hier soll gezeigt werden, wie es ohne geht.)

Die Ergebnisdateien schrumpfen unter Umständen so weit zusammen, dass man die verbliebenen Daten auch in JOSM oder Merkaartor laden kann. Hier gewinnt man dann eine Überblick über Art, Anordnung und Verteilung der gefilterten Objekte.

Anhand von einigen Beispielen und Arbeitsschritten soll dies gezeigt werden:

  1. OSM-Rohdaten von einem bestimmten Gebiet laden und entpacken. (osmfilter kann derzeit noch keine PBF-Dateien verarbeiten, deshalb bitte dan gepackte osm-Dateien wählen oder vorhandene pbf umwandeln in osm.)

  2. aktuellste osmfilter-Version von der o.g. Wikiseite laden.

  3. Aufrufen von osmfilter über die Kommandozeile. Linux-Nutzer dürften wissen wie das geht, für wißbegierige Windows-Nutzer z.B. unter XP: Start-Menü wählen → Ausführen … → cmd → dann mittels “cd”-Kommando zum Pfad wechseln, wo osmfilter.exe und die osm-Datei liegt.

  4. Aufruf des Programms wie folgt: osmfilter -v quell.osm --drop-history —drop-author --keep=“boundary=administrative” >ergebnis.osm

  5. Eine osm-Datei mit allen Elementen, welche irgendwo ein Merkmal boundary=administrative haben, sollte nun erstellt worden sein. Auch mal die Dateigröße beachten.

  6. Laden dieser lokalen Datei in JOSM, dazu das Anzeigefenster “Liste aller Relationen” (graues Zahnrad am linken Rand) öffnen.

  7. Diese Liste kann man nun nach Belieben durchforsten.

Dabei fielen mir z.B. in Niedersachsen folgende Relationen auf:

Dransfeld: 1399074 und 1401831
Schladen: 1432663 und 1432653
Suderburg: 1460233 und 1460236
Velpke: 1446655 und 1446631

Es sind stets eine größere und eine kleinere Grenzrelation, welche aber BEIDE ein admin_level=8 haben. Das kann ja nicht so ganz stimmen. Müsste die größere Relation dann nicht admin_level=7 bekommen und im Namen angepasst werden? Ggf. Abgleich mit entsprechenden Artikeln zu den Gemeinden in Wikipedia?

Gibt es sowas auch in weiteren Bundesländern?

Wer hat weitere Ideen für Parameter via osmfilter?
z.B. --keep=“boundary=postal_code” oder --keep=“place=” oder --keep=“postal_code=” --keep=“amenity=fuel”

Hallo!

Ich würd gern aus eigenen Versuchen noch etwas beisteuern:
Fürs Filtern ist das Format “.o5m” deutlich besser geeignet als “.osm”. Vorschlag für den Download mit gleichzeitiger Format-Umwandlung (Linux):

wget download.geofabrik.de/osm/europe/germany/bayern.osm.pbf -O - | ./osmconvert - -o=bayern.o5m

Für Windows gibts das praktische Programm “wget” ebenfalls (z.B. hier: http://www.heise.de/software/download/wget/3073). Man kann also auch dort komplett über die Kommandozeile arbeiten. Natürlich kann man stattdessen auch die Datei bayern.osm.pbf per Browser runterladen und danach mit dem primitiven GUI von osmconvert ins .o5m-Format umwandeln (Doppelklick auf osmconvert).

Ich habs bisher für das Editieren von Eisenbahn-Relationen verwendet. Ein Beispiel ist hier zu finden:
https://wiki.openstreetmap.org/wiki/JOSM/Advanced_editing#Editing_Thematic_Data

So, nach allgemeinder Informationsgewinnung bei wikipedia und dem für uns nutzbaren Gemeindeverzeichnis von destatis.de sieht es so aus, dass es sich bei den oben genannten “doppelten” Relationen bei den jeweils größeren Gebieten um die entsprechenden Samtgemeinden handelt, welche dann auch gleichnamige Mitgliedsgemeinden haben.

Die kleineren Mitgliedsgemeinden haben aber alle einen eigenständigen amtl. Gemeindeschlüssel, somit ist bei denen auch admin_level=8 richtig.

Daraus folgert, dass bei den größeren Grenzrelationen nicht gleichzeitig auch admin_level=8 gesetzt sein darf, hier muss meiner Meinung nach =7 gesetzt werden.

Falls keine Gegenstimmen kommen, werde ich dies so für die Relationen
Dransfeld: 1401831
Schladen: 1432653
Suderburg: 1460236
Velpke: 1446631 ändern.

Frage für die weiteren Bundesländer in Dt.:

Gibt es weitere Relationen mit name= oder name_prefix=“Samtgemeinde” oder “Einheitsgemeinde” o.ä. UND dem admin_level=8 ???

EDIT: Done!

… weiter gehts mit 4 reinen PLZ-Relationen (1457145, 1457144, 1457146, 1457143), an denen war auch admin_level=8 getaggt, obwohl es für die Gemeindegrenzen eigene Grenzrelationen mit admin_level= gab.

War auch relativ gut zu sehen in der Relationsliste von JOSM.

Hätte ja nicht gedacht, dass es in den Grenzrelationen noch so viel aufzuräumen gibt … und ich hab “nur” Niedersachsen am Wickel …

Fehler in den Grenzrelationen kann man auch durch eine grafische Auswertung wie beim OSM-Inspector bekommen.

Dabei störten mich bei den bisher bekannten Online-Tools folgendes:

der OSM-Inspector von geofabrik.de kann zwar in der Ansicht “Boundaries” auch Grenzpolygone mit boundary=administrative darstellen, allerdings ohne “genauere” Wahlmöglichkeiten für adminlevel=5 und höher.

Und die OSM-Karte von ITOWorld unter http://wiki.openstreetmap.org/wiki/ITO_Map kann unter dem Layer “Administrative boundaries” noch KEINE Relationen darstellen.

Eine eigene Darstelleung einer gefilterten OSM-Datei mittels z.B. Maperitive klappt zwar auch irgendwie, aber die Rules sind mir noch ein bisschen zu unverständlich.

Habe jetzt aber eine weitere Möglichkeit gefunden, generell OSM-Daten nach eigenen Regeln (auch für größere Gebiete!) zu rendern, ohne größere Klimmzüge zu machen:

http://wiki.openstreetmap.org/wiki/MapCSS - Darstellung in JOSM !!

Wie einfach sich damit Bilder erzeugen lassen, überraschte mich doch positiv.

Ein Beispielbild findet sich auf der Unterseite http://wiki.openstreetmap.org/wiki/MapCSS/Examples weiter unten.

Die Schritte dazu:

Niedersachsen-Extrakt von der Geofabrik herunterladen,
mittels Osmfilter (siehe oben im Thread) --keep=“boundary=administrative” Daten auf das wesentliche schrumpfen,
den Regelsatz aus dem Wiki als Textdatei lokal abspeichern,
in JOSM bei der Einstellung zum Mappaint Style diese Textdatei laden und dann nur diesen Stil im zu aktivierenden Auswahlmenü wählen.

In dem Beispielbild zeigen die wenigen dunkelblauen Gebiete demnach Fehler in den Relationen an, da sich gleichwertige Daten überlagern.

Aus lauter Langeweile :slight_smile: hab ich ja doch mal versucht, die gesamte Germany.osm.pbf von einem Geofabrik.de-Mirror zu laden und via osmfilter nur das zu behalten, was

boundary=administrative UND ( admin_level=6 ODER admin_level=7 ODER admin_level=8 ) ist …

… die Ergebnisdatei ist als reines OSM-XML immerhin über 152Megabytes groß.

Trotzdem ist es dann auf einigermaßen tauglichen PCs möglich, diese Datei in JOSM reinzuladen, allerdings erst nach entsprechender Speicherzuweisung via -Xmx1500M Parameter beim JOSM-Aufruf.

Vorher hab ich in JOSM die MapCSS-Vorlage aus dem oben genannten Wiki-Artikel eingebunden und ausgewählt.

Bei Erfolg sieht man dann die gesamte Bundesrepublik nach Landkreisen, Samtgemeinden und Einzelgemeinden. Zoomen und Ziehen der Karte in JOSM ist natürlich etwas zäh, also immer etwas Geduld haben. Und wegen der transparenten Färbung der Gebiete lassen sich dann doch vereinzelt ein paar logische Mappingfehler erkennen.

z.B. folgende Relationen mit entsprechender ID:

Miesterhorst 1285603 versus Gardelegen 1285598 vs Hottendorf 1285620

Nach Recherche in Wikipedia gab es wohl in 2011 eine Eingemeindung vom Miesterhorst und Hottendorf nach Gardelegen!

Wie sollte man hier die OSM-Daten berichtigen? admin_level auf 9 und den AGS löschen?

Gruß, Stephan

Moin,

da die Miesterhorst und Hottendorf keine Gemeinden mehr sind und auch keine AGS /RS mehr haben - ja.

(Der frühere Zustand bleibt ja über die History erhalten - oder kann in den alten Destatis-Listen nachgeschlagen werden.)

Gruß
Georg

So, habe Miesterhorst und Hottendorf entsprechend “herabgestuft”.

Bei solchen Konflikten über eventuelle Eingemeindungen o.ä. gibt es nach meinen Recherchen übrigens recht aktuelle Informationen in der Wikipedia:

http://de.wikipedia.org/wiki/Wikipedia:Projekt_Landkreiskarten → Arbeitsseite

http://de.wikipedia.org/wiki/Wikipedia:WikiProjekt_Kommunen_und_Landkreise_in_Deutschland

Daran kann man sehen, dass vergangene Gebietsreformen in die Wikipedia schon eingearbeitet wurden.

In der Zwischenzeit hab ich noch weitere logische Überschneidungen gefunden (Stand OSM-Daten 1.4.12):

Am besten kann man sich die jeweiligen Relationen mal in JOSM einzeln herunterladen. Dazu “Objekt herunterladen …” (Strg-Shift-O) wählen und die Relations-IDs per Copy-Paste dort einfügen.

Harztor: http://www.openstreetmap.org/browse/relation/1159748 vs. http://www.openstreetmap.org/browse/relation/1946750

Beedenbostel http://www.openstreetmap.org/browse/relation/1797683 und Osterheide http://www.openstreetmap.org/browse/relation/1808968

St. Blasien http://www.openstreetmap.org/browse/relation/1226183 vs Häusern http://www.openstreetmap.org/browse/relation/1240407

Michelbuch http://www.openstreetmap.org/browse/relation/537068 vs. http://www.openstreetmap.org/browse/relation/544213

Dorfprozelten http://www.openstreetmap.org/browse/relation/394509 vs. http://www.openstreetmap.org/browse/relation/2012094

Mottener Forst http://www.openstreetmap.org/browse/relation/384316

Römershager Forst -Nord http://www.openstreetmap.org/browse/relation/384317 und -Ost http://www.openstreetmap.org/browse/relation/384301

Großer Auersberg http://www.openstreetmap.org/browse/relation/384314

Eisfeld http://www.openstreetmap.org/browse/relation/1266455 vs Bachfeld http://www.openstreetmap.org/browse/relation/1273185

Mohlsdorf http://www.openstreetmap.org/browse/relation/1135963 vs Mohlsdorf-Teichwolframsdorf http://www.openstreetmap.org/browse/relation/1946738

Horburg-Maßlau http://www.openstreetmap.org/browse/relation/277335 vs Leuna http://www.openstreetmap.org/browse/relation/277340

Angersdorf http://www.openstreetmap.org/browse/relation/277420 vs Teutschenthal http://www.openstreetmap.org/browse/relation/277422

Bad Suderode http://www.openstreetmap.org/browse/relation/158133 im Vergleich zu den umliegenden Grenzrelationen!

Osternienburger Land http://www.openstreetmap.org/browse/relation/1329406 versus Dornbock, Diebzig, Drosa, Wulfen

Wörlitzer Winkel http://www.openstreetmap.org/browse/relation/1327933 vs Oranienbaum-Wörlitz http://www.openstreetmap.org/browse/relation/1606239

Holzminden http://www.openstreetmap.org/browse/relation/1184652 vs gemfr. Gebiet http://www.openstreetmap.org/browse/relation/2016898

gemeindefreie Gebiete innerhalb von Delligsen http://www.openstreetmap.org/browse/relation/1184843

Wie kann man diese “Fehler” am elegantesten (vielleicht via Wikipedia) ausmerzen?

Gruß, Stephan

EDIT: 10 Fehler inzwischen berichtigt!