Caricamento dati OpenStreetMap in QGIS?


36

In QGIS 1.8 ho usato il plug-in openstreetmap per richiedere dati dal server o aprire un file XML .osm, che ha prodotto 3 livelli (poligoni, polilinee e punti) in QGIS.

Questo è stato grandioso (dai o prendi il bug a 64 bit che influenza fortemente l'area appena mappata su cui lavoro), ma come posso farlo in QGIS 2.x?

Non riesco a trovare alcuna documentazione aggiornata al riguardo.

Nel menu vettoriale, ho provato a importare da server osm, ottengo un file .osm, ma poi sono bloccato. C'è un'opzione di menu per caricare un file XML, ma produce un db spazialite, che apparentemente ha solo tabelle non geometriche quando provo ad aggiungerlo come livello di spazialite. Se apro la tabella degli attributi, posso vedere gli ID dei nodi, i modi e così via, ma non riesco a capire come usarli effettivamente.

Ho anche provato ad aggiungere un livello vettoriale da un file XML .osm. Ottengo una finestra gpsbabel che non mostra nulla, quindi finalmente un messaggio di origine dati non valido in QGIS.


2
Tom, ho scritto istruzioni dettagliate per ottenere i dati OSM in un QGIS. Spero che questo sia semplice da seguire per i principianti. qgistutorials.com/en/docs/downloading_osm_data.html
pensieri spaziali

Ecco uno stile decente (con belle istruzioni per l'installazione): github.com/yannos/Beautiful_OSM_in_QGIS È progettato per PostGIS (non Spatialite).
kontextify,

Sebbene questo collegamento possa rispondere alla domanda, è meglio includere qui le parti essenziali della risposta e fornire il collegamento come riferimento. Le risposte di solo collegamento possono diventare non valide se la pagina collegata cambia. - Dalla recensione
csk

Risposte:


40

Aggiornamento per QGIS 3.x : il vecchio importatore OSM da QGIS 2 è stato eliminato in QGIS 3 a causa di numerosi bug non risolti. Il plug-in QuickOSM consente inoltre di leggere file raw osm. Puoi invece usare il livello utente - Aggiungi livello - Aggiungi livello vettoriale. In tal caso, i dati OSM vengono aperti con GDAL come documentato da http://gdal.org/drv_osm.html


In QGIS 2.x , sono previsti 3 passaggi

  1. Ottieni un file OSM, puoi ottenerlo usando josm o cavalcavia o qualsiasi altra fonte. Deve essere un XML valido. Puoi anche scaricarlo da qgis Vector> OpenStreetMap> Scarica il menu OSM Data , ma a volte non dà risultati. Consiglierei di usare il cavalcavia turbo .
  2. Vettore> OpenStreetMap> Importa topologia da XML , questo come hai detto produrrà un database spazialite con tabelle non geometriche. Questa penso sia la topologia.
  3. Infine, puoi ottenere i dati tramite Vector> OpenStreetMap> Esporta topologia su Spatialite , qui devi dare il file db creato sopra e proprio come in qgis 1.8 avrai la possibilità di scegliere punti, linee o poligoni . Sotto quello nella sezione dei tag esportati puoi caricare tutti i tag contenuti nel file e selezionare solo quelli che ti servono. Questa è una funzionalità aggiuntiva rispetto a 1.8.

Il layer viene aggiunto alla mappa, se si desidera tutti i nodi, è possibile ripetere il passaggio 3 con altre opzioni.

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


4
Sembra incredibilmente complicato, ma funziona. Per motivi di chiarezza, dopo il passaggio 3, è ancora necessario aggiungere un livello di spazialite, connettersi al db creato e scegliere i livelli creati nel passaggio 3 per vedere finalmente il risultato. Grazie per l'aiuto!
Laurent S,

Per me, i livelli sono stati creati e aggiunti automaticamente. La connessione al database è stata stabilita nel passaggio 2 (a meno che non sia stata deselezionata).
AndreJ,

15

Ho trovato noioso scaricare i dati OSM usando il plugin e passare attraverso i movimenti di importazione ed esportazione. Ecco perché ho scritto una soluzione diversa: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/

Sommario:

I file OSM non elaborati possono essere piuttosto grandi. Ecco perché è decisamente preferibile scaricare il formato .pbf binario compresso anziché il formato .osm XML. Come fonte di download, consiglierei Geofabrik .

Per la prima fase di preelaborazione: estrarre l'area di interesse, possiamo usare l'osmosi:

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

Mentre QGIS può anche caricare file .osm, ho scoperto che le prestazioni e l'accesso agli attributi sono molto migliorati se il file .osm viene convertito in spatialite.

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

In QGIS, possiamo caricare punti, linee e multipoligoni usando Aggiungi livello SpatiaLite. Quando cariciamo le tabelle spazialite, ci sono alcuni problemi:

  • Non esiste un poligono di terra. Invece, ci sono caratteristiche di linea "costa".
  • Manca la maggior parte dei poligoni fluviali. Invece ci sono caratteristiche di linea "riverbank".

La creazione dei poligoni fluviali mancanti non è un grosso problema:

  1. seleziona tutte le linee in cui via navigabile = riva del fiume.
  2. utilizzare lo strumento Poligono dalla casella degli strumenti di elaborazione per creare automaticamente poligoni dalle aree racchiuse dalle linee di riva del fiume selezionate. (Si noti che Elaborazione per impostazione predefinita funziona solo sulle funzionalità selezionate ma questa impostazione può essere modificata nelle impostazioni di Elaborazione.)

Creare il poligono di terra (o poligono di mare se lo preferisci per qualche motivo) è un po 'più coinvolto poiché la maggior parte delle volte la costa non sarà chiusa per il semplice motivo che spesso stiamo tagliando un pezzo di terra fuori dal continente principale . Pertanto, prima di poter utilizzare gli strumenti Poligonizza, dobbiamo chiudere l'area. Per fare ciò, suggerisco di selezionare prima la costa usando "other_tags" LIKE '% "natural" => "coastline"%' e creare un nuovo livello da questa selezione (salvare la selezione come ...) e modificarlo (non dimenticare per abilitare lo snap!) per aggiungere linee per chiudere l'area. Quindi poligonizza.


Se stai utilizzando un computer abbastanza affidabile e desideri completare la fase ogr2ogr prima della prossima era glaciale, aggiungi --config OGR_SQLITE_SYNCHRONOUS OFF.
scruss

6

Se non ti piace il plug-in, recupera i dati OSM necessari con l'API Overpass e aggiungi il risultato a QGIS con Add Vector Layer( All filesfiltro di abilitazione ).

QGIS 2.0 utilizza l'importatore ogr2ogr OSM di GDAL 1.10 che fa un buon lavoro.

Il supporto delle relazioni sembra essere migliore rispetto al plugin al momento.

Assicurati solo di scaricare completamente i modi e le relazioni , ovvero tutti i nodi dei modi e tutti i membri delle relazioni, con tutti i loro nodi.


4

Sai, non è necessario inserire i dati in SpatialLite. Puoi semplicemente:

  1. Scarica i dati (Vector> OpenStreetMap> Scarica dati, crea un file .osm)
  2. Carica i dati (file .osm) come livello vettoriale (Livello> Aggiungi livello vettoriale). Dopo aver selezionato il file, ti verrà chiesto quali layer vuoi aggiungere (poiché GDAL crea file separati per ogni tipo: Point, Line, MultiLine, MultiPolygon, GeomCollection). Seleziona quello che vuoi e caricalo.

Funziona in qualche modo, ma non sembra separare i livelli in base ai tag. Quindi fondamentalmente strade e fiumi finiscono nello stesso livello Linea, il che non è molto utile se si desidera eseguire analisi sui dati risultanti.
Laurent S

Dalla tua domanda non era chiaro cosa stavi facendo con i dati una volta importati. Ovviamente puoi selezionare qualsiasi caratteristica desideri dai dati all'interno di QGIS. Come accennato in precedenza, se sai che vuoi solo determinati dati (e non si trova in un'area troppo ampia), probabilmente scaricare i dati con Overpass sarebbe meglio, dato che puoi preselezionare solo per alcune funzionalità. Trovo che Overpass Turbo sia un modo facile da usare per sviluppare query. Ecco un esempio di tutte le autostrade nel rettangolo di selezione: overpass-turbo.eu/s/2VX
neuhausr
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.