Chargement des données OpenStreetMap dans QGIS?

36

Dans QGIS 1.8, j’utilisais le plug-in openstreetmap pour demander des données au serveur ou ouvrir un fichier XML .osm, qui produisait 3 couches (polygones, polylignes et points) dans QGIS.

C’était génial (c’est le bogue 64 bits qui affecte fortement la zone récemment cartographiée sur laquelle je travaille), mais comment puis-je le faire dans QGIS 2.x?

Je ne trouve pas de documentation mise à jour à ce sujet.

Dans le menu vectoriel, j'ai essayé d'importer depuis des serveurs osm. Je reçois un fichier .osm, mais je suis bloqué. Il existe une option de menu permettant de charger un fichier XML, mais elle génère une base de données spatialite, qui ne contient apparemment que des tables non géométriques lorsque j'essaie de l'ajouter en tant que couche spatialite. Si j'ouvre la table attributaire, je peux voir les identifiants de nœud, les chemins, etc., mais je ne vois pas comment les utiliser.

J'ai également essayé d'ajouter une couche vectorielle à partir d'un fichier XML .osm. Je reçois une fenêtre gpsbabel qui ne montre rien, puis finalement un message de source de données invalide dans QGIS.

Laurent S
la source
2
Tom, j'ai écrit des instructions pas à pas pour obtenir les données OSM dans un QGIS. J'espère que c'est simple à suivre pour les débutants. qgistutorials.com/fr/docs/downloading_osm_data.html
Spots spatiaux
Voici un style décent (avec de belles instructions de configuration): github.com/yannos/Beautiful_OSM_in_QGIS Il est destiné à PostGIS (pas Spatialite).
kontextify
Bien que ce lien puisse répondre à la question, il est préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien pour référence. Les réponses avec lien uniquement peuvent devenir non valides si la page liée est modifiée. - De l'avis
csk

Réponses:

40

Mise à jour pour QGIS 3.x : l'ancien importateur OSM de QGIS 2 a été abandonné dans QGIS 3 en raison de nombreux bogues non résolus. Le plugin QuickOSM permet également de lire les fichiers osm raw. Vous pouvez utiliser le calque utilisateur - Ajouter un calque - Ajouter un calque vectoriel. Dans ce cas, les données OSM sont ouvertes avec GDAL, comme indiqué par http://gdal.org/drv_osm.html


Dans QGIS 2.x , il y a 3 étapes impliquées

  1. Obtenir un fichier OSM, vous pouvez l’obtenir en utilisant josm ou overpass ou n’importe quelle autre source. Ce doit être un xml valide. Vous pouvez également le télécharger depuis le menu Vecteur qgis > OpenStreetMap> Télécharger les données OSM , mais parfois, il ne donne pas de résultat. Je recommanderais d'utiliser turbo overpass .
  2. Vecteur> OpenStreetMap> Importer la topologie à partir de XML , cela, comme vous l'avez dit, produira une base de données spatialite avec des tables non géométriques. Je pense que c'est la topologie.
  3. Enfin, vous pouvez obtenir les données par vecteur> OpenStreetMap> Exporter la topologie vers Spatialite . Ici, vous devez donner le fichier base de données créé ci-dessus et, tout comme dans qgis 1.8, vous aurez la possibilité de choisir des points, des lignes ou des polygones . En dessous de la section balises exportées , vous pouvez charger toutes les balises contenues dans le fichier et sélectionner uniquement celles dont vous avez besoin. Ceci est une fonctionnalité supplémentaire que dans 1.8.

La couche est ajoutée à la carte. Si vous voulez tous les nœuds, vous pouvez répéter l'étape 3 avec d'autres options.

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

néogeomat
la source
4
Cela semble incroyablement compliqué, mais cela fonctionne. Par souci de clarté, après l’étape 3, vous devez toujours ajouter un calque spatialite, vous connecter à la base de données que vous avez créée et choisir le ou les calques créés à l’étape 3 pour obtenir le résultat final. Merci de votre aide!
Laurent S
Pour moi, les calques ont été automatiquement créés et ajoutés. La connexion à la base de données a été établie à l'étape 2 (sauf si vous l'avez décochée).
AndreJ
15

J'ai trouvé très pénible de télécharger des données OSM à l'aide du plug-in et de passer en revue les requêtes d'importation et d'exportation. C'est pourquoi j'ai écrit une solution différente: http://anitagraser.com/2014/05/31/a-guide-to-googlemaps-like-maps-with-osm-in-qgis/

Sommaire:

Les fichiers OSM bruts peuvent être très volumineux. C'est pourquoi il est nettement préférable de télécharger le format binaire compressé .pbf au lieu du format XML .osm. En tant que source de téléchargement, je recommanderais Geofabrik .

Pour la première étape de prétraitement: extraire la zone d'intérêt, nous pouvons utiliser l'osmose:

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

Bien que QGIS puisse également charger des fichiers .osm, j'ai constaté que les performances et l'accès aux attributs étaient considérablement améliorés si le fichier .osm était converti en spatialite.

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

Dans QGIS, vous pouvez charger les points, les lignes et les multipolygones à l'aide de l'option Ajouter une couche SpatiaLite. Lorsque nous chargeons les tables spatialite, certains problèmes se posent:

  • Il n'y a pas de polygone de terre. Au lieu de cela, il y a des traits linéaires «littoraux».
  • La plupart des polygones de rivière sont manquants. Au lieu de cela, il y a des traits de ligne «riverbank».

Créer les polygones fluviaux manquants n’a rien de grave:

  1. sélectionnez toutes les lignes où voie navigable = rive.
  2. Utilisez l'outil Polygoniser de la boîte à outils de traitement pour créer automatiquement des polygones à partir des zones délimitées par les lignes de rive sélectionnées. (Notez que le traitement par défaut ne concerne que les fonctions sélectionnées, mais ce paramètre peut être modifié dans les paramètres de traitement.)

Créer un polygone terrestre (ou un polygone marin si vous préférez cela pour une raison quelconque) est un peu plus complexe, car la plupart du temps, le littoral ne sera pas fermé pour la simple raison que nous coupons souvent un morceau de terre du continent principal. . Par conséquent, avant de pouvoir utiliser les outils Polygonize, nous devons fermer la zone. Pour ce faire, je suggère d’abord de sélectionner le trait de côte en utilisant "other_tags" LIKE '% "natural" => "littoral"%' et de créer un nouveau calque à partir de cette sélection (enregistrer la sélection sous ...) et de le modifier (ne pas oublier. pour activer la capture!) pour ajouter des lignes pour fermer la zone. Puis polygoniser.

sous-bois
la source
Si vous utilisez un ordinateur assez fiable et que vous voulez que l'étape ogr2ogr se termine avant la prochaine ère glaciaire, ajoutez --config OGR_SQLITE_SYNCHRONOUS OFF.
scruss
6

Si vous n'aimez pas le plug-in, extrayez les données OSM dont vous avez besoin avec Overpass API et ajoutez le résultat à QGIS avec Add Vector Layer( All filesfiltre d' étiquetage ).

QGIS 2.0 utilise l’importateur OSM ogr2ogr de GDAL 1.10, qui fait du bon travail.

Le support relationnel semble être meilleur que le plugin pour le moment.

Assurez-vous simplement de télécharger complètement les chemins et les relations , c'est-à-dire tous les nœuds des chemins et tous les membres des relations avec tous leurs nœuds.

AndreJ
la source
4

Vous savez, vous n'avez pas besoin de mettre les données dans SpatialLite. Vous pouvez simplement:

  1. Téléchargez les données (Vector> OpenStreetMap> Télécharger les données, crée un fichier .osm)
  2. Chargez les données (fichier .osm) en tant que calque vectoriel (Calque> Ajouter un calque vectoriel). Une fois que vous avez sélectionné le fichier, il vous demandera quelles couches vous souhaitez ajouter (car GDAL crée des fichiers distincts pour chaque type: Point, Ligne, Ligne multiple, MultiPolygon, GeomCollection). Sélectionnez ce que vous voulez et chargez-le.
Neuhausr
la source
Cela fonctionne d'une certaine manière, mais il ne semble pas séparer les calques en fonction des balises. Donc, fondamentalement, les routes et les rivières se retrouvent dans la même couche de lignes, ce qui n’est pas très utile si vous souhaitez analyser les données obtenues.
Laurent S
Votre question n’indiquait pas clairement ce que vous faisiez avec les données une fois celles-ci importées. Vous pouvez bien sûr sélectionner les fonctionnalités de votre choix parmi les données de QGIS. Comme mentionné ci-dessus, si vous savez que vous ne voulez que certaines données (et que cela ne se trouve pas dans une zone trop étendue), le téléchargement de données avec Overpass serait probablement préférable, car vous pouvez présélectionner certaines fonctionnalités uniquement. Je trouve que Overpass Turbo est un moyen convivial de développer des requêtes. Voici un exemple de toutes les routes dans la boîte englobante: overpass-turbo.eu/s/2VX
neuhausr