#1 Fri 27 November 2015 16:55
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Postgres 9.1 Postgis 2.0 - st_union
Bonjour,
J'ai un problème lors de l'utilisation de st_union.
Le symptôme est assez surprenant et je sèche complètement.
Je suspecte un problème dans mes données .... mais lequel?
En entrée j'ai une table de type geometry(LineString,2154)
Il s'agit de plusieurs lignes qui peuvent se superposer partiellement et il y a plusieurs zones - cf captures 1 et 2
Ensuite je fais un st_union dessus:
Code:
create table mes_lignes_fusion as select st_union(the_geom) as the_geom from mes_lignes
Pour une seule zone mon objet résultat est dédoublé avec des décalages de plusieurs dizaines de centimètres - cf captures 3
J'ai relancé le st_union séparément sur chacune des LineString concernées et là il n'y a pas de problème.
J'ai ensuite relancé le st_union sur l'ensemble des LineString concernées et là il n'y a pas de problème.
Est-ce que quelqu'un a déjà rencontré ce type de problème ou a une idée?
Merci d'avance pour votre aide
Hors ligne
#3 Sat 28 November 2015 21:20
Re: Postgres 9.1 Postgis 2.0 - st_union
Bonsoir,
je refais la manip avec tes fichiers et j'obtient le même résultat. Le décalage et la simplification ne se retrouvent que pour les 2 zones nord.
Si je les isole, je retrouve le même résultat.Il y a peut être trop de noeuds différents entre les objets des lignes qui se chevauchent et st_union fait une simplification ?
Le forum saura-t-il relever le défi et trouver l'explication ? ;o)
Jean-François Behm, formateur SIG, jf.behm@, idgeo.frformations@ idgeo.fr
IDGEO, www.idgeo.fr
Institut de Développement de la Géomatique 42, avenue de Général de Croutte - 31100 toulouse
Hors ligne
#4 Mon 07 December 2015 09:31
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: Postgres 9.1 Postgis 2.0 - st_union
Bonjour,
Je reviens à la charge car je n'ai toujours pas trouvé d'explication (et encore moins de solution) au comportement de st_union() sur mes données.
Personne a une idée ou une piste?
Hors ligne
#5 Mon 07 December 2015 10:05
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Postgres 9.1 Postgis 2.0 - st_union
Bonjour,
Testé également sur PG 9.3 Postgis 2.1.7 et PG 9.5 postgis 2.2
J'ouvrirais un ticket là: https://trac.osgeo.org/postgis/newticket
Idéalement, il faudrait trouver le plus petit ensemble de géométries qui provoque ce comportement et envoyer ces données avec le ticket pour pouvoir reproduire le problème.
Nicolas
Hors ligne
#6 Mon 07 December 2015 14:33
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: Postgres 9.1 Postgis 2.0 - st_union
J'ai bien essayé de faire un extrait de mes données sur la zone en question mais le problème n'apparait pas sur cet extrait!
Hors ligne
#7 Mon 07 December 2015 14:40
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Postgres 9.1 Postgis 2.0 - st_union
Oui effectivement, moi pareil.
Il faut soumettre le jeu complet alors, ou le faire parvenir à un des développeurs une fois le ticket ouvert.
Nico
Hors ligne
#8 Wed 24 February 2016 10:07
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: Postgres 9.1 Postgis 2.0 - st_union
Bonjour,
Une petite suite au mail:
J'ai actuellement l'opportunité de demander directement aux cadors de PostGIS ce qu'ils pensent de ce probleme curieux de dérive de coordonnées:
• L'utilisation de st_memUnion(geom) sur le jeu de données original provoque une erreur topologique:
XX000] ERROR: GEOSUnion: TopologyException: found non-noded intersection between LINESTRING (562839 6.2927...
• Apparemment, le code de Union tente de catcher les éventuelles exceptions rencontrées et de corriger les points, entrainant une dérive.
• Une solution qui marche, indiquée par Rémi Cura, consiste à translater les coordonnées initiales pour ne pas conserver les chiffres énormes présents dans les coordonnées Lambert93 (plus la coordonnées contient de chiffres avant la virgule, plus le risque d'erreurs d'arrondis lors des calculs est grand):
La requête:
Code:
select st_union(st_translate(geom, -500000, -6200000)) from ln;
semble unir les lignes sans erreur (faut retranslater dans l'autre sens en fin de résultat).
Nicolas
Hors ligne
#9 Thu 25 February 2016 13:42
- guil31
- Participant actif
- Date d'inscription: 22 Jan 2013
- Messages: 79
Re: Postgres 9.1 Postgis 2.0 - st_union
Merci beaucoup pour le suivi
Hors ligne
#10 Tue 14 June 2016 12:50
- mikl84170
- Juste Inscrit !
- Date d'inscription: 19 Apr 2016
- Messages: 5
Re: Postgres 9.1 Postgis 2.0 - st_union
Bonjour,
Quand j'essai de réaliser une vue dans pgAdmin III un message d'erreur apparaît:
Pouvez-vous me venir en aide.
PS: j'ai réussi a faire deux vues mais pour la troisième ce message apparaît.
Je vous remercie
Hors ligne
#11 Tue 14 June 2016 13:17
Re: Postgres 9.1 Postgis 2.0 - st_union
Bonjour,
L'ordre des colonnes ne correspondent pas ? Change SELECT * par un SELECT col1, col2 et en faisant attention à ce que l'ordre des colonnes des différentes clauses SELECT aient un type identique (par varchar d'un côté et geometrie de l'autre).
Y.
Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !! - GeoRezo vous aide ? Aidez GeoRezo !
Hors ligne
#12 Tue 14 June 2016 16:17
- mikl84170
- Juste Inscrit !
- Date d'inscription: 19 Apr 2016
- Messages: 5
Re: Postgres 9.1 Postgis 2.0 - st_union
Bonjour,
L'ordre des colonnes ne correspondent pas ? Change SELECT * par un SELECT col1, col2 et en faisant attention à ce que l'ordre des colonnes des différentes clauses SELECT aient un type identique (par varchar d'un côté et geometrie de l'autre).
Y.
Merci de votre réponse, l'ordre des colonnes ne sont pas identique suivant les différentes tables que je souhaite joindre en une vue.
Néanmoins, j'ai trouver une autre solution qui est de redéfinir mes tables ayant un problème de géométrie sur celle-ci.
Encore merci Y.
Hors ligne