Extraire rues à partir d'un .osm

Bonjour à tous,
afin de faire fonctionner l’outil de recherche offline sur l’appli java pour mobile Mgmaps, je cherche un moyen d’extraire les noms de rues à partir d’un fichier .osm. S’il vous plaît, auriez-vous une idée de script sur la chose (ou bien avec JOSM, je ne sais pas trop) ?

Le fichier en question :
http://www.2shared.com/file/IG5biI4H/map.html

Merci pour vos suggestions :wink:

Edit : ok j’ai trouvé un moyen en utilisant les expressions régulières de Notepad++, j’ai pu marquer les lignes désirées, puis supprimer les lignes non marquées, et enfin les balises qui entouraient les noms de rue :slight_smile:

Si des gens veulent le détail de la manip, qu’ils me le demandent :smiley:

Juste pour indiquer une solution sans doute plus performante, plus rapide mais aussi bien plus complexe à mettre en oeuvre :

  • Importer ton fichier osm dans une base de données PostGIS avec l’outil osm2pgsql ou osmosis (voir wiki de openstreetmap)
  • Faire une requête SQL du genre “SELECT name from rues where highway=‘residential’”

Si ton besoin n’est que de le faire une seule fois, pour une seule zone, ta technique est sans doute le meilleur compromis, mais tu veux pouvoir le refaire régulièrement, ou sur d’autres zones, je recommande l’import dans une base de donnée

Oulah, merci de ton conseil avisé; mais je n’ai pas trop l’envie de me mettre au sql, je ne suis qu’un modeste graphiste moi :blush:

Cela dit je pensais aussi à importer cet osm dans JOSM, toujours pour en extraire les noms de rue uniquement, si cela est possible.

Au final, je suis toujours bloqué à la dernière étape : Mgmaps ne reconnaît pas la base de données générée par OfflineBot, mais ceci est une autre histoire.

je pense que sly parle de la “recherche” via josm puis tu colle dans un nouveau calque que tu enregistre… pas besoin de s’y connaitre en manipulations sql

Salut

On peut aussi extraire les rues directement depuis la base de données OSM avec Overpass-API.

Pour limiter le contour de la requête il y a : on ajoute l’ID de la relation au nombre (magique) 3600000000.
Ce qui donne par exemple pour Montreuil en Touraine :

<osm-script >
<!--
http://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL

Montreuil-en-Touraine
Relation : 171408
http://www.openstreetmap.org/relation/171408

area-query: relation id + 3600000000
-->
  <union>
	<query type="way">
		<has-kv k="highway" />
		<has-kv k="name" />
		<area-query ref="3600171408"/>
	</query>
   </union>
  <print mode="meta"/>
</osm-script>

Directement sur Overpass-Turbo: http://overpass-turbo.eu/s/iaS

Il n’est plus nécessaire de se prendre la tête avec le numéro de relation…

http://overpass-turbo.eu/s/ibF

[out:json][timeout:25];
{{geocodeArea:montreuil-en-touraine}}->.searchArea;
way["highway"]["name"](area.searchArea);
out body;
>;
out skel qt;

On peut même utiliser le “wizard” avec tout simplement: “highway=* in montreuil-en-touraine”

Avec le wizard, c’est plus propre, on a toutes les voies de la commune.

Si tu veux toutes les voies, il suffit de retirer le [“name”]

Plus propre ou pas, ça dépend de ce qu’on veut obtenir… autre truc possible avec overpass, la requête qui sort directement un CSV.