IGNF / trainminator

Outil de labellisation développé en interne à l'IGN/DSI/(SDM et SIMV)
GNU General Public License v3.0
4 stars 0 forks source link

Gardes fous #31

Closed samysung closed 6 months ago

samysung commented 6 months ago

réponse à issue #1 , ajouter des gardes fous:

[x] saisie impossible si pas de choix de nomenclature. [x] changement de nomenclature impossible pendant saisie. [x] demarrage saisie par start. [x] fin saisie par stop. [x] au start activation des boutons qui permettent la saisie. [x] au stop deactivation des boutons qui permettaient la saisie [x] entre start and stop pas de changement de nomenclature possible. [x] bloc selection type geometrie (point, ligne, polygon...): mutuellement exclusif. [x] bloc selection type action : mutuellement exclusif. [x] selection type geometrie: pas de changement de type de geom pendant saisie de la geometrie de selection (on ne transforme pas des points en ligne par exemple) [x] pas de fill pyramid si aucune saisie. [x] Ne pas sélectionner des géométries dans des niveaux différents (mais finir la saisie avant de choisir des géométries dans un autre niveau) [ ] Stocker le dictionnaire de parents/enfants et empêcher le recalcul de celui-ci lorsque l'on appuie sur le bouton stop puis le bouton start. Dernier point trop complexe à faire, la principale raison étant que le module featuremanager utilise des couches QgisLayers, lesquelles sont non sérialisables en python, car elles sont de simples encapsulations d'objets C++. Ce qui implique à priori un travail de modification dans l'approche du FeatureManager (point à méditer, pas de certitudes, mais pas le temps de creuser plus loin).

CelestinHuet commented 6 months ago

Concernant le dernier point (Stocker le dictionnaire de parents/enfants), ce devrait faire l'objet d'un ticket à part. Mais je pense que stocker dans un fichier json les identifiants des enfants dans les couches shapefiles devrait suffire

samysung commented 6 months ago

Concernant le dernier point (Stocker le dictionnaire de parents/enfants), ce devrait faire l'objet d'un ticket à part. Mais je pense que stocker dans un fichier json les identifiants des enfants dans les couches shapefiles devrait suffire

Oui, c'est une solution, mais sur ce que j'ai vu pas si évidente que ça à implémenter, car il y a des liens vers des layers dont l'adresse est déplacée après un stop. C'est ce point qui ne m'a pas permis d'aller vers une solution triviale.

samysung commented 6 months ago

bloc selection type geometrie (point, ligne, polygon...): mutuellement exclusif : ok pour le fenêtre master, mais en revanche je n'arrive pas à changer de géométrie sur la deuxième fenêtre Corrigé ici: https://github.com/IGNF/trainminator/pull/31/commits/e5d743f2b4b35b65416e55f55b701331c5d39314#

samysung commented 6 months ago

bon par contre, niveau UX design ce système de saisie bi-directionnelle, niveau UX design, ergonomie, là on bat largement le Géoportail : Capture d’écran du 2024-03-05 13-31-08

LMartelet commented 6 months ago

Ah aussi, est-ce qu'on pourrait remettre l'icon de TraiNminaTor pour ne plus avoir l'icon "de base" des plugins QGIS. C'est assez facile à faire :

Je peux m'en charger si vous voulez 😄

samysung commented 6 months ago

[x] saisie impossible si pas de choix de nomenclature : ok [x] changement de nomenclature impossible pendant saisie : ok [x] demarrage saisie par start : ok [x] fin saisie par stop : En commençant une saisie et en appuyant sur stop avant de la compléter, l'affichage du début de saisie est toujours présent et si on fait le clic droit (qu'on essaie de valider la saisie) mon QGIS crash. [x] au start activation des boutons qui permettent la saisie : ok [x] au stop deactivation des boutons qui permettaient la saisie : ok [x] entre start and stop pas de changement de nomenclature possible : ok [x] bloc selection type geometrie (point, ligne, polygon...): mutuellement exclusif : ok [x] bloc selection type action : mutuellement exclusif : ok [x] selection type geometrie: pas de changement de type de geom pendant saisie de la geometrie de selection (on ne transforme pas des points en ligne par exemple) : ok [x] pas de fill pyramid si aucune saisie : ok si ça veut dire que le bouton est désactivé tant qu'on a rien touché dans la saisie. [x] Ne pas sélectionner des géométries dans des niveaux différents (mais finir la saisie avant de choisir des géométries dans un autre niveau) : ok

Si on reclique sur le bouton de type de géométrie active (qu'on le désactive), on se retourve avec aucun type de géométrie pour la sélection sur l'UI mais on peut quand même faire la saisie avec l'outil qu'on avait avant. Aussi le cas pour l'action qu'on effectue (labelling, delete all, delete current).

Ok, merci pour ton retour Lucas. Normalement, je pourrai m'en occuper mercredi. @LMartelet , pour le logo, tu peux faire cela sur cette branche (garde_fou), normalement tu as les droits, dès que tu as fini tu pousses sur cette même branche, ça rentrera dans cette PR. Sinon, je le ferai dans mon prochain push.

LMartelet commented 6 months ago

[x] saisie impossible si pas de choix de nomenclature : ok [x] changement de nomenclature impossible pendant saisie : ok [x] demarrage saisie par start : ok [x] fin saisie par stop : En commençant une saisie et en appuyant sur stop avant de la compléter, l'affichage du début de saisie est toujours présent et si on fait le clic droit (qu'on essaie de valider la saisie) mon QGIS crash. [x] au start activation des boutons qui permettent la saisie : ok [x] au stop deactivation des boutons qui permettaient la saisie : ok [x] entre start and stop pas de changement de nomenclature possible : ok [x] bloc selection type geometrie (point, ligne, polygon...): mutuellement exclusif : ok [x] bloc selection type action : mutuellement exclusif : ok [x] selection type geometrie: pas de changement de type de geom pendant saisie de la geometrie de selection (on ne transforme pas des points en ligne par exemple) : ok [x] pas de fill pyramid si aucune saisie : ok si ça veut dire que le bouton est désactivé tant qu'on a rien touché dans la saisie. [x] Ne pas sélectionner des géométries dans des niveaux différents (mais finir la saisie avant de choisir des géométries dans un autre niveau) : ok Si on reclique sur le bouton de type de géométrie active (qu'on le désactive), on se retourve avec aucun type de géométrie pour la sélection sur l'UI mais on peut quand même faire la saisie avec l'outil qu'on avait avant. Aussi le cas pour l'action qu'on effectue (labelling, delete all, delete current).

Ok, merci pour ton retour Lucas. Normalement, je pourrai m'en occuper mercredi. @LMartelet , pour le logo, tu peux faire cela sur cette branche (garde_fou), normalement tu as les droits, dès que tu as fini tu pousses sur cette même branche, ça rentrera dans cette PR. Sinon, je le ferai dans mon prochain push.

Ca marche, je vois pour faire ça dans l'aprem quand j'aurai fini d'avancer sur la doc.

LMartelet commented 6 months ago

[x] saisie impossible si pas de choix de nomenclature : ok [x] changement de nomenclature impossible pendant saisie : ok [x] demarrage saisie par start : ok [x] fin saisie par stop : En commençant une saisie et en appuyant sur stop avant de la compléter, l'affichage du début de saisie est toujours présent et si on fait le clic droit (qu'on essaie de valider la saisie) mon QGIS crash. [x] au start activation des boutons qui permettent la saisie : ok [x] au stop deactivation des boutons qui permettaient la saisie : ok [x] entre start and stop pas de changement de nomenclature possible : ok [x] bloc selection type geometrie (point, ligne, polygon...): mutuellement exclusif : ok [x] bloc selection type action : mutuellement exclusif : ok [x] selection type geometrie: pas de changement de type de geom pendant saisie de la geometrie de selection (on ne transforme pas des points en ligne par exemple) : ok [x] pas de fill pyramid si aucune saisie : ok si ça veut dire que le bouton est désactivé tant qu'on a rien touché dans la saisie. [x] Ne pas sélectionner des géométries dans des niveaux différents (mais finir la saisie avant de choisir des géométries dans un autre niveau) : ok Si on reclique sur le bouton de type de géométrie active (qu'on le désactive), on se retourve avec aucun type de géométrie pour la sélection sur l'UI mais on peut quand même faire la saisie avec l'outil qu'on avait avant. Aussi le cas pour l'action qu'on effectue (labelling, delete all, delete current).

Ok, merci pour ton retour Lucas. Normalement, je pourrai m'en occuper mercredi. @LMartelet , pour le logo, tu peux faire cela sur cette branche (garde_fou), normalement tu as les droits, dès que tu as fini tu pousses sur cette même branche, ça rentrera dans cette PR. Sinon, je le ferai dans mon prochain push.

Ca marche, je vois pour faire ça dans l'aprem quand j'aurai fini d'avancer sur la doc.

Bon pour je ne sais quelle raison je n'arrive pas à cloner le projet chez moi ... ça plante quand il essaie de récupérer les images du projet exemple mono-date.

samysung commented 6 months ago

@LMartelet j'ai poussé une modif pour gérer ton bug et j'ai mis le logo (mais j'ai l'impression qu'ils sont mis en caches quelque part dans Qgis et je ne sais pas où, donc je n'ai pas vu de changement visuel).

LMartelet commented 6 months ago

@LMartelet j'ai poussé une modif pour gérer ton bug et j'ai mis le logo (mais j'ai l'impression qu'ils sont mis en caches quelque part dans Qgis et je ne sais pas où, donc je n'ai pas vu de changement visuel).

Pour le bug effectivement on ne peut plus arrêter si on a une saisie en cours. Par contre si on arrête la saisie sans rien annoter (avec Echap) le bouton STOP rester bloqué. Pour le logo, tu as bien fais les 3 étapes que je décrivais ? Je n'ai pas vu de changement dans le fichier trainminator2.py et le fichier compilé de ressources ?

samysung commented 6 months ago

@LMartelet , j'ai passé un fix pour le bouton échappe à l'instant

samysung commented 6 months ago
  • :/plugins/trainminator2/icons/trainminator_32x32.png

oui pardon, j'avais regardé ça en diagonal, là c'est bon

LMartelet commented 6 months ago

C'est ok pour le logo et pour le fix avec le bouton echap.

CelestinHuet commented 6 months ago

J'ai un message d'erreur quand je lance le plugin, start, saisie, stop et que je clique sur l'ortho (NoneType object has no attribute 'hasSpatialIndex')

LMartelet commented 6 months ago

J'ai un message d'erreur quand je lance le plugin, start, saisie, stop et que je clique sur l'ortho (NoneType object has no attribute 'hasSpatialIndex')

Effectivement j'ai la même chose quand je fais ça mais sans soucis apparent (dans le sens où effectivement on a une erreur Python mais ça ne cause aucun soucis). Si on refait un start après, on peut reprendre la saisie sans problème.

samysung commented 6 months ago

I n'y a pas de code touchant aux Layers dans mes commits, mais j'ai mergé vos commits (par contre j'ai mergé des modifs entre temps pour Lucas et ses tests). Et on sort du scope de l'issue. Je vais résoudre les conflits créés par le dernier merge sur proto_diff et merger.

samysung commented 6 months ago

Mais je suppose qu'il faudrait un contrôle en plus dans la fonction startCapturing, si le bouton start_stop est sur stop, on ne fait rien dans la fonction.

samysung commented 6 months ago

j'ai corrigé le bug au passage de saisie après stop tout à l'heure. Par contre, entre les merge de proto diff sur garde ou et merge de garde fou sur proto diff après d'autres merges en conflits, je crois qu'il y a un historique de commits pas propre, il faudra prévoir un passage au nettoyage de quelques commits intermédiaires à squashé dans l'historique.