fix(extent): IGNGPF-2745 optimize extent computing
Quelques précisions sur les modifications prévues pour optimiser les calculs:
- on découpe des sous-ensembles tant qu'il y a des données qui intersectent la bbox courante
- le point d'arrêt est le nombre de bbox générées : on l'a mis à 500 par défaut, sachant que plus ce paramètre est grand, plus l'extent est détaillée
- à la fin on fait une union des bbox générées pour représenter l'extent des données
- on fait tourner le calcul directement sur le schéma en entier : l'algorithme fait un parcours des tables qui sont dans le schéma => du coup, on supprime la fonction
get_table_extent
de la classePgDatabaseInspector
qui n'est plus utilisée.
Les tests unitaires ont soulevé 2 cas particuliers:
- le cas où il n'y a pas de données (cf.
test_no_data
) => Ca peut tourner à l'infini tant qu'on a pas trouvé de données qui intersecte la bbox - le cas où les données sont 2 points (cf. test_import_data) => il y a moins d'objets que de bbox à générer (2 < 500) => On va prendre trop de temps à redécouper l'espace le temps de trouver ces 2 objets.
Dans le premier cas, on sort une extent vide, et dans le deuxième cas on ressort l'extent calculée sur l'enveloppe de chaque objet après les avoir "bufferisés" de 100 mètres.
Modification effectuée par Quy Thy Truong