¿Cargando datos de OpenStreetMap en QGIS?

36

En QGIS 1.8 utilicé el complemento openstreetmap para solicitar datos del servidor, o abrir un archivo XML .osm, que produjo 3 capas (polígonos, polilíneas y puntos) en QGIS.

Esto fue genial (más o menos el error de 64 bits que afecta altamente el área recién mapeada en la que trabajo), pero ¿cómo hago eso en QGIS 2.x?

No puedo encontrar ninguna documentación actualizada al respecto.

En el menú vectorial, he intentado importar desde servidores osm, obtengo un archivo .osm, pero luego estoy atascado. Hay una opción de menú para cargar un archivo XML, pero produce una base de datos espacial, que aparentemente solo tiene tablas sin geometría cuando trato de agregarlo como una capa espacial. Si abro la tabla de atributos, puedo ver identificadores de nodo, formas, etc., pero no puedo entender cómo usarlos realmente.

También he intentado agregar una capa vectorial desde un archivo XML .osm. Recibo una ventana gpsbabel que no muestra nada, y finalmente un mensaje de fuente de datos no válido en QGIS.

Laurent S
fuente
2
Tom, escribí unas instrucciones paso a paso para obtener los datos de OSM en un QGIS. Espero que esto sea fácil de seguir para los principiantes. qgistutorials.com/en/docs/downloading_osm_data.html
spatialthoughts
Aquí hay un estilo decente (con buenas instrucciones de configuración): github.com/yannos/Beautiful_OSM_in_QGIS Está destinado a PostGIS (no Spatialite).
kontextify
Si bien este enlace puede responder la pregunta, es mejor incluir aquí las partes esenciales de la respuesta y proporcionar el enlace como referencia. Las respuestas de solo enlace pueden volverse inválidas si la página vinculada cambia. - De la opinión
csk

Respuestas:

40

Actualización para QGIS 3.x : el antiguo importador de OSM de QGIS 2 se eliminó en QGIS 3 debido a muchos errores no resueltos. El complemento QuickOSM también permite leer archivos osm sin formato. Puede utilizar la capa de usuario - Agregar capa - Agregar capa vectorial en su lugar. En ese caso, los datos de OSM se abren con GDAL como lo documenta http://gdal.org/drv_osm.html


En QGIS 2.x , hay 3 pasos involucrados

  1. Obtenga un archivo OSM, puede obtenerlo utilizando josm o overpass o cualquier otra fuente. Tiene que ser un xml válido. También puede descargarlo desde qgis Vector> OpenStreetMap> Descargar el menú OSM Data , pero a veces no da resultado. Recomendaría usar turbo de paso elevado .
  2. Vector> OpenStreetMap> Importar topología desde XML , esto, como dijiste, producirá una base de datos espacial con tablas sin geometría. Esto creo que es la topología.
  3. Finalmente, puede obtener datos por Vector> OpenStreetMap> Exportar topología a Spatialite , aquí debe proporcionar el archivo db hecho anteriormente y, al igual que en qgis 1.8, tendrá la opción de elegir puntos, líneas o polígonos . Debajo de eso, en la sección de etiquetas exportadas , puede cargar todas las etiquetas contenidas en el archivo y seleccionar solo aquellas que necesite. Esta es una característica adicional que en 1.8.

La capa se agrega al mapa, si desea todos los nodos, formas en que puede repetir el paso 3 con otras opciones.

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

neogeomat
fuente
44
Esto se siente increíblemente complicado, pero funciona. En aras de la claridad, después del paso 3, aún debe agregar una capa espacial, conectarse a la base de datos que creó y elegir las capas creadas en el paso 3 para ver finalmente el resultado. ¡Gracias por tu ayuda!
Laurent S
Para mí, las capas se crearon y agregaron automáticamente. La conexión a la base de datos se estableció en el paso 2 (a menos que la haya desmarcado).
AndreJ
15

Me pareció muy tedioso descargar datos de OSM usando el complemento y pasar por los movimientos de importación y exportación. Es por eso que escribí una solución diferente: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/

Resumen:

Los archivos OSM sin procesar pueden ser bastante grandes. Es por eso que definitivamente es preferible descargar el formato binario comprimido .pbf en lugar del formato XML .osm. Como fuente de descarga, recomendaría Geofabrik .

Para el primer paso de preprocesamiento: extraer el área de interés, podemos usar Osmosis:

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

Si bien QGIS también puede cargar archivos .osm, descubrí que el rendimiento y el acceso a los atributos mejora mucho si el archivo .osm se convierte en spaceialite.

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

En QGIS, podemos cargar los puntos, líneas y multipolígonos usando Agregar capa de SpatiaLite. Cuando cargamos las tablas de spaceialite, hay algunos problemas:

  • No hay polígono terrestre. En cambio, hay características de línea de "costa".
  • Falta la mayoría de los polígonos de río. En cambio, hay características de línea de "ribera".

Crear los polígonos de ríos que faltan no es gran cosa:

  1. seleccione todas las líneas donde waterway = riverbank.
  2. use la herramienta Polygonize de la caja de herramientas de procesamiento para crear automáticamente polígonos a partir de las áreas encerradas por las líneas de ribera seleccionadas. (Tenga en cuenta que el procesamiento por defecto solo funciona en las funciones seleccionadas, pero esta configuración se puede cambiar en la configuración de procesamiento).

Crear el polígono terrestre (o el polígono marino si lo prefiere por alguna razón) es un poco más complicado ya que la mayoría de las veces la costa no estará cerrada por la sencilla razón de que a menudo estamos cortando un pedazo de tierra del continente principal. . Por lo tanto, antes de que podamos usar las herramientas de poligonalización, tenemos que cerrar el área. Para hacer eso, sugiero seleccionar primero la línea costera usando "other_tags" LIKE '% "natural" => "costa"%' y crear una nueva capa a partir de esta selección (guardar la selección como ...) y editarla (no olvide para habilitar el ajuste!) para agregar líneas para cerrar el área. Luego poligonalizar.

bajo oscuro
fuente
Si está ejecutando una computadora bastante confiable y desea que la etapa ogr2ogr se complete antes de la próxima edad de hielo, agregue --config OGR_SQLITE_SYNCHRONOUS OFF.
scruss
6

Si no le gusta el complemento, obtenga los datos de OSM que necesita con Overpass API y agregue el resultado a QGIS con Add Vector Layer( All filesfiltro de etiquetado ).

QGIS 2.0 utiliza el importador ogr2ogr OSM de GDAL 1.10 que hace un buen trabajo.

El soporte de relación parece ser mejor que el complemento en este momento.

Solo asegúrese de descargar formas y relaciones por completo , es decir, todos los nodos de las formas y todos los miembros de las relaciones, con todos sus nodos.

AndreJ
fuente
4

Sabes, no necesitas poner los datos en SpatialLite. Tu puedes sólo:

  1. Descargue los datos (Vector> OpenStreetMap> Descargar datos, crea un archivo .osm)
  2. Cargue los datos (archivo .osm) como una capa vectorial (Capa> Agregar capa vectorial). Después de seleccionar el archivo, le preguntará qué capas desea agregar (ya que GDAL crea archivos separados para cada tipo: Punto, Línea, MultiLine, MultiPolygon, GeomCollection). Seleccione lo que desea y cárguelo.
Neuhausr
fuente
Esto funciona de alguna manera, pero no parece separar capas basadas en etiquetas. Entonces, básicamente, las carreteras y los ríos terminan en la misma capa de línea, lo que no es realmente útil si desea realizar un análisis de los datos resultantes.
Laurent S
No quedó claro en su pregunta qué estaba haciendo con los datos una vez que se importaron. Por supuesto, puede seleccionar las características que desee de los datos dentro de QGIS. Como se mencionó anteriormente, si sabe que solo desea ciertos datos (y no está en un área demasiado grande), la descarga de datos con Overpass probablemente sería mejor, ya que puede preseleccionar solo ciertas características. Me parece que Overpass Turbo es una forma fácil de usar para desarrollar consultas. Aquí hay un ejemplo de todas las autopistas en el cuadro delimitador: overpass-turbo.eu/s/2VX
neuhausr