Filtrage attributaire des données OSM ???

Bonjour tout le monde,
je dois comparer les données du réseau routier d’OSM avec les données du réseau dont on dispose. Pour ce faire, je décide d’effectuer un filtrage attributaire depuis QGIS 2.2 Valmeria. Il se trouve qu’à chaque fois que je lance un filtrage du genre: “highway” IN ( ‘motorway’,‘motorway_link’,‘primary’,‘primary_link’,‘residential’,‘secondary’,‘secondary_link’,‘tertiary’,‘tertiary_link’,‘trunk’,‘trunk_link’), j’ai soit des éléments en trop soit des éléments en moins. Je cherche ainsi un moyen d’ajuster afin d’obtenir un réseau le plus proche possible de l’autre réseau routier avec lequel je dois comparer le réseau d’OSM.
Par ailleurs, dans le champ other_tags , j’ai remarqué qu’il y 'a beaucoup d’informations pouvant m’aider à avancer telles que la vitesse, le sens entre, la référence de la route entre autres informations et je voudrais les associer à mon filtre. Du coup, je voulais savoir s’il est possible de créer des champs avec les éléments qui sont contenus dans le champs other_tags et est-ce qu’il serait possible de récupérer leurs valeurs des ces éléments ? Sachant que ces valeurs sont elles aussi dans le champs others_tags comme le montre l’exemple ci-dessous.

“int_ref”=>“E 712”,“lanes”=>“2”,“layer”=>“1”,“maxspeed”=>“70”,“oneway”=>“yes”’.

Pour être plus claire, par exemeple dans l’exemple ci-dessous, je voudrais avoir dans ma table les champs suivants référence, maxspeed, oneway renseignés avec les valeurs indiquées. Je pense être claire.

Personnellement, je trouve qu’il est vraiment complexe de travailler avec les données attributaires d’OSM du fait qu’il n y a pas une d’uniformisation de la nomenclature des données.

Merci beaucoup de vos réponses.

Cordialement
BN

Peux-tu indiquer quelle est la nature des données osm que tu utilises avec QGis ?
Fichiers .osm ou équivalents ? Extraits complets, extraits filtrés ?
Base de donnée geospatiale ? de quelle nature ? sous quel schéma ?

Je pense que cela pourra aider à mieux comprendre ta problématique.

Si si il y a uniformisation de la nomenclature (sauf erreurs).
Ce qui complique en fait c’est qu’on a un nombre d’attributs variables pour chaque objet, et ça les SIG “tabulaires” ne savent pas bien le gérer.

Tout dépend comment les données OSM sont restructurées et comment tu y accède. Si tu conserve tout dans une base de données, les requêtes permettent de récupérer ce dont tu as besoin et d’en avoir une version “tabulaire”. Sinon, c’est au bon vouloir de l’outil qui a fait la conversion… et là effectivement, on a rarement ce qu’on veut.

Donc… même question que Ab_Fab…

Pour obtenir la colonne “other_tags”, c’est que c’est un fichier OSM ouvert dans QGIS, avec le driver d’OGR par défaut.

Concernant l’adaptation de la table attributaire pour récupérer d’autres colonnes, il faut adapter le fichier osmconf.ini qui se trouve dans les fichiers de QGIS.
Le mieux est d’utiliser ogr2ogr et utiliser son propre fichier osmconf.ini au lieu de modifier celui par défaut de QGIS.

Je suis d’accord, c’est pas très simple d’ouvrir un fichier OSM dans QGIS, sans mettre les mains dans le cambuis.

Concernant QGIS et OSM, je travaille actuellement sur un plugin qui lit les fichiers OSM, notamment l’Overpass API principalement, qui transforme les données OSM en couche SIG.
La table attributaire peut-être modifié par l’utilisateur :
-soit telles et telles colonnes
-soit toutes les clés OSM disponibles sont transformés en colonnes

Avant tout merci pour vos réponses rapides. Pour répondre à votre question Christian et Ab_Fab, je travaille sur la modélisation des déplacements et je dois comparer les données OSM à d’autres sources afin qu’on puisse déterminer laquelle des données serait mieux à utiliser. Je vous explique ma procédure : j’ai récupérer le fichier de la région Rhône-Alpes depuis Geofabrik au format pbf puis avec Osmosis j’ai filtré et découpé pour ne récupérer que les informations qui m’intéresse et qui sont dans ma zone d’étude en l’occurrence le réseau routier. Ensuite, j’ai ouvert cette donnée sous QGIS 2.2 puis je l’ai converti au format shapefile. J’arrive également à faire des filtre depuis QGIS. Jusque là cava. Je dois maintenant comparer cette donnée avec le réseau routier dont on dispose actuellement à l’agence. Pour ce faire, je décide de passer par des filtres attributaires. L’idée c’est de se rapprocher au maximum possible du réseau dont on dispose actuellement et qui ne provient pas d’OSM. Pour ces filtres, je décide de travailler avec l’attribut highway, name et other_tag présents dans la table de données. Et là, je remarque que dans le champs Other_tags, il y’a beaucoup d’éléments susceptibles de m’intéresser comme la vitesse, la taille du tronçon, la référence etc. Je voudrais maintenant que chacun de ces élément devienne un champ et récupérè leurs valeurs qui sont renseignés dans Other_tags comme ça je pourrait associer mes filtres classiques à d’autres éléments pour mieux nettoyer les données et récupérer au mieux un réseau quasi identique à celui dont on dispose actuellement.
Pour être plus claire, l’exemple ci-dessous donne une idée de ce que je cherche à faire :
Dans le champs other_tags, on a par exemple “bicycle”=>“yes”,“lanes”=>“3”,“maxspeed”=>“50”,“oneway”=>“yes”,“ref”=>“D 1075”’. Est-ce possible que maxspeed devienne un champ et récupère la valeur 50 ainsi de suite pour les autres ? En gros, je veux que les éléments du champ Other_tag deviennent des colonnes et récupère chacun ces valeurs respectifs pour l’ensemble de ma table.
Si je réussi à faire ça, je pourrait mettre plus de critères dans mes filtres. Avez-vous des idées sur comment on pourrait faire ça ?

Merci

OSMment vôtre !
BN

Si tu sais utiliser osmosis en ligne de commande, tu vas pouvoir utiliser ogr2ogr.

Comme dit dans l’autre topic, c’est ogr qui fait cette colonne other_tags.

3 solutions :
-soit tu attends mon plugin QGIS qui sait lire un fichier OSM et “éclate” la colonne other_tags en autant de colonne qu’il faut :wink:
-soit tu modifie le fichier osmconf.ini, celui que utilise QGIS par défaut (fait une recherche de fichier osmconf.ini) et tu l’adapte en rajoutant tes colonnes dedans.
-soit tu utilise ogr2ogr avec ton propre fichier osmconf.ini

Je déconseille la 2ème car tu vas changer par défaut le fichier de QGIS.

Si tu utilise la dernière version d’ogr2ogr (OGR >= 1.11), il y a “all_tags” qui est disponible.
C’est à dire qu’il prend chaque clés d’OSM une par une pour les mettre dans une colonne.

Bonjour à tous et merci pour vos réponses. Gustry, j’ai un fichier au format .osm et je voudrais éclater le champ other_tags pour ne garder que les attributs highway, oneway, maxspeed,lanes, ref, ref_int, width comme colonnes dans ma table de données au lieu de les avoir tous dans le champ Other_tags. C’est très bien l’initiative de créer un plugin qui permet de faire ça mais je suis contraint par le temps et malheureusement je ne pourrai attendre la sortie de ton greffon. Du coup, je pense que je suis obligé de passer par OGR mais là je bloque complétement la dessus. Où est-ce que je pourrai télécharger la dernière version d’OGR ? Comment l’installer ? Je sais que ça fonctionne en ligne de commande comme Osmosis mais comment ça marche concrètement ? Où est-ce que je pourrai trouver le fichier osmconf.ini dont tu parles et c’est quoi au juste ? J’en connais pas grand chose d’OGR ni de son fonctionnement.
Merci pour votre aide.

Cordialement.
BN

QGIS s’appuie énormément sur OGR pour la lecture/écriture des formats SIG, GDAL/OGR est donc déjà installé sur ton ordi.

Quel OS utilise-tu ? Quel version de QGIS ? (la 2.4 est sortie ce week-end pour info)
Quelle est la taille de ton fichier OSM ?

Merci beaucoup Gustry, j’ai vraiment besoin qu’on me dépanne pour pouvoir avancer. J’utilise la version 2.2 Valmeria de QGISet la taille de mon fichier osm est de 152 Mo.
Je pourrai te l’envoyer en privé pour que tu vois mieux mon problème. Je viens de télécharger la dernière version de GDAL depuis ce site : http://www.osgeo.org/node/1442 mais je ne sais pas quoi en faire.

Merci encore !

Non, GDAL est déjà installé sur ton PC.
J’imagine que tu es sous Windows ?

Dans ton menu QGIS de windows, ouvre “osgeo4w”. Tu vas obtenir une console.
Dedans, tu peux taper ogrinfo --version, donne-nous ta version d’OGR.

Tu vas certainement avoir 1.10.
Du coup, prends un fichier osmconf.ini, celui par défaut sur ton PC :
http://svn.osgeo.org/gdal/trunk/gdal/data/osmconf.ini

Tu vois une section [lines] avec la liste des clés OSM qui sont transformés en colonnes, ajoute les colonnes manquantes.

Puis :

ogr2ogr -s_srs EPSG:4326 -t_srs EPSG:2154 -f "ESRI Shapefile" highway.shp TON_FICHIER.osm -sql "SELECT * FROM lines WHERE highway IS NOT NULL" --config OSM_USE_CUSTOM_INDEXING NO --config OSM_CONFIG_FILE TON_FICHIER_OSMCONF.ini

Cette commande te permet de ne sélectionner que les highway, de faire une reprojection de WGS84 en 2154 et d’obtenir un shapefile.

Re-bonjour Étienne,
effectivement, j’ai un console et en tapant la ligne de code ogrinfo --version, je reçois le message ogrinfo n’est pas reconnu comme une variable interne ou externe mais au dessus la version de Gdal y est marquée c’est la 1.10.1.

Tu peux quand même essayer la commande ogr2ogr ci-dessus.
Peut-être sans le “–config OSM_CONFIG_FILE TON_FICHIER_OSMCONF.ini” pour voir si la commande fonctionne.

En essayant la commande suivante : ogr2ogr -s_srs EPSG:4326 -t_srs EPSG:2154 -f “ESRI Shapefile” highway.shp Metro.osm -sql “SELECT * FROM lines WHERE highway IS NOT NULL” --config OSM_USE_CUSTOM_INDEXING NO , je reçois comme message : unable to open datasource ‘tester.osm’ with the following drivers. Dans la liste des drivers, osm n’y est pas. Peux-tu m’envoyer une version d’OGR qui prend en compte le format osm et me dire comment l’installer si possible. Est-ce que t’es parvenu avec le fichier osm que je t’ai envoyé à sortir les tags dans other_tags comme colonnes. Si oui, dis-moi comment tu as fait. Merci beaucoup pour ton aide.

Pour gdal/ogr… le mieux est d’aller (comme toujours) sur le site d’origine.
On y trouve des binaires directement sur http://trac.osgeo.org/gdal/wiki/DownloadingGdalBinaries

Salut les gars,
bonne nouvelle, enfin j’ai la solution pour décomposer les attributs contenus dans other_tags en plusieurs colonnes avec l’aide de Maxime Résibois que je remercie beaucoup au passage. En attendant la sortie du plugin QGIS qu’est en train de développer Étienne (Gustry), je mettrai en ligne la méthodologie que j’ai utilisé avec Maxime pour éclater le champ other_tags en plusieurs colonnes. Merci beaucoup aussi à vous deux Cquest et Étienne.

Cordialement et bien des choses à vous tous.

Bathie