Wie werden rohe OSM-Daten für openstreetmap.org verarbeitet?

12

Kann jemand einen Einblick geben, wie OSM-Daten für www.openstreetmap.org verarbeitet oder gerendert werden?

Ein konkretes Beispiel ... Ich habe Daten aus einem aktuellen PostGIS-Datensatz planet.osm für ein Gebiet in Missouri extrahiert. Die OSM-Daten müssen gründlich bereinigt werden, bevor sie mit den richtigen Stilen gerendert werden können. Viele Gewässer werden als Strings gespeichert, die sich nicht richtig schließen. Daher muss ich FME zum Fangen und dann zum Bilden von Polygonen verwenden, damit ich blau gefüllte Flüsse / Seen haben kann.

Wenn ich mir hier die gleichen Daten ansehe, werden die Gewässer wie erwartet gerendert.

Ich habe Probleme, alle Fälle zu identifizieren, in denen ein Einrasten erforderlich ist (z. B. welche "natürlichen" Typen dies erfordern und wie hoch die Toleranz sein sollte). Ich vermute auch, dass es viele andere Datenprobleme gibt, die ich nie sehen werde, da ich mich mit ganz Nordamerika befasse.

Durchläuft jeder, der OSM-Daten herunterlädt und verwendet, einen eigenen Bereinigungsprozess? Weiß jemand, wie diese Bereinigung von www.openstreetmap.org gehandhabt wird? Es scheint, als wäre ihr Prozess der am besten informierte und am besten getestete.

Jeder Einblick sehr geschätzt.

BEARBEITEN : Hier finden Sie weitere Informationen zu meinem Workflow

Eine planet.osm-Datei wird heruntergeladen und mit Osmosis in PostGIS in das pgsql-Schema geladen. Ich extrahiere dann OSM xml aus PostGIS für viele kleine Bereiche, wieder mit Osmosis. Jede dieser kleinen XML-Dateien wird dann mithilfe von FME und seinen umfassenden Feature-Kategorien in Shapefiles konvertiert. In diesem Stadium (OSM xml -> Shp via FME) erwarte ich, Linien in Polygone umzuwandeln und andere Datenbereinigungen durchzuführen.

Diese Shapefiles werden über GeoServer bereitgestellt (und mit GWC zwischengespeichert).

Tomfumb
quelle
Willst du Kacheln servieren? Wenn ja, ist ein Ort zum Starten hier: switch2osm.org/serving-tiles
neuhausr

Antworten:

9

Okay, es gibt ein paar verschiedene Blickwinkel, und da es unklar ist, wie Sie Daten anfänglich verarbeiten, werde ich nur einen Überblick geben.

Es gibt zwei Möglichkeiten, OSM-Daten zu konsumieren: osm2pgsql , ein älteres Dienstprogramm, das Stylesheets und differenzielle Aktualisierungen unterstützt, und Imposm , ein neueres, Python-basiertes System, das Python-basierte Stylesheet-Transformationen unterstützt. Wenn die Leute etwas verarbeiten, ist ein Großteil davon in dieser Art von Skript enthalten. Hier ist zum Beispiel ein Imposm-Mapping für osm-bright , das Stylesheet, auf dem MapBox Streets (Disclosure / Employee) basiert.

Um genauer zu sein, auf was Sie stoßen, ist es wahrscheinlich, dass Sie die Osm-Relationen nicht richtig verarbeiten. In diesem Datenmodell können mehrere Linienfolgen Polygone bilden. Tools wie Imposm und osm2pgsql übernehmen diese Art der Datenumwandlung in der Regel für Sie.

So funktioniert OSM.org selbst: Bearbeitungen werden in einer 'semantischen' Postgres-Datenbank gespeichert und fortlaufend mit Osmose in eine PostGIS-Datenbank importiert und mit Mapnik gerendert . Es gibt keinen manuellen Bereinigungsschritt zwischen der Datenbank und dem Rendern der Karte, da beide stark gekoppelt sind und die Karte auf dem neuesten Stand sein soll.

tmcw
quelle
Danke für die Auskunft. Würdest du so freundlich sein, meine Bearbeitung durchzusehen und mir zu sagen, wie sich dies auf meine Optionen auswirkt? Ich mag die Idee, Imposm oder osm2pgsql zu verwenden, um diese Bereiche zu erstellen, aber ich gehe davon aus, dass dies ein anderes (nicht-pgsql) Schema in PostGIS erfordert, da ich mir ziemlich sicher bin, dass es nur Knoten- und Wegetabellen und keine Bereiche enthält. Vermutlich, wenn ich Bereiche in PostGIS bekommen hätte, würde ich sie dann beim Extrahieren in OSM xml wieder verlieren? Sollte ich die Daten anders in PostGIS speichern und dann irgendwie direkt nach Shp extrahieren?
Tomfumb
5

Im Allgemeinen müssen Sie nicht als solches "fangen", da die ursprünglichen OSM-Daten topologisch organisiert sind - ein Polygon (= OSM-Weg) wird beispielsweise durch eine Liste von Knotenindizes definiert (und nicht direkt durch ihre Koordinaten). Wenn also der Start- und der Endindex identisch sind, wird dies als geschlossenes Polygon betrachtet. Ansonsten ist es eine Polylinie (wie eine Straße).

Größere Körper (wie Osage River in Ihrem Fall) werden normalerweise durch OSM-Multipolygone definiert , die aus einer Reihe von OSM-Wegen (Linestrings) bestehen, die die Form und Löcher (falls vorhanden) definieren. Es gibt mehrere potenzielle Probleme mit OSM-Multipolygonen:

  1. Es gibt mehr als eine Möglichkeit, sie zu definieren (schauen Sie sich nur die technischen Daten an). Unterschiedliche Menschen wenden unterschiedliche Regeln an.
  2. Die Regeln sind implizit - Sie müssen die OSM-Wiki-Dokumente durchlesen, um zu verstehen, wie Sie damit umgehen.
  3. Wenn Sie einen OSM-Datenextrakt verwenden, fehlen möglicherweise einige Teile des Multipolygons (da sie sich nicht geografisch im Bundesstaat Missouri befinden). Sie müssen also einen Weg finden, um das Wasserkörperpolygon zu schließen (entweder durch Ausschneiden an der Staatsgrenze oder manuelles Schließen mit einem GUI-Tool).

Ja, es gibt auch andere Datenprobleme. Hauptsächlich ergeben sie sich aus der Natur des OSM-Mappings: Unterschiedliche Personen ordnen Dinge unterschiedlich zu und es gibt keine festgelegten Regeln dafür. Es ist mehr oder weniger eine selbstorganisierte Anarchie;)

Ich selbst arbeite nie mit abgeflachten OSM-Daten, die von osm2pgsql erstellt wurden. Ich beginne immer mit ursprünglichen topologischen Daten im OSM-XML-Format und schreibe Code, um diese in das von mir benötigte Format umzuwandeln. Andererseits verwende ich Mapnik nicht zum Rendern, daher bin ich wahrscheinlich in der Minderheit.

Igor Brejc
quelle
1

Wenn Sie das ursprüngliche Datenbankschema von osm2pgsql verwenden, werden die zugehörigen osm-Datenmodelle 'closed way' und 'multipolygon-relation' in Polygone umgewandelt und in eine Tabelle mit dem Namen 'planet_polygon' eingefügt. Wege und Knoten befinden sich in 'planet_line' und 'planet_point'. Sie können über Quantum GIS auf diese Tabellen zugreifen und sie direkt in Shapefiles exportieren. Sie können SQL-Abfragen auch in Quantum GIS ausführen, um die Daten zu filtern.

Ich würde dafür keine Osmose verwenden. Es verfügt nicht über die Polygonbehandlung, wie dies bei osm2pgsql der Fall ist. Osmosis speichert die Daten auf die gleiche Weise, wie die Mitwirkenden mit ihnen umgehen (Knoten, Wege und Beziehungen). Es ist kein geeignetes Datenbankschema zum Rendern.

AndreJ
quelle