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. 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> 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> 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> 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 >>> https://lists.openstreetmap.org/listinfo/talk-fr >>> >>> >> >> >> -- >> Christian Quest - OpenStreetMap France >> >> _______________________________________________ >> Talk-fr mailing list >> 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 > >
_______________________________________________ Talk-fr mailing list Talk-fr@openstreetmap.org https://lists.openstreetmap.org/listinfo/talk-fr