Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Outdoor - Erreur 500 si deux polygones se chevauchent #3727

Open
babastienne opened this issue Sep 14, 2023 · 6 comments
Open

Outdoor - Erreur 500 si deux polygones se chevauchent #3727

babastienne opened this issue Sep 14, 2023 · 6 comments
Labels

Comments

@babastienne
Copy link
Member

babastienne commented Sep 14, 2023

Je créé un site outdoor.
Je dessine une premier polygone puis un deuxième qui l'intersecte.
Je sauvegarde -> erreur 500.
L'objet est en réalité créé mais sa géométrie plante, ce qui fait qu'li apparait dans la liste des objets mais qu'il est inaccessible.

C'est le cas aussi avec un seul polygone qui s'intersecte lui-même (à droite sur la capture ci-dessous)

image

Il faudrait :

  • A minima interdire la création d'objet dans ce cas de figure
  • Au mieux gérer le cas des polygones qui se chevauchent

J'ai testé, le problème existe également sur les parcours outdoor.

@submarcos
Copy link
Member

submarcos commented Oct 6, 2023

Le probleme c'est que le check BDD qui controle la validité déclenche une exception. C'est quelquechose qui est deja pris en compte dans les versions reécentes de django (grace à une contrib de quelqu'un de chez makina !) : ValidationError au lieu de IntegrityError : erreurs de formulaire au lieu d'exceptions.

Donc je pense que le passge à Django 4.2 corrigera le probleme de lui même

@babastienne
Copy link
Member Author

Dependant de #3754

@submarcos
Copy link
Member

  • Empecher de créer l'objet si la géométrie est invalide
  • Vérifier la géométrie avec turf.js ?
  • en dernier, la màj en 4.2 s'occupera de la vérification coté BDD

@camillemonchicourt
Copy link
Member

Je me demande si turf.js c'est pas un peu lourd comme dépendance à maintenir juste pour ça ?
Je me demande aussi si on doit vraiment empêcher la création d'un site multipolygone dont les polygones se chevauchent ?

@marcantoinedupre
Copy link
Contributor

Je me demande si turf.js c'est pas un peu lourd comme dépendance à maintenir juste pour ça ?

Sans m'exprimer sur la pertinence et la lourdeur car je ne connais pas turf.js je remarque qu'il y a déjà une version embarquée dans Geotrek Admin : geotrek/core/static/core/js/turf.min.js

Je me demande aussi si on doit vraiment empêcher la création d'un site multipolygone dont les polygones se chevauchent ?

Actuellement il n'y a pas la possibilité de créer un site multipolygone avec des chevauchements car ce type de géométrie n'est pas géré au niveau de la BD (considéré comme invalide). Il y a une erreur 500 à la création mais aussi à chaque fois qu'on essaye d'afficher la page détail du Site/Parcours en question. Du coup on ne fait qu'expliciter une limitation qui se traduit actuellement par une erreur interne pour l'utilisateur.

@camillemonchicourt
Copy link
Member

OK très bien. Je n'avais pas ça en tête, mais ça vient de b2ac4a5
Et en effet, ce n'est donc finalement pas du tout si lourd et complexe que je le pensais. 👍️


OK OK je comprends. Un objet multi-polygone ne peut pas être composé de plusieurs polygones se superposant. Je vois. Donc PostGIS rejette ce genre de données. Et donc en effet, il faut trouver un moyen de vérifier ça avant pour renvoyer un message à l'utilisateur et non pas un plantage. 👍️

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

4 participants