3liz / QgisCadastrePlugin

A QGIS plugin which helps users to import the french land registry ('cadastre') data into a database. It is meant to ease the use of the data in QGIS by providing search tools and appropriate layer symbology.
GNU General Public License v2.0
61 stars 41 forks source link

Amélioration des performances pour le remplissage de la table geo_batiment_parcelle #246

Open MaelREBOUX opened 4 years ago

MaelREBOUX commented 4 years ago

Nous travaillons sur de bonnes machines (i7, 16 Go de RAM) sous Windows 10 et nous avons noté une régression des temps d'import des données cadastrales depuis l'année dernière. En gros, depuis la version 1.8.0 avec laquelle nous avons traité nos données depuis fin août 2019.

Ci-dessous un tableau qui résume nos tests d'import uniquement des données EDIGEO, sur 10 communes (201 sections, 48500 parcelles, 43200 bâtiments). Nos PostGIS sont les mêmes que l'année dernière (PostgreSQL 11 + PostGIS 2.5).

version plugin version QGIS PostGIS
1.8.0 3.4 275 s
1.8.0 3.10 267 s
1.8.1 3.4 387 s
1.8.1 3.10 380 s
master (fix 240) 3.4 -
master (fix 240) 3.10 372 s
master + fix_196 + fix_221 + majic 2020 3.4 423 s
master + fix_196 + fix_221 + majic 2020 3.10 380 s

On a recommencé 2 x les imports et on obtient à peu près les mêmes valeurs sur 2 ordis différents mais à config équivalente.

Ce qui nous interpelle c'est qu'on prend entre + 40 % et + 50 % de temps de traitement supplémentaire entre la 1.8.1 et la version master actuelle. Nos récents ajouts (PR en attente) ne change pas la donne. Sauf que quand on regarde les commits faits entre la 1.8.0 et l'état actuel de master.

Une idée de la cause de ce ralentissement ?

MaelREBOUX commented 4 years ago

En faisant un git revert e4e98f048b6f10aaad3e4a3689d819c30aec31dc donc en annulant https://github.com/3liz/QgisCadastrePlugin/commit/e4e98f048b6f10aaad3e4a3689d819c30aec31dc on retombe autour des 270 s.

Que fait-on @mdouchin ? Quel était la motivation de ce changement ?

rldhont commented 4 years ago

Le coût de la nouvelle requête est beaucoup plus faible que celui de l'ancienne. Le problème peut provenir de vos index spatiaux pour ST_Centroid(geom) de la couche geo_batiment et geom de la couche geo_parcelle.

mdouchin commented 4 years ago

Je pense que cela dépend fortement du contexte:

Je pense que cela simplifiait aussi les choses : pour savoir quels bâtiment est sur quelle parcelle, il paraissait plus simple de faire une requête spatial plutôt que de faire confiance aux données MAJIC.

Il faudrait faire une matrice de test plus complexe, pour croiser les 3 critères

La version de QGIS importe peu, car ce sont des requêtes SQL qui sont effectuées, donc normalement il ne devrait pas y avoir d'impact.

Le fait d'importer MAJIC ou pas n'importe normalement pas non plus, car dans les 2 types de requête, aucune table MAJIC n'est mobilisée.

Peut-être proposer une option pour basculer de l'un à l'autre, ou en fonction des tests, choisir telle ou telle requête en fonction du type de bdd (postgres via sqlite), du nombre de communes ?

mdouchin commented 4 years ago

Revert effectué via ac6e858e35e3ccabd356153464e258b15e5359eb

Je vais relancer les tests