Laden von OpenStreetMap-Daten in QGIS?

36

In QGIS 1.8 habe ich das openstreetmap-Plugin verwendet, um Daten vom Server anzufordern oder eine .osm-XML-Datei zu öffnen, die in QGIS 3 Ebenen (Polygone, Polylinien und Punkte) erzeugt hat.

Dies war großartig (geben oder nehmen Sie den 64-Bit-Fehler, der sich stark auf den Bereich auswirkt, an dem ich gerade arbeite), aber wie mache ich das in QGIS 2.x?

Ich kann keine aktualisierte Dokumentation dazu finden.

Im Vektormenü habe ich versucht, von Osm-Servern zu importieren. Ich erhalte eine Osm-Datei, aber dann stecke ich fest. Es gibt eine Menüoption zum Laden einer XML-Datei, aber sie erzeugt eine Spatialite-Datenbank, die anscheinend nur Nicht-Geometrietabellen enthält, wenn ich versuche, sie als Spatialite-Ebene hinzuzufügen. Wenn ich die Attributtabelle öffne, kann ich Knoten-IDs, Wege usw. sehen, aber ich kann nicht herausfinden, wie ich sie tatsächlich nutzen kann.

Ich habe auch versucht, eine Vektorebene aus einer .osm-XML-Datei hinzuzufügen. Ich erhalte ein gpsbabel-Fenster, das nichts anzeigt, und schließlich eine ungültige Datenquellennachricht in QGIS.

Laurent S
quelle
2
Tom, ich habe eine Schritt-für-Schritt-Anleitung geschrieben, um die OSM-Daten in einem QGIS abzurufen. Hoffe, dass dies für Anfänger einfach zu befolgen ist. qgistutorials.com/en/docs/downloading_osm_data.html
spatialthoughts
Hier ist ein anständiger Stil (mit netten Setup-Anweisungen): github.com/yannos/Beautiful_OSM_in_QGIS Es ist für PostGIS (nicht Spatialite) gedacht.
kontextify
Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier einzuschließen und den Link als Referenz bereitzustellen. Nur-Link-Antworten können ungültig werden, wenn sich die verlinkte Seite ändert. - Aus der Bewertung
csk

Antworten:

40

Update für QGIS 3.x : Der alte OSM-Importer aus QGIS 2 wurde in QGIS 3 aufgrund vieler ungelöster Fehler gelöscht. Das QuickOSM-Plugin ermöglicht auch das Lesen von Osm-Raw-Dateien. Sie können stattdessen die Benutzerebene - Ebene hinzufügen - Vektorebene hinzufügen verwenden. In diesem Fall werden OSM-Daten mit GDAL geöffnet, wie unter http://gdal.org/drv_osm.html dokumentiert


In QGIS 2.x sind drei Schritte erforderlich

  1. Holen Sie sich eine OSM-Datei, die Sie mit josm, overpass oder einer anderen Quelle erhalten können. Es muss eine gültige XML sein. Sie können es auch über das Menü qgis Vector> OpenStreetMap> OSM-Daten herunterladen herunterladen. Manchmal wird jedoch kein Ergebnis angezeigt . Ich würde empfehlen, Überführungsturbo zu verwenden .
  2. Vektor> OpenStreetMap> Topologie aus XML importieren. Wie Sie bereits sagten, wird eine Spatialite-Datenbank mit Nicht-Geometrietabellen erstellt. Dies ist meiner Meinung nach die Topologie.
  3. Schließlich können Sie Daten über Vektor> OpenStreetMap> Topologie nach Spatialite exportieren . Hier müssen Sie die oben erstellte Datenbankdatei angeben und wie in qgis 1.8 haben Sie die Möglichkeit , Punkte, Linien oder Polygone auszuwählen . Unterhalb des Bereichs für exportierte Tags können Sie alle in der Datei enthaltenen Tags laden und nur diejenigen auswählen, die Sie benötigen. Dies ist eine zusätzliche Funktion als in 1.8.

Der Layer wird der Karte hinzugefügt. Wenn Sie alle Knoten möchten, können Sie Schritt 3 mit anderen Optionen wiederholen.

http://wiki.openstreetmap.org/wiki/QGIS#QGIS2_OpenStreetMap_Vectors

neogeomat
quelle
4
Das fühlt sich unglaublich kompliziert an, aber es funktioniert. Aus Gründen der Übersichtlichkeit müssen Sie nach Schritt 3 noch eine Spatialite-Ebene hinzufügen, eine Verbindung zu der von Ihnen erstellten Datenbank herstellen und die in Schritt 3 erstellten Ebenen auswählen, um das Ergebnis endgültig anzuzeigen. Danke für Ihre Hilfe!
Laurent S
Für mich wurden die Ebenen automatisch erstellt und hinzugefügt. Die Verbindung zur Datenbank wurde in Schritt 2 hergestellt (sofern Sie dies nicht deaktiviert haben).
AndreJ
15

Ich fand das Herunterladen von OSM-Daten mit dem Plugin und das Durchlaufen der Import- und Exportbewegungen sehr mühsam. Deshalb habe ich eine andere Lösung geschrieben: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/

Zusammenfassung:

Rohe OSM-Dateien können sehr groß sein. Aus diesem Grund ist es definitiv vorzuziehen, das komprimierte binäre .pbf- Format anstelle des XML-.osm-Formats herunterzuladen. Als Downloadquelle würde ich Geofabrik empfehlen .

Für den ersten Vorverarbeitungsschritt: Extrahieren des interessierenden Bereichs können wir Osmose verwenden:

C:\Users\anita_000\Geodata\OSM_Noirmoutier>..\bin\osmosis.bat --read-pbf pays-de-la-loire-latest.osm.pbf --bounding-box left=-2.59 bottom=46.58 right=-1.44 top=47.07 --write-xml noirmoutier.osm

Während QGIS auch .osm-Dateien laden kann, stellte ich fest, dass sich die Leistung und der Zugriff auf Attribute erheblich verbessern, wenn die .osm-Datei in eine Spatialite-Datei konvertiert wird.

C:\Users\anita_000\Geodata\OSM_Noirmoutier>ogr2ogr -f "SQLite" -dsco SPATIALITE=YES noirmoutier.db noirmoutier.osm

In QGIS können wir die Punkte, Linien und Multipolygone mit der Option "SpatiaLite-Ebene hinzufügen" laden. Beim Laden der Spatialite-Tabellen treten einige Probleme auf:

  • Es gibt kein Landpolygon. Stattdessen gibt es Features für Küstenlinien.
  • Die meisten Flusspolygone fehlen. Stattdessen gibt es „Flussufer“ -Linienmerkmale.

Das Erstellen der fehlenden Flusspolygone ist keine große Sache:

  1. Wählen Sie alle Linien aus, in denen Wasserstraße = Flussufer ist.
  2. Verwenden Sie das Werkzeug Polygonisieren aus der Verarbeitungs-Toolbox, um automatisch Polygone aus den Bereichen zu erstellen, die von den ausgewählten Flussuferlinien umschlossen sind. (Beachten Sie, dass die Verarbeitung standardmäßig nur für die ausgewählten Funktionen ausgeführt wird. Diese Einstellung kann jedoch in den Verarbeitungseinstellungen geändert werden.)

Das Erstellen des Land-Polygons (oder des See-Polygons, wenn Sie dies aus irgendeinem Grund vorziehen) ist etwas aufwändiger, da die Küste in den meisten Fällen nicht geschlossen wird, da wir häufig ein Stück Land aus dem Hauptkontinent herausschneiden . Daher müssen Sie den Bereich schließen, bevor Sie die Polygonisierungswerkzeuge verwenden können. Dazu schlage ich vor, zuerst die Küste mit "other_tags" LIKE '% "natural" => "coastline"%' auszuwählen und aus dieser Auswahl eine neue Ebene zu erstellen (Auswahl speichern unter ...) und zu bearbeiten (nicht vergessen) um das Fangen zu aktivieren!), um Linien hinzuzufügen, um den Bereich zu schließen. Dann polygonisieren.

Underdunkel
quelle
Wenn Sie einen relativ zuverlässigen Computer verwenden und möchten, dass die ogr2ogr-Phase vor der nächsten Eiszeit abgeschlossen wird, fügen Sie Folgendes hinzu --config OGR_SQLITE_SYNCHRONOUS OFF.
Scruss
6

Wenn Ihnen das Plugin nicht gefällt, Add Vector Layerrufen Sie die benötigten OSM-Daten mit der Overpass-API ab und fügen Sie das Ergebnis mit (Aktivierungsfilter All files) zu QGIS hinzu .

QGIS 2.0 verwendet den GDAL 1.10-OSM-Importer ogr2ogr, der gute Arbeit leistet.

Die Beziehungsunterstützung scheint im Moment besser zu sein als das Plugin.

Stellen Sie einfach sicher, dass Sie die Wege und Beziehungen vollständig herunterladen, dh alle Knoten der Wege und alle Mitglieder der Beziehungen mit all ihren Knoten.

AndreJ
quelle
4

Sie müssen die Daten nicht in SpatialLite speichern. Sie können nur:

  1. Laden Sie die Daten herunter (Vector> OpenStreetMap> Download Data, erstellt eine .osm-Datei)
  2. Laden Sie die Daten (.osm-Datei) als Vektorebene (Ebene> Vektorebene hinzufügen). Nachdem Sie die Datei ausgewählt haben, werden Sie gefragt, welche Ebenen Sie hinzufügen möchten (da GDAL für jeden Typ separate Dateien erstellt: Punkt, Linie, Mehrfachlinie, Mehrfachpolygon, GeomCollection). Wählen Sie aus, was Sie möchten, und laden Sie es hoch.
neuhausr
quelle
Dies funktioniert in gewisser Weise, aber es scheint nicht, dass Ebenen basierend auf Tags getrennt werden. Straßen und Flüsse landen also im Grunde genommen im selben Linien-Layer, was nicht wirklich hilfreich ist, wenn Sie die resultierenden Daten analysieren möchten.
Laurent S
Aus Ihrer Frage ging nicht hervor, was Sie mit den Daten gemacht haben, nachdem sie importiert wurden. Sie können natürlich aus den Daten in QGIS die gewünschten Funktionen auswählen. Wie oben erwähnt, ist es wahrscheinlich besser, Daten mit Overpass herunterzuladen, wenn Sie wissen, dass Sie nur bestimmte Daten möchten (und diese nicht zu groß sind), da Sie nur für bestimmte Funktionen eine Vorauswahl treffen können. Ich finde, dass Overpass Turbo eine benutzerfreundliche Möglichkeit ist, Abfragen zu entwickeln. Hier ist ein Beispiel von allen Autobahnen in dem Begrenzungsrahmen: overpass-turbo.eu/s/2VX
neuhausr