> area [name="France"][admin_level="2"]->.zone;
> (
>    node(area.zone)
>    ["name"="Conseil Général"];
> );
> out meta;
>
> //--------------------------------------
>
> area [name="France"][admin_level="2"]->.zone;
> (
>    node(area.zone)
>    ["name"~"^Conseil Général$"];
> );
> out meta;

Un area ne contiens que leur id comme données dans Overpass internalement. C'est garanti qu'elle est toujours de petite taille.

Puis, les deux requêtes sont optimisées très different:

Pour le premier, Overpass va d'abord ramasser tous les ids de nodes qui ont un tag "name"="Conseil Général". C'est parce que même pour les bbox petites c'est aussi vite de charger tous les ids que de chercher un bbox entier.

Pour le deuxième, Overpass va aboutir avec l'area (ou egalement un bbox) parce que il pense que le critère spatial et plus specifiquement que un liste de les ids potentiellement très longue (pense à un requête comme "name"~"." ou "highway"~".", Overpass ne peut pas analyser des regvs).

Il n'y a aucune analyse ni de la nombre de résultats poentiels un de la taille d'un area ou bbox. C'est simplement la difference entre un requête par égalité contre un requête par regv.

Pour forcer filtrer par regv d'abord, on peut ce formuler par deux instructions:

area [name="France"][admin_level="2"]->.zone;
(
   node["name"~"^Conseil Général$"];
   node._(area.zone);
);
out meta;

Ca va toujour s'il n'y a pas trop des résultats - moins d'un mille des résultats.

Roland

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

Répondre à