Am Mittwoch, 2. Oktober 2013, 23:36:49 schrieb Christian Quest:
> Si on indique une bbox, overpass passera en revue tout les objets dans
> cette bbox sans pouvoir tirer partie de ses index.
> Si on utilise seulement un tag, overpass utilise l'index sur ce tag pour
> trouver les objets correspondants qui si ils sont peu nombreux donneront le
> résultat très rapidement.

Je voudrais adjouter quelque détails:

Au prémier, on peut forcer overpass d'utiliser ses indexes dans l'ordre qui 
convient. Regardons encore un fois le requête: 

> way
>   ["power"="sub_station"]
>   ["operator"="RTE"]
>   (41.333740, -5.140600, 51.089062, 9.559320);
> (._;>;);
> out body;

Si on écrit

way
  ["power"="sub_station"]
  ["operator"="RTE"];
way
  ._
  (41.333740, -5.140600, 51.089062, 9.559320);
(._;>;);
out body;

on enforce overpass d'amasser au premier tous les ways avec les deux tags, 
puis les filtrer pour le bbox. Les deux requêtes ont le méme résultat, mais la 
deuxieme est plus vite.

Plus compliqué, c'est plus vite à overpass-api.de depuis une heure, parce-que 
je viens de corriger un bogue qui à ralentisse tous les requêtes avec grand 
bbox, mais n'a pas changé les résultat (et pour ça a été jamais trouvé par des 
testes).

> overpass n'a pas la puissance (relative) du query planner de postgres qui
> va tenter d'exploiter le meilleur index et la meilleure méthode en fonction
> de la requête et des données (via des statistiques).

Un "query planner" ne serais pas un grande aide ici, parce-que il n'y a pas 
beaucoup des indexes pour choisir dans overpass. Au contraire, il faut 
seulement connâitre en avance combien des objets sont dans un bbox 
particulière. Si on connâit ça, on peut compter si suivre des objets 
individuel ou lire tous les objets au bbox et plus vite.

Il voire existe le code pour compter des résultat. Mais je prefère faire des 
testes nombreux avant d'integrer ce code, parce-que avoir toujours les 
résultats corrects est plus important que faire les requêtes plus vite. Ce 
code n'est pas encore bien testé.

On va gangner en plus si on utilise les deux indexes géographiques (de bbox et 
des le objets trouvés) en parallel. C'est une chance pour gagner vitesse dans 
des versions subséquentes. Au moment, j'implemente à overpass de stocker aussi 
l'histoire d'OSM. Ca va simplifier de retrouver des objects supprimer et 
également de suivre des changes au base des donées. Mais parce-que c'est un 
grand étape, j'ai repousse tous les autres changes.

En totale, dans quelque mois les deux requêtes seront également vite, mais au 
moment on devrait preferer le deuxième.

Roland


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

Répondre à