[OSM-talk-fr] requête Overpass API : recherche de communes avec leur n° INSEE

Samy Mezani samy.mezani at wanadoo.fr
Mar 14 Nov 18:11:48 UTC 2017


Je touche au but mais je n'arrive pas à indiquer les coordonnées 
géographiques des admin_centre.

Pour l'instant ça marche avec ça :

[out:csv(_row;false)][timeout:100];

make out _row = "insee,commune,bourg"; out;

area[name="Bourgogne"]["disused:admin_level"=4]->.bourgogne;

rel(area.bourgogne)[boundary=administrative]["admin_level"=8]->.communes;

foreach.communes->.commune(
   node(r.commune:"admin_centre")->.bourg;
   make out _row =
     commune.u(t["ref:INSEE"]) + "," +
     commune.u(t["name"]) + "," +
     bourg.u(t["name"])
     ;
   out geom;
);

Si j'ajoute par exemple la latitude avec ' bourg.u(t[::lat])' dans mon 
"make out", j'obtiens une erreur.

Comment faire ?

Merci

Samy



Le 14/11/2017 à 17:20, Samy Mezani a écrit :
> Merci Adrien,
> 
> Ça me met sur une bonne piste.
> 
> Je vais essayer de formatter avec make out _row que j'ai vu à 
> https://wiki.openstreetmap.org/wiki/Overpass_API/Overpass_API_by_Example#Wiki_table_generator_.28since_0.7.54.29 
> 
> 
> Mais bon, faut déjà comprendre. ;-)
> 
> Merci
> 
> Samy
> 
> Le 14/11/2017 à 17:01, PanierAvide a écrit :
>> Bonjour,
>>
>> Après quelques recherches, j'ai pas trouvé mieux que ça :
>>
>> |[out:csv("ref:INSEE","name",::lat,::lon)][timeout:100];||
>> ||area[name="Bourgogne"]["disused:admin_level"=4]->.bourgogne;||
>> ||rel(area.bourgogne)[boundary=administrative]["admin_level"=8];||
>> ||foreach(||
>> ||  out;||
>> ||  node(r:"admin_centre");||
>> ||  out;||
>> ||);|
>>
>> On récupère les limites communales, et pour chacune on affiche les 
>> infos de la relation, puis sur la ligne suivante les infos du noeud 
>> admin_centre. J'ai pas vu de moyen de mélanger la sortie d'un noeud et 
>> de sa relation. Avec une bonne expression régulière derrière, on doit 
>> pouvoir fusionner les lignes deux à deux, et arriver au résultat 
>> escompté.
>>
>> Cordialement,
>>
>> Adrien.
>>
>>
>> Le 14/11/2017 à 14:49, Samy Mezani a écrit :
>>> Bonjour,
>>>
>>> Je cherche à faire une requête Overpass API pour rechercher les 
>>> communes d'un territoire avec leur "ref:INSEE" et les coordonnées 
>>> géographiques de leur "admin_centre"
>>>
>>> Je suis contraint de rechercher les relations avec "admin_level"=8, 
>>> et non les nodes avec ce tag, car j'ai remarqué que nombre d' 
>>> "admin_centre" communaux n'ont plus de "ref:INSEE" ou ont parfois des 
>>> "ref:FR:INSEE"
>>>
>>> Comment faire pour retourner à la fois les admin_centre avec leurs 
>>> coordonnées, et le "ref:INSEE" et le name de leur relation parente ?
>>>
>>> Pour l'instant j'ai ça, mais ::lat et ::lon sont les centroïdes des 
>>> communes :
>>>
>>>     [out:csv("ref:INSEE","name",::lat,::lon)][timeout:100];
>>>
>>>     area[name="Bourgogne"]["disused:admin_level"=4]->.bourgogne;
>>>
>>>     rel(area.bourgogne)[boundary=administrative]["admin_level"=8];
>>>
>>>     out ;
>>>
>>> Avec ça j'ai bien les coordonnées des "admin_centre" mais je n'ai pas 
>>> le "name" des communes ni toujours le "ref:INSEE" :
>>>
>>>     [out:csv("ref:INSEE","name",::lat,::lon)][timeout:100];
>>>
>>>     area[name="Bourgogne"]["disused:admin_level"=4]->.bourgogne;
>>>
>>>     rel(area.bourgogne)[boundary=administrative]["admin_level"=8]->.communes; 
>>>
>>>
>>>     node(r.communes:"admin_centre");
>>>
>>>     out ;
>>>
>>>
>>> Merci
>>>
>>> Samy
>>>
>>> _______________________________________________
>>> Talk-fr mailing list
>>> Talk-fr at openstreetmap.org
>>> https://lists.openstreetmap.org/listinfo/talk-fr
>>
>>
>>
>> _______________________________________________
>> Talk-fr mailing list
>> Talk-fr at openstreetmap.org
>> https://lists.openstreetmap.org/listinfo/talk-fr
>>
> 
> _______________________________________________
> Talk-fr mailing list
> Talk-fr at openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr




Plus d'informations sur la liste de diffusion Talk-fr