#1 Tue 12 October 2021 12:21
- Archipole Urba
- Participant occasionnel
- Lieu: Rennes
- Date d'inscription: 30 Jan 2014
- Messages: 31
- Site web
[GPu] Géométrie non valide
Bonjour
J'ai un problème de géométrie sur un élément (un EBC pour être précis) et je ne sais pas comment résoudre ce problème.
Je vous mets une copié d'écran en pièce jointe
J'ai deux sommets sur un même point du même objet, mais mon vérificateur de topologie m'indique une erreur.
C'est la seule erreur mais je ne peux pas du coup téléverser sur le GPU.
Comment faire ?
Merci pour vos lumières
Dernière modification par Bruno (Thu 21 October 2021 09:34)
Cordialement
Guillaume
Hors ligne
#2 Tue 12 October 2021 12:53
- Joseph Jacquet
- Participant actif
- Date d'inscription: 19 Feb 2020
- Messages: 92
Re: [GPu] Géométrie non valide
Bonjour,
Je pense qu'il y a deux solutions à première vue :
- Diviser votre EBC en deux entités distinctes
- Créer un deuxième sommet légèrement décalé de sorte que à l'œil nu, ce ne soit pas visible et que la géométrie n'est pas deux nœuds sur la même coordonnée
Bon courage,
JJ
Dernière modification par Joseph Jacquet (Tue 12 October 2021 14:17)
Hors ligne
#3 Tue 12 October 2021 14:24
- Archipole Urba
- Participant occasionnel
- Lieu: Rennes
- Date d'inscription: 30 Jan 2014
- Messages: 31
- Site web
Re: [GPu] Géométrie non valide
Super ça marche, merci, j'y avais pas pensé à séparer en deux l'entité.
L'autre solution est impossible car je dois impérativement suivre le cadastre point par point et ne pas avoir de décalage (même minime).
Merci beaucoup
Cordialement
Guillaume
Hors ligne
#4 Tue 12 October 2021 15:08
Re: [GPu] Géométrie non valide
Bonjour,
Ce sujet permet de voir un problème avec le validateur du GPU. En saisissant correctement un polygone, celui-ci peut impliquer ce type d'erreur (polygone en papillon), alors qu'en réalité ce n'est pas du tout une erreur et qu'il n'est pas toujours possible de séparer le polygone en deux (cf. exemple joint) : c'est un cas de figure qu'il faudrait pouvoir faire remonter aux techniciens de l'IGN qui gèrent le GPU. Je vais essayer d'y penser lors de la prochaine réunion de travail du CNIG à ce sujet :-)
Sur l'exemple joint, aujourd'hui on est obligé de tricher en décalant de façon non visible à une échelle d'impression le sommet du polygone Ac pour qu'il ne touche pas le polygone Na, alors qu'en réalité il le touche.
Bonne journée
Elise
Dernière modification par Elise (Tue 12 October 2021 15:23)
Géoscope
11 rue de l'Hospice - 19400 Argentat
Tél. : 09 60 47 51 16
Hors ligne
#5 Tue 12 October 2021 15:25
Re: [GPu] Géométrie non valide
Je vais essayer d'y penser lors de la prochaine réunion de travail du CNIG à ce sujet :-)
Elise
En fait, cela relève du GPU et non pas du CNIG, du coup, j'ai informé du problème via le formulaire de contact (cf pj).
Géoscope
11 rue de l'Hospice - 19400 Argentat
Tél. : 09 60 47 51 16
Hors ligne
#6 Tue 12 October 2021 17:59
Re: [GPu] Géométrie non valide
Bonsoir Elise,
En espérant que la maitrise d'œuvre (IGN) ne se substitue pas à la maitrise d'ouvrage (Ministère de la Cohésion des Territoires) quand il s'agit de collecter et répondre aux besoins des utilisateurs.
Bonne soirée!
Hors ligne
#7 Tue 12 October 2021 18:34
Re: [GPu] Géométrie non valide
Bonsoir,
En espérant que la maitrise d'œuvre (IGN) ne se substitue pas à la maitrise d'ouvrage (Ministère de la Cohésion des Territoires) quand il s'agit de collecter et répondre aux besoins des utilisateurs.
Tu veux dire que ce serait quand même pertinent de faire remonter l'info au CNIG ?
Bonne soirée.
Elise
Géoscope
11 rue de l'Hospice - 19400 Argentat
Tél. : 09 60 47 51 16
Hors ligne
#8 Wed 13 October 2021 08:19
- Archipole Urba
- Participant occasionnel
- Lieu: Rennes
- Date d'inscription: 30 Jan 2014
- Messages: 31
- Site web
Re: [GPu] Géométrie non valide
Bonjour,
Ce sujet permet de voir un problème avec le validateur du GPU. En saisissant correctement un polygone, celui-ci peut impliquer ce type d'erreur (polygone en papillon), alors qu'en réalité ce n'est pas du tout une erreur et qu'il n'est pas toujours possible de séparer le polygone en deux (cf. exemple joint) : c'est un cas de figure qu'il faudrait pouvoir faire remonter aux techniciens de l'IGN qui gèrent le GPU. Je vais essayer d'y penser lors de la prochaine réunion de travail du CNIG à ce sujet :-)
Sur l'exemple joint, aujourd'hui on est obligé de tricher en décalant de façon non visible à une échelle d'impression le sommet du polygone Ac pour qu'il ne touche pas le polygone Na, alors qu'en réalité il le touche.
Bonne journée
Elise
Bonjour Elise, en effet je suis quelques fois confronté à ce genre de situation.
Mais le fait de décaler le sommet ne créer t'il pas non plus une erreur de validation du GPU ?
Ce n'est pas visible en impression mais dans la réalité ça peut poser un problème puisque cela génère un trou ?!
Bonne journée
Dernière modification par Archipole Urba (Wed 13 October 2021 08:26)
Cordialement
Guillaume
Hors ligne
#9 Wed 13 October 2021 09:11
- Joseph Jacquet
- Participant actif
- Date d'inscription: 19 Feb 2020
- Messages: 92
Re: [GPu] Géométrie non valide
Bonjour,
Je pense que dans l'exemple la zone Ac devient, soit une enclave en sens technique bien qu'invisible à l'oeil ou bien il y a un mini-pont entre Ac et la zone Na encore une fois invisible à l'oeil mais existante en sens de la donnée.
Les autres zones sont modifiées en fonction pour compenser.
JJ
Dernière modification par Joseph Jacquet (Wed 13 October 2021 09:11)
Hors ligne
#10 Wed 13 October 2021 10:59
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: [GPu] Géométrie non valide
Bonjour
En urba et zonage je comprends rien, mais en modélisation de l'information un peu plus.
Si votre entité (celle de la PJ du premier message) est un multypoligon avec un st_dump(geom) vous obtiendrez des polygon distincts non ?
Comment est-ce possible que votre appli voie un polygon papillon alors qu'il y a deux polygon ?
La structure finale attendue est ? (un multy ou un polygon ?) Si votre appli détecte deux polygons adjacents alors elle n'en fait qu'un ? Dans ce cas la notion d'"adjacent" est mal construite. Il faut au moins deux sommets communs pour que deux polygons soient adjacents.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#11 Wed 13 October 2021 11:26
Re: [GPu] Géométrie non valide
Bonjour
Ce n'est pas visible en impression mais dans la réalité ça peut poser un problème puisque cela génère un trou ?!
Non, il n'y a pas de trou, dans l'exemple que je montre la zone Ac devient une enclave dans la zone Ap.
Géoscope
11 rue de l'Hospice - 19400 Argentat
Tél. : 09 60 47 51 16
Hors ligne
#12 Wed 13 October 2021 11:29
Re: [GPu] Géométrie non valide
Bonjour
En urba et zonage je comprends rien, mais en modélisation de l'information un peu plus.
Si votre entité (celle de la PJ du premier message) est un multypoligon avec un st_dump(geom) vous obtiendrez des polygon distincts non ?
Comment est-ce possible que votre appli voie un polygon papillon alors qu'il y a deux polygon ?
Dans le premier exemple (l'EBC), il a été possible de créer 2 polygones, le problème est résolu ; dans le deuxième exemple (zone Ac et Ap) il n'est pas possible de créer 2 polygones, et si on est rigoureux on se retrouve avec la fameuse erreur papillon.
Géoscope
11 rue de l'Hospice - 19400 Argentat
Tél. : 09 60 47 51 16
Hors ligne
#13 Wed 13 October 2021 11:41
- Joseph Jacquet
- Participant actif
- Date d'inscription: 19 Feb 2020
- Messages: 92
Re: [GPu] Géométrie non valide
Edit : Idem que la réponse d'Elise ci-dessus
À la base, il n'y a justement qu'un seul polygone "papillon" mais le validateur du Géoportail de l'Urbanisme considère cela comme une erreur d'où l'idée de le diviser pour faire deux polygones distincts.
La problématique des polygones papillons avec le GPU est plus difficile à contourner dans l'exemple d'Élise. C'est possible pour une vision plan (invisible) mais en terme de donnée pure, cela pose plus de soucis.
JJ
Dernière modification par Joseph Jacquet (Wed 13 October 2021 11:43)
Hors ligne
#14 Wed 13 October 2021 12:48
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: [GPu] Géométrie non valide
Bonjour
dans le deuxième exemple (zone Ac et Ap) il n'est pas possible de créer 2 polygones
Pourquoi ?
ça fait juste trois polygones Na Ac Ap ... topologiquement et mathématiquement je vois pas le problème.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#15 Wed 13 October 2021 13:02
- Joseph Jacquet
- Participant actif
- Date d'inscription: 19 Feb 2020
- Messages: 92
Re: [GPu] Géométrie non valide
Bonjour
Elise a écrit:dans le deuxième exemple (zone Ac et Ap) il n'est pas possible de créer 2 polygones
Pourquoi ?
ça fait juste trois polygones Na Ac Ap ... topologiquement et mathématiquement je vois pas le problème.
Effectivement mais il faudrait diviser la zone Ap ailleurs car dans ce cas, elle "embrasse" la zone Ac et deux noeuds de la zone Ap se partage la même coordonnée entre Ac et la zone N à droite
Hors ligne
#16 Wed 13 October 2021 13:11
Re: [GPu] Géométrie non valide
Bonjour
ça fait juste trois polygones Na Ac Ap ... topologiquement et mathématiquement je vois pas le problème.
Moi non plus je n'y vois aucun problème, ça m'irait très bien si le GPU ne me disait pas "retourne à la chasse aux papillons" :-)
Elise
Géoscope
11 rue de l'Hospice - 19400 Argentat
Tél. : 09 60 47 51 16
Hors ligne
#17 Wed 13 October 2021 13:31
- nicolas david
- Participant occasionnel
- Date d'inscription: 24 Feb 2014
- Messages: 28
Re: [GPu] Géométrie non valide
Bonjour
Je ne connais pas les particularités du GPU mais j'ai déjà rencontré ce type de polygones et problèmes sur des données de type occupation du sol. Les erreurs qui semblent être remontées sont celles d'une validité de la géométrie au sens des normes OGC (SimpleFeature).
Le premier cas "papillon" est effectivement résolu en passant de un polygone à 2 polygone. Dans le deuxième cas il devrait être résolu en passant d'un polygone à un polygone avec trou (i.e un seul contours exterieurs -> un contours exterieur + un contour intérieurs). Ce qui n'est pas autorisé dans les géométries valides au sens OGC c'est d'avoir deux fois le même point (sommet) dans un contour.
Ces deux types de problèmes et leurs solutions sont assez bien expliqués sur cette petite doc postgis : https://postgis.net/workshops/postgis-i … idity.html
Hors ligne
#18 Wed 13 October 2021 13:49
Re: [GPu] Géométrie non valide
Bonjour
Ces deux types de problèmes et leurs solutions sont assez bien expliqués sur cette petite doc postgis : https://postgis.net/workshops/postgis-i … idity.html
Exactement cela, merci :-)
Bon, pour les franchouillards comme moi qui ne captent pas l'anglais, la finesse dans la compréhension des explications sera pour un autre jours, mais avec un logiciel comme Qgis, l’outil de correction des géométrie ferait de façon automatique cette transformation ? On bascule la suite du sujet sur le forum Qgis ?
Elise
Géoscope
11 rue de l'Hospice - 19400 Argentat
Tél. : 09 60 47 51 16
Hors ligne
#19 Wed 13 October 2021 14:49
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: [GPu] Géométrie non valide
Merci à Nicolas pour le lien c'est ce que je cherchais sans trouver immédiatement tout à l'heure.
En fait dans l'exemple d'Elise, il y a trois polygones.
Ap est un polygone avec trou, dont l'enveloppe extérieure (Exterior_ring) comporte un sommet commun avec Na.
Et un trou qui lui aussi est une polyligne fermée qui possède un sommet commun avec son enveloppe extérieure. (et donc Na).
Et un autre polygon Ac qui est égale topologiquement au trou de Ap.
Ensuite si vous voulez vraiment faire de la topologie, faite le avec l'extension topology de Postgis insérez vos polygons dans la couche topo vous verrez s'il y a des erreurs et si les faces crées sont correctes ...
Dernière modification par ChristopheV (Wed 13 October 2021 14:54)
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#20 Thu 21 October 2021 09:39
Re: [GPu] Géométrie non valide
Bonjour,
En résumé, nous ne savons pas quels sont les contrôles topologiques effectués par le GPu.
Peut-être ai-je mal regardé dans cette documentation:
https://github.com/IGNF/validator
Ou bien il existe un autre document (public?).
Bonne journée!
Hors ligne
#21 Fri 22 October 2021 12:14
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: [GPu] Géométrie non valide
Bonjour,
Bruno, c'est pas du fromage ou du saucisson ... y'a comme un standard, une norme quoi ... le standard OGC ... après si les gens du GPu inventent leur propre règles ...
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#22 Fri 22 October 2021 15:16
- cquest
- Participant assidu
- Date d'inscription: 6 Jan 2013
- Messages: 864
Re: [GPu] Géométrie non valide
Bonjour,
En résumé, nous ne savons pas quels sont les contrôles topologiques effectués par le GPu.
Peut-être ai-je mal regardé dans cette documentation:
https://github.com/IGNF/validator
Ou bien il existe un autre document (public?).
Bonne journée!
C'est le code utilisé par le GPU ?
Dernière modification par cquest (Fri 22 October 2021 15:17)
Christian Quest - https://amicale.net/@cquest sur Mastodon (terminé twitter/X)
Membre fondateur et porte parole d'OpenStreetMap France
A l'origine de opendatArchives, OpenEventDatabase
Hors ligne
#23 Mon 15 November 2021 22:33
- FabriceC
- Juste Inscrit !
- Date d'inscription: 15 Nov 2021
- Messages: 1
Re: [GPu] Géométrie non valide
Bonjour,
Quelques éléments de réponse côté IGN :
La validation géométrique se résume à :
- Est-il possible de lire la géométrie (chose qui bloque par exemple avec des contours de polygones à 3 points) ?
- La géométrie est-elle valide, au sens "ST_IsValid" de PostGIS du terme ?
Quelques précisions concernant le validateur GpU :
- Le contrôle de la géométrie a été introduit pour que les algorithmes des bibliothèques de calcul géométrique (qui ne sont pas conçus pour travailler avec des géométries non valides au sens de l'OGC) puissent répondre à la question "Quelles sont les zones qui intersectent la parcelle ?" (avec une réponse autre que "GEOS intersects() threw an error"!).
- La possibilité avait été étudiée de tenter des corrections automatiques de topologie (l'équivalent de ST_MakeValid) pour la diffusion (c-à-d. sans toucher aux archives), avec un simple avertissement dans le rapport de validation en cas de réussite de la correction automatique.
Cependant l'intégrité de la donnée producteur prime pour le moment et cette piste a donc été écartée.
- L’IGN a proposé avec sa MOA des fiches d'aide pour accompagner les utilisateurs sur chaque code d'erreur de validation, et il y a un document pointé par ces fiches d'aide qui explique ce qu'est une géométrie valide au sens de l'OGC (https://www.geoportail-urbanisme.gouv.f … es_1-0.pdf).
Nous nous efforçons de rester sur des contrôles standards qui puissent être effectués facilement avec des outils tels QuantumGIS, PostGIS,...
Il reste principalement deux difficultés sur les contrôles géométriques :
- Nous sommes en train d'ajouter des contrôles de complexité géométrique car on peut avoir parfois des cas exotiques avec de nombreux points et contours difficilement exploitables pour de la diffusion (avec 2.8 millions de points sur une seule géométrie, il y a peu d'outils assurant des traitements fluides).
Le GpU peut difficilement assumer la fonction de simplification des géométries obtenues par des processus de vectorisation automatique et c’est pourquoi le rapprochement avec nos utilisateurs est un souci permanent.
- "Tricher" en décalant de façon non visible à une échelle d'impression le sommet du polygone amène potentiellement à des géométries valides dans la projection utilisée pour la production des données mais non valides dans la projection utilisée pour la diffusion.
Le problème de fond réside dans le fait qu'un contrôle topologique sans notion de précision sur la donnée n'a pas vraiment de sens (sans notion de précision, la réponse à la question "De quel côté de la droite se trouve le point ?" va dépendre de la précision des calculs dans l'ordinateur).
Enfin, le dépôt https://github.com/IGNF/validator correspond bien au code du validateur.
On retrouvera la même méthode que la bibliothèque java JTS (portée en C++ sous le nom GEOS pour PostGIS, QuantumGIS,...) pour répondre à la question "est-ce que la géométrie est valide" :
- Validateur IGN : https://github.com/IGNF/validator/blob/ … va#L32-L52
- isValid de JTS : https://github.com/locationtech/jts/blo … #L428-L431
La différence tient au fait que nous récupérons la localisation de l'erreur géométrique. L'idée étant, dans la prochaine version du GpU, de permettre le téléchargement du rapport de validation au format GeoJSON pour localiser plus facilement les erreurs de validation géométrique.
Cordialement, L’équipe GPU
IGN - Support GPU
Hors ligne
#24 Tue 16 November 2021 10:42
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: [GPu] Géométrie non valide
Bonjour,
Le soucis à mon humble avis ne vient pas du code mais de la conception de la chose.
Dans le cas évoqué au début de ce fil, le fait de vouloir créer un polygone avec deux polygones qui se touchent en un seul point, c'est ça l'erreur.
Et aucun algo ne peut y remédier. C'est une question de modélisation ou conception du problème.
La seule solution pour cet exemple est deux polygones ou un multi.
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne
#25 Tue 16 November 2021 21:54
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3175
- Site web
Re: [GPu] Géométrie non valide
Bonsoir,
(sans notion de précision, la réponse à la question "De quel côté de la droite se trouve le point ?" va dépendre de la précision des calculs dans l'ordinateur).
En premier lieu, merci d'afficher la couleur. Pour des anciens, la chose n'était pas si facile il y a quelques années et comme géoretraité, content de voir la qualité et la visibilité pérenne de cette association
Tout vient à point à qui sait ...
Reste en matière de précision un truc simple, c'est quoi qu'on représente ? Une réalité de terrain à l'échelle communal. Cela s'appelle un plan (non une carte ) et la précision de ce référentiel est centimétrique. Ce référentiel de base, qui se nomme le plan cadastral ( déformé ou non ) est en effet centimétrique. Un éditeur de texte pour visualiser un .Vec d'un fichier Edigéo le démontre aisément.
Suffit de conserver cette précision quand on intègre les données et de s'en servir de référentiel pour toutes les couches qui viennent s'y superposer.
Problème trouver un format d'échange qui permet d'échanger la donnée sans altérer sa précision. C'est pas le shp qui va le faire
Bon Edigéo ça le fait, le WKB aussi alors ...
[Edit] Une précision pour conserver la précision
Il est évident que l'intersection de la droite formée par deux sommets d'un polygone et une autre droite est un point dont les coordonnées sont deux nombres réels, pas forcément des décimaux à deux chiffres, au sens de la géométrie dans R² oui. Pour garantir cette précision entre référentiels géométrique il ne faut pas raisonner en termes de géométrie "euclidienne" mais en topologie.
L'intersection du vecteur formé par deux sommets d'un arc avec un autre arc est un Noeud est les deux arcs précédents deviennent 4.
Ce Noeud a une précision géométrique au centimètre. (Les sommets des arcs aussi )
Dernière modification par ChristopheV (Wed 17 November 2021 13:39)
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne