Open jbrieuclp opened 3 years ago
C'est sur que si on en a beaucoup cela devient assez contre productif de dupliquer la géométrie des zonages. La question que l'on peut se poser est pourquoi il y a tant de données non précises et toute la question de dégrader les données avant de les partager.
Dans tous les cas, si l'on fait cela, ça rendra l'usage de la synthèse plus compliqué et un peu moins lisible car parfois on a la géométrie directement dans la table et parfois il faudra aller la chercher dans une autre.
Quand ils utilisent directement la BDD les utilisateurs ont l'habitude de requêtes directement dans la Synthèse et là il faudra qu'ils fassent attention à ne pas oublier des géométries.
Si on fait cela, je pense qu'il faudra proposer une vue qui remet justement à plat la synthèse avec une géométrie pour chaque ligne, pour en faciliter l'usage.
Il y aura aussi à répercuter ce changement dans le module Export qui fournit une vue par défaut basée sur la synthèse.
Je ne vois pas d'effet de bord, si ce n'est d'un peu compliqué l'affichage des données floutées dans la synthese. Mais je suis d'accord sur le fond pour la cohérence de la BDD
Oui les éventuels effets de bord ne sont pas dans Synthèse où on maîtrise les choses, mais plutôt pour ceux qui utiliseraient la Synthèse de leur GN dans d'autres outils (Lizmap, Redash, PGAdmin...) qui n'auront pas toutes les géométries si ils font un SELECT * FROM gn_synthese.synthese
.
Exact il y a aussi les vues par défaut du module d'export !
Je déterre ce ticket : après recherches, outre quelques échanges sur le ticket ci-dessus, j'ai l'impression qu'il n'y a pas eu d'avancés. Est-ce qu'il est envisagé de réellement utiliser ce champ pour optimiser le stockage en BDD ou pas ? De mon côté j'y verrais de gros avantages... Merci d'avance pour les (éventuelles) nouvelles.
Dans la requête qui récupère les données pour le module validation il y a le critère the_geom_4326 IS NOT NULL
qui n'est actuellement pas débrayable via paramétrage... Il y a peut-être d'autres modules ou c'est le même topo.
D'une manière générale je pense qu'il est indiscutable que la duplication des geom est un vrai soucis. Les chiffres que donnent @jbrieuclp sont très parlants. En terme de perf, c'est potentiellement un vrai pb aussi.
Il y a plusieurs pistes avec avantages et inconvénients évoqués dans cette issue mais il me semble qu'il y a une piste qui n'est pas abordée : celle d'une table des geométries, la plus transversale possible. Dans l'absolu et de manière totalement théorique, qq chose comme gn_commons.all_geoms
.
Ensuite, dans tous les autres schémas et tables pr_occtax.t_releves_occtax
, gn_synthese.synthese
, et pourquoi pas ref_geo.l_areas
, une simple colonne id_geom
en clé étrangère de gn_commons.all_geoms.id_geom
.
Voir si besoin de faire des types de geom pour filtrer et améliorer certaines jointures
Une solution intermédiaire et plus simple consisterait à adopter cette approche uniquement en synthèse car c'est principalement la synthèse qui génère ces duplications ; avec une table gn_syntese.t_geoms
C'est une approche très conceptuelle et ce n'est pas moi qui vais faire les dev mais ça ouvre beaucoup d'avantages :
Coté inconvénients, il y en a aussi
En tout cas, cette approche me semble moins casse-gueule que de gérer les 2 cas de géoréférencement ou rattachement pour les geoms d'une même table mais situés selon les cas dans la table ou hors de la table.
Ca me semble être une grosse grosse évolution. Peut-être dans une V3 ?
Salut, Je veux faire suite à #867 et mieux gérer la duplication des géométries de l_areas dans la synthèse. Si je prend l'exemple de ma BD, j'ai actuellement 1 530 902 données en synthèse dont 181 265 possédant une info de
id_area_attachement
.Ma table synthèse pèse 9 196MB au total. Là-dedans le stockage des géométries dans le champ
the_geom_4326
de mes 181 265 données avecid_area_attachment
prend 5 824MB. Pour les 1 349 637 autres données localisées au point, ligne ou polygone le stockage des géométries prend 58MB. C'est donc beaucoup trop pour des géométries qui sont déjà stockées dans une table de référence.Du coup que pensez-vous de ces propositions :
the_geom_4326 IS NOT NULL AND id_area_attachment IS NULL
) ou soit un rattachement à l_areas (the_geom_4326 IS NULL AND id_area_attachment IS NOT NULL
)tri_update_cor_area_synthese
pour qu'il prenne en compte les données rattachées àl_areas
gn_synthese.v_synthese_for_web_app
pour intégrer une jointure enLEFT JOIN
avecl_areas
et servir les différents champs géométriques enCOALESCE(synthese.the_geom_4326, l_areas.geom)
(en prenant soin de faire attention aux projections)gn_synthese.v_synthese_for_export
gn_commons.v_synthese_validation_forwebapp
Côté applicatif j'ai trouvé une utilisation de la class
Synthese(DB.Model)
au niveau du fichier routes.py du modulegn_meta
pour la fonctionget_acquisition_framework_bbox
et au niveau du fichier route.py du modulegn_synthese
pour la fonctionget_bbox
(URL "/observations_bbox") Pour ces 2 cas je pense qu'il est envisageable d'aller taper sur le ModelVSyntheseForWebApp
de la vuegn_synthese.v_synthese_for_web_app
?Je vais faire ces modifs sur ma BD et je pourrais proposer un script de modification. Après, est-ce qu'il peut y avoir des effets de bord sur des cas non listés au-dessus, dans d'autres modules, qui serait à prendre en compte ?