Extraire noms de rue d'un polygone

Bonjour à tous,

Via Geodatamine il est possible de récupérer chacune des adresses d’une zone géographique. Soit depuis un canton/une région soit un cercle depuis le centre géométrique d’un canton/d’une région.
J’ai juste besoin des noms de rue et cela sur une surface bien précise, pas depuis un cercle et pas depuis un rectangle non plus mais plutôt un polygone.
Je voulais donc savoir si c’était possible actuellement (je n’ai pas l’intention de développer un tel outil).
Au quel cas pourriez vous m’aiguiller dans ma recherche ?

Merci d’avance

Voici une approche avec Overpass Turbo.

Pour commencer, tu as la notion de « bbox » qui permet d’extraire les données selon l’emprise de la carte affichée dans Overpass Turbo.
Donc pour extraire les rues avec un nom, tu peux faire ce genre de requête :

[out:json][timeout:25];
(
  nwr["highway"]["name"]({{bbox}});
);

out body;
>;
out skel qt;

Ce qui donne cela, en interactif : overpass turbo

Après, si le polygone de ta zone de recherche correspond à un objet déjà présent en base de données, une commune par exemple, tu peux faire une recherche basée sur cet objet OSM.

Voici un exemple :

[out:json][timeout:25];
{{geocodeArea:"Saint-Pierre-des-Nids"}}->.searchArea;
(
  nwr["highway"]["name"](area.searchArea);
);

out body;
>;
out skel qt;

en live : overpass turbo

Après, on peut encore aller plus loin en ajoutant les rues dont le nom est dans une adresse.
Par exemple avec

  nwr["addr:street"]({{bbox}});
  relation["type=associatedStreet"]({{bbox}});

Mais ça complique peut-être inutilement les choses, selon ton besoin.

A voir si la solution OverPass peut te convenir ?
(le langage est un peu austère pour un débutant, mais en adaptant quelques requêtes de bases, on peut aller très loin)

Merci pour votre réponse.

Malheureusement, le polygone de ma zone de recherche ne correspond à aucun objet présent en base de données.

Néanmoins, la première requête donne un résultat plus que satisfaisant. Cela serait parfait si je pouvais l’appliquer à un polygone dessiner par mes soins.

Une fois les noms de rue extraits, est-il possible de les compiler dans un tableur excel ?

(désolé si mes questions peuvent paraître vraiment « bateau » mais je ne suis pas un technicien)

Une fois de plus, merci d’avance.

A ma connaissance, OverPass Turbo ne permet pas d’extraire les données selon un polygone saisi manuellement.
Mais il serait possible de
1] faire la requête selon l’emprise de ce polygone
2] exporter le résultat dans un fichier (GeoJson par exemple)
3] filtrer ce résultat par une requête spatiale dans un SIG (QGis par exemple)

Oui, c’est possible.
Tu peux afficher le résultat de ta requête Overpass directement au format CSV (séparé par une virgule ou le caractère de ton choix).
Voici un exemple de requête :

[out:csv(::id,::type,'name';true;',')]
[timeout:25];
{{geocodeArea:"Saint-Pierre-des-Nids"}}->.searchArea;
(
  nwr["highway"]["name"](area.searchArea);
);
out;

en live

1 Like

Et bien je me trompais !
C’est en fait possible, et c’est expliqué ici :
https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_QL#By_polygon_.28poly.29

Mais par contre, ça demande à saisir les coordonnés de chaque nœud de ton polygone.
Je ne sais pas si un outil en ligne permet d’obtenir ce genre de données par clic.
(mais si tu as le polygone sous SIG, des fonctions SIG permettent de convertir le polygone dans ce format textuel)

Génial !

J’ai bidouillé un commande et le résultat semble correspondre.
Y voyez vous une erreur ?
C’est dans le centre ville de Rennes.
J’ai récupérer les coordonnées GPS manuellement.

[out:csv(::type,‹ name ›;true;‹ , ›)]
[timeout:25];
(
nwr[« highway »][« name »](poly:« 48.119805 -1.680356 48.112520 -1.675179 48.112366 -1.686556 »);
);

out body;

;
out skel qt;

Ca m’a l’air correct !
Pour partager du code, n’hésite pas à utiliser la balise spécifique dans l’éditeur du message :

[out:csv(::id,::type,'name','alt_name';true;',')]
[timeout:25];
(
nwr["highway"]["name"](poly:"48.119805 -1.680356 48.112520 -1.675179 48.112366 -1.686556");
);
out;

C’est plus lisible :wink:

J’ai ajouté le alt_name qui permet d’avoir la « Rue de la Soif » : Way: ‪Rue Saint-Michel‬ (‪16784370‬) | OpenStreetMap

Et tu pourrais aussi ajouter les name:br qui sont assez présents je crois :slight_smile:

Dernière question, ensuite je considèrerais ce post comme résolu.

J’ai trouvé quelques outils permettant de récupérer les données gps d’un polygone assez facilement.

https://geojson.io
Map Polygon/Polyline Tool (keene.edu)

Je ne peux pas utiliser SIG.

Le problème c’est que sur ces outils on récupère les données en format « longitude1, latitude1 » mais moi je veux l’inverse pour Overpass.

Connaissez vous des alternatives ?

Merci pour tout

Non, je n’en ai pas connaissance (même si, encore une fois, ça se fait très bien sous SIG).

Du coup, j’ai posé la question sur le dépot Github : Query by polygon (poly) : tool to get polygon syntax ? · Issue #684 · drolbr/Overpass-API · GitHub

Peut-être auront-ils une solution ?

De mémoire, mapOSMatic permet de définir un polygone à la main et de récupérer les noms de rue en csv