PnX-SI / GeoNature

Application de saisie et de synthèse des observations faune et flore
GNU General Public License v3.0
104 stars 102 forks source link

MCD Synthese #207

Closed camillemonchicourt closed 6 years ago

camillemonchicourt commented 7 years ago

Les principes proposés sont les suivants :

gildeluermoz commented 7 years ago

MERCI DE REPONDRE A CHACUN DES POINTS PAR UN SEUL COMMENTAIRE EN REPRENANT LA DISCUSSION

gildeluermoz commented 7 years ago

Globalement, il faut choisir entre 1/ une synthèse custom GeoNature 2/ une synthèse répondant au mieux à la norme occurrence de taxon.

Je pencherais pour l'option 2.

gildeluermoz commented 7 years ago

_Pour être occurrence de taxon compatible, j'ai conservé les 6 champs du cor_countingcontact : sexe, age, type de dénombrement, objet dénombré et count min et max : A discuter/valider @camillemonchicourt : Ouais je suis pas convaincu par le fait de dupliquer les observations pour chaque dénombrement. Je garderai qu'un effectif total mais pourquoi pas.

Si on souhaite une compatibilité avec l'occurrence de taxon et un modèle de la synthese à plat, on n'a pas trop le choix, il faut respecter la norme donc avoir plusieurs enregistrements en synthese pour l'observation d'un même taxon. Si on ne souhaite pas faire ça, il faut faire un truc un peu tordu : casser le modèle à plat de la synthese et faire une table nn cor_counting_synthese sur le modèle du cor_counting_contact (on devrait le faire pour les communes par exemple), donc pourquoi pas. Et mettre dans la table synthese un total_count; ce qui permet d'utiliser soit la table nn, soit le total_count, soit les 2 selon le besoin. POINT IMPORTANT A TRANCHER RAPIDEMENT ! MERCI

gildeluermoz commented 7 years ago

_Pas de sample_numberproof en synthèse @camillemonchicourt : Et si c'est la synthèse qui est le support des exports SINP, alors on aura plus cette info attendue par le SINP ?

Ok, c'est fait : https://github.com/PnX-SI/GeoNature/commit/7f82aff2f638096eb0c2e3e1dbdc6ec590608cf2

gildeluermoz commented 7 years ago

_Pas de FK pour le idmunicipality (on considère qu'il peut y avoir des données en synthèse sans correspondance dans la table des communes) : A discuter/valider @camillemonchicourt : Je vois pas pourquoi il n'y aurait pas de communes pour certaines observations, mais ça simplifie pour ceux qui sauraient pas le calculer en base ? Et quid des observations avec N communes ? A voir si on garde qu'une dans la SYNTHESE ? En tout cas ça colle avec le principe que la synthèse est plus permissive que les champs des protocoles.

Ce que dit la norme SINP occurrence de taxon : Le rattachement ou le géoréférencement à la commune est OBLIGATOIRE CONDITIONNEL : Il DOIT être fait si aucune autre information (objetGeo, Departement, EspaceNaturel, Maille, MasseDEau) n'est remplie.

En synthese, on aura donc le cas rattachement et le cas géoréférencement. Je propose :

https://github.com/PnX-SI/GeoNature/commit/bb2d80706220b7064dbbbff2d7d77c656e71f375 A voir si c'est utile et si ce n'est pas un doublon avec cor_area_synthese qui contient les communes

gildeluermoz commented 7 years ago

Un seul comment où on concaténera les différents commentaires (relevé et/ou occurence pour le contact par ex) @camillemonchicourt : Oui on avait évoqué ça dans un ticket.

A noter que c'est plus ou moins compatible avec la norme...

gildeluermoz commented 7 years ago

_Une table t_modules (ex bib_sources) permet de faire des références vers les schémas internes à la base pour savoir où sont garées les données sources. A voir si on la renomme t_sources mais l'idée est bien qu'elle soit dans le schema synthese car elle décrit le contenu de la table synthese. Je me demande toujours si elle fait pas doublon avec t_protocoles où on pourrait aussi avoir cette info, non ? Ou alors ça colle pas toujours ... ? @camillemonchicourt : Je ne suis pas sur que le terme MODULES colle bien avec ce que contient cette table et son usage. Je pense que SOURCES parle plus, même si les choses ne sont toujours limpides pour moi entre t_datasets, t_programs, t_protocols et tsources.

Ok pour revenir à t_sources : https://github.com/PnX-SI/GeoNature/commit/aff3720d619c718a9087aec9507f739eee5271ff Pour clarifier :

gildeluermoz commented 7 years ago

_Manque la table synthese.cor_synthese_unitegeo pour faire le lien entre chaque données de la synthèse avec une ou pls (lignes et polygones) unité(s) géographique(s). @camillemonchicourt : Oui et à voir comment on gère ça maintenant qu'on a refgeo

Plusieurs propositions, 1/ lien fixé avec ref_geo.l_grids. Dans ce cas on fige les unités geo en maille. 2/ on supprime l_grids et on met le maillage INPN dans l_areas. 3/ on créé une table vm_unites_geo et chacun met dedans ce qu'il veut (duplication des geom dans la VM lors du refresh mais une seule source à maintenir) 4/ comme la norme occurrence de taxon prévoit un lien de rattachement ou de géoréférencement à différentes unités géographiques (départements, communes, mailles, masse d'eau, espaces protégés), on met toutes ces unités géographiques dans une même table comme prévu dans l_areas et on fait une cor_area_synthese.

Cette proposition 4, la plus ambitieuse mixe les propositions 2 et 3 et reprend le principe de cor_municipality_synthese (id_synthese, id_area, ref_name, ref_version, typeInfoGeo) en instaurant une intersection systématique avec toutes les géométries du ref_geo.l_areas. Dans ce cas, il faut aller jusqu'au bout de la démarche et supprimer l_grids et l_municipalities : on garde l_municipalities_additional que l'on renomme simplement l_municipalities qui serait une fille de l_areas avec une FK id_municipalilty pointant sur id_area et forcement pas de geom puisqu'il serait dans la table l_areas. A voir si on garde une table l_grids pour tout ce qui est calcul à partir des bounds.

Voir un début de mise en œuvre de la proposition 4 : https://github.com/PnX-SI/GeoNature/commit/d8b1f966b2f71ac1ddad9357679728e22bcf3aa2

gildeluermoz commented 7 years ago

_Pas de FK pour le cd_nom (on considère qu'il peut y avoir des données en synthèse sans correspondance dans la table taxonomie.taxref) : A discuter/valider Donc le cd_nom n'a pas de NOT NULL on peut donc créer une observation sans taxon (est-ce que je mets une contrainte pour vérifier que si cd_nom IS NULL alors nom_cite IS NOT NULL ?). Au passage on oubli le id_nom qu'on ambitionne de supprimer : choix important à discuter/valider @camillemonchicourt : A fond pour commencer à se débarasser du id_nom, au moins en ne le remettant pas dans GeoNature. Pas de FK sur le CD_nom ça va dans le sens d'une SYNTHESE permissive mais ça se discute car c'est assez dangereux et peu exploitable. Ceux qui ajoutent leurs propres taxons doivent quand même les mettre dans TAXREF avec un cdnom temporaire type 9999999985, non ?

Ok pour se débarraser du id_nom dans GeoNature2. On peut tenter de mettre une FK dans la synthese mais pas de NOT NULL + la contrainte CHECK IF cd_nom IS NULL THEN nom_cite IS NOT NULL. On a ainsi au moins la garantie de pouvoir identifier le taxon de l'observation. Ceci permet aussi pour ceux qui le souhaite d'ajouter un cd_nom temporaire dans taxonomie.taxref sans que ce soit obligatoire. Sinon on peut aussi mettre un NOT NULL sur nom_cite et l'affaire est réglée sans contrainte CHECK. https://github.com/PnX-SI/GeoNature/commit/0c09a69dc3e4c05200a4f096f38aee7a4bb0b62e

camillemonchicourt commented 6 years ago

Evolutions :

camillemonchicourt commented 6 years ago

Gil a en effet travaillé sur la SYNTHESE :

ANALYSE DU STANDARD OCCURRENCE DE TAXON et de ses correspondances dans GeoNature :

analyse-occtax-synthese

Confrontation du MCD Synthèse au module OccTax :

On ne reporte pas :

Autres : Mise à plat des observateurs au format character : pour le nn on sépare par des virgules.

Pour le moment on met de côté tout ce qui est attribut additionnel.

Questions :

Point de vigilance :

A propos de l’uuid_sinp :

camillemonchicourt commented 6 years ago

MES RÉPONSES :

De manière générale, à terme on va plutôt baser les exports SINP Occurrences de taxons sur la Synthèse car c'est là qu'il y aura nos données agglomérées des différents protocoles. Du coup si il y a des données du standard dans les données OCCTAX mais qu'on ne les reporte pas dans la Synthèse, on ne les remontera pas au SINP.

OK pour les observateurs, je penche aussi pour les mettre en texte dans la synthèse.

Comme il y a un commentaire pour relevé et un pour occurrence, que faut-il faire dans la synthèse. Actuellement il n’y a qu’un commentaire en synthèse.

Dans la synthèse, il faut agglomérer le commentaire du relevé (si il existe) avec le commentaire du taxon.

On a un id_nomenclature_determination_method et un determination_method_as_text.

Je pense que ce n'est pas un bon choix au niveau de OccTax. Je suis pour virer le determination_method_as_text

camillemonchicourt commented 6 years ago

En plus du champs texte "observateurs", on a évoqué le fait d'avoir une table NN ou un champ array avec les ID_roles des observateurs car sinon on ne pourra pas utiliser le CRUVED de portée 1 dans le module Synthèse.

On a aussi parlé d'ajouter la dernière valeur de Validation à plat dans la Synthèse pour en disposer facilement (et permettre d'avoir des infos de validation dans la Synthèse sans les avoir dans la table transversale de Validation, pour des données externes par exemple ?)

TheoLechemia commented 6 years ago

Pour la portée CRUVED 1, il est toujours possible de faire sans table de correspondance. L'utilisateur connecté a un nom et prenom que l'on peut comparé au nom de l'observateur en texte... C'est beaucoup plus bancale par contre. Cependant un utilisateur connecté est forcément dans la table t_roles donc c'est un peu dommage de se priver de cet info. On pourrait imaginer un système mixte, où si on a l'id de l'observateur on le note dans une table de correspondance ou dans un champs de type array, et un champ observateur que l'on rempli systématiquement en texte. Le CRUVED de niveau 1 (assez rare quand même), compose avec ses deux infos. C'est pas idéal, c'est sur

camillemonchicourt commented 6 years ago

Oui si on stocke les id_roles, cela doit être optionnel, car dans la Synthèse, il y a pas mal d'observateurs qui ne seront pas listés dans t_roles. Si on parle là-dessus, je n'utiliserai que ce champs pour le CRUVED portée 1, je ne comparerai pas en plus avec le champs Observateurs texte.

gildeluermoz commented 6 years ago

On est clairement ici sur des choix qui vont fortement influencer les perfs. Identifier les données comprises dans la portée d'un user parmi 1,2,3,4,10 millions de données nécessite une bonne indexation de l'info. Clairement, on mode text, c'est même pas la peine d'y songer.

Comme l'observateur c'est du n-n, on a trois choix :

Pour les 2 dernières options, je m'enquière de savoir si le sujet des conséquences de l'une ou l'autre des 2 options a déjà été traité sur le net. Sinon il faudra faire des tests.

camillemonchicourt commented 6 years ago

Oui clairement pour les données qui n'ont pas d'id_role, elles ne remonteront pas pour les utilisateurs ayant un CRUVED de portée 1. C'est pas un problème.

camillemonchicourt commented 6 years ago

Ça fait plaisir de fermer un tel ticket !

Le travail a été avancé et une première stable de la Synthèse est en place : https://github.com/PnX-SI/GeoNature/blob/develop/data/core/synthese.sql#L91-L151

Les différents points mentionnés dans ce ticket ont été traités, voici des compléments sur ce qui a été fait sur les points en suspens :

Calcul de la sensibilité non intégré pour le moment, à traiter plus tard dans un ticket dédié : https://github.com/PnX-SI/GeoNature/issues/413