Le 14/05/2014 09:04, Mides a écrit :
> J'ai un peu de mal à appréhender cette API,  comme par exemple cette
> syntaxe : 
> 
> area [name="France"][admin_level="2"]->.zone;
> 
> je pensais qu'à ce niveau là, je ne remontais pas une quantité
> phénoménale de données mais juste le polygone d'emprise. 

La France administrative de niveau 2 correspond à la France
métropolitaine + DOM/TOM et autres territoires.
Autant dire que si le polygone d'emprise est un simple rectangle, il
couvre quasiment la terre entière ! et mieux vaut donc s'en passer.

Si tu ne veut que la France métropolitaine, fait bien attention a ne
prendre qu'elle :
http://nominatim.openstreetmap.org/details.php?place_id=98156803
http://www.openstreetmap.org/relation/1403916
name = France métropolitaine
admin_level = 3

> Quant à area je ne trouve pas spécialement de doc ici,  et je suis
> preneur si plus d'infos :
>  http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide
> 
> Sinon, effectivement si je priorise la requête : 
> 
> node["name"~"^Toulouse"](area.zone);   
> 
> mais comment lui dire ensuite d'appliquer un filtre area
> 
> Michel
> 
> 
> Le 14 mai 2014 04:46, Philippe Verdy <verd...@wanadoo.fr
> <mailto:verd...@wanadoo.fr>> a écrit :
> 
>     Je pense plutôt que c'est le premier filtre de la seconde requête
>     (node(zone)à qui n'est pas assez sélectif. La "zone" (le polygone de
>     la France adminstrative de niveaus 2) est gigantesque et contient
>     des millions de noeuds.
> 
>     La première requête (vers la variable "zone" est relativelent
>     sélective car elle recherche des polygones ayant deux attributs très
>     sélectifs (name=France déjà, affiné par admin_level=2 pour les
>     homonymes peu nombreux): à priori zone ne contient qu'un polygone
>     (assez complexe malgré tout avec quelques milliers de sommets
>     essentiellement sur les frontières terrestres, car en mer les
>     limites des eaux territoriales ne sont pas très compliquées, mais
>     son on choisissait la limite côtière alors là ce sont près de 200
>     000 noeuds, peut-etre plus maintenant avec les cotes de plus en plus
>     affinées et les ilots).
> 
>     Il vaut mieux faire des requêtes en commençant par le filtre le plus
>     sélectif; celui sur le name élimine quasiment tout, et ne crée donc
>     pas une table temporaire énorme, le filtre sur la zone France est à
>     appliquer après sur ce qui reste (s'il reste quelquechose).
> 
>     Overpass n'a toujours pas d'optimiseur statistique des plans
>     d'exécutions qu'il crée en interne (il ne sait pas évaluer la
>     sélectivité des requêtes: même s'il y a des index primaires
>     utilisables, ça peut être encore inefficace si la sélectivité de la
>     requête est faible, et c'est pire si cela doit passer par des index
>     secondaires n'incluant pas d'autres données nécessaires sur des
>     éléments non sélectifs) et en stockant des tonne de données temporaires.
> 
>     Assez vite il tombe sur les limites de quota (en volume, ou encore
>     plus en nombre d'I/O qui sollicite beaucoup les disques avec des
>     caches peu efficaces, et en fin de compte aboutissant à dépasser le
>     quota de temps d'exécution mais avec cette requête-là on doit tomber
>     sur tous ces quotas en même temps, mais impossible ici de dire
>     lequel tombe en premier).
> 
>     De fait on doit penser à une optimisation manuelle de ses requêtes
>     en évaluant soi-même quelles quantités de données sont séletionnées
>     à chaqué étape.
> 
>     Donc ici il suffit d'inverser les deux requêtes : filtrer d'abord
>     sur les noeuds ayant ce nom puis sélectionner les points restants
>     dans la zone retenue. La solution sera inversée si la zone est assez
>     petite (ne dépasse pas la limite raisonnable de taille d'une zone
>     restangulaire de téléchargement de JOSM par exemple ; toute la
>     France c'est beaucoup trop gros si on n'a pas déjà effectué une
>     première sélection très sélective).
> 
> 
>     Le 13 mai 2014 21:46, Christian Quest <cqu...@openstreetmap.fr
>     <mailto:cqu...@openstreetmap.fr>> a écrit :
> 
>         Je pense que c'est la premier area qui cause un dépassement côté
>         serveur... et pas que le serveur t'a envoyé 513MB de data ;)
>         Sur une plus petite zone (Monaco) ça répond bien qu'il n'a rien
>         trouvé.
> 
> 
>         Le 13 mai 2014 20:55, Mides <mides....@gmail.com
>         <mailto:mides....@gmail.com>> a écrit :
> 
>             Bonsoir, 
> 
>             À cette requête, pour test, sensée trouver toutes les tags
>             name débutants par cette chaine, "trzetgsqgdfgqsdaze " cette
>             réponse m’est retournée, et pourtant je ne pense pas qu’il y
>             ait beaucoup de tags name où l'on trouve ce mot. 
> 
>             Assez étonnant comme résultat.
> 
>             _Requête :_
>             _
>             _
>             area [name="France"][admin_level="2"]->.zone;
>             (
>               node(area.zone)
>               ["name"~"^trzetgsqgdfgqsdaze "];
>             );
>             out skel;
> 
>             _Réponse : _
> 
>             Une erreur est survenue lors de l'exécution de la requête
>             overpass ! Voici ce que l'API overpass a retourné :
>             runtime error: Query run out of memory in "query" at line 4
>             using about 513 MB of RAM.
> 
>             Michel
> 
>             _______________________________________________
>             Talk-fr mailing list
>             Talk-fr@openstreetmap.org <mailto:Talk-fr@openstreetmap.org>
>             https://lists.openstreetmap.org/listinfo/talk-fr
> 
> 
> 
> 
>         -- 
>         Christian Quest - OpenStreetMap France
> 
>         _______________________________________________
>         Talk-fr mailing list
>         Talk-fr@openstreetmap.org <mailto:Talk-fr@openstreetmap.org>
>         https://lists.openstreetmap.org/listinfo/talk-fr
> 
> 
> 
>     _______________________________________________
>     Talk-fr mailing list
>     Talk-fr@openstreetmap.org <mailto:Talk-fr@openstreetmap.org>
>     https://lists.openstreetmap.org/listinfo/talk-fr
> 
> 
> 
> 
> _______________________________________________
> Talk-fr mailing list
> Talk-fr@openstreetmap.org
> https://lists.openstreetmap.org/listinfo/talk-fr
> 


-- 
Christophe Merlet (RedFox)

_______________________________________________
Talk-fr mailing list
Talk-fr@openstreetmap.org
https://lists.openstreetmap.org/listinfo/talk-fr

Répondre à