Pages: 1
- Sujet précédent - PostGis / PostgreSQL - Supprimer les doublons à partir des géométries - Sujet suivant
#1 Fri 30 November 2018 19:00
- Rlucas
- Participant occasionnel
- Date d'inscription: 20 Apr 2018
- Messages: 31
PostGis / PostgreSQL - Supprimer les doublons à partir des géométries
Bonjour,
J'ai essayé de faire une requête pour supprimer les doublons géométriques issus de la fusion des startpoints / endpoints générés à partir d'une table de polylignes. Comme certains lignes sont jointives, on obtient des doublons géométriques.
J'ai donc écrit la requête suivante :
Code:
WITH start_point AS ( SELECT id, ST_Startpoint(ST_Linemerge(geom)) AS geom FROM lignes ), end_point AS ( SELECT id, ST_Endpoint(ST_Linemerge(geom)) AS geom FROM lignes ), end_point_left_outer AS ( SELECT DISTINCT end_point.* FROM end_point LEFT OUTER JOIN start_point ON ST_EQUALS(end_point.geom, start_point.geom) WHERE start_point.id ISNULL ), start_point_right AS ( SELECT DISTINCT start_point.* FROM start_point RIGHT JOIN end_point ON ST_EQUALS(start_point.geom, end_point.geom) ), start_endpoint AS ( SELECT * FROM end_point_left_outer UNION SELECT * FROM start_point_right
Malheureusement certains des points disparaissent. J'ai donc dû me tromper, mais j'ai beau tourner la requête dans tous les sens je ne vois pas où.
Plus largement j'essaie de concevoir un format de requête pour détecter les doublons géométriques à partir des géométries seules.
Pour ce qui est des doublons, je parle bien des géométries se situant "au même endroit", et pas forcément dans le même ordre (cf. http://www.postgis.fr/chrome/site/docs/ … ity.html).
Et j'aimerai éviter autant que possible de passer par des strings (fonctions ST_AsText(geom) ou autres...).
Quelqu'un a-t'il déjà écrit une requête de ce genre?
Hors ligne
#2 Fri 30 November 2018 19:18
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: PostGis / PostgreSQL - Supprimer les doublons à partir des géométries
Zut nos messages se croisent...
cf ici: https://georezo.net/forum/viewtopic.php?id=113391
Hors ligne
#3 Fri 30 November 2018 19:23
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1554
Re: PostGis / PostgreSQL - Supprimer les doublons à partir des géométries
Un autre moyen très puissant pour comparer des géométries est de comparer leur représentation geohash, avec st_geoHash (https://postgis.net/docs/manual-2.3/ST_GeoHash.html).
Pareil, cela ne marche que si deux geom ne peuvent pas se trouver dans la meme bounding box, car le centre de la bbox est pris pour générer le geohash.
(perso, apres pas mal de tests sur pleins de datasets variés, je me suis rendu compte que la probabilité d'avoir deux geom avec exactement la meme bbox est proche de null, sauf si ces geom sont issues de découpages sur elles-memes, ou de découpages réguliers. J'utilise donc tres souvent "group by geom" pour virer les doublons.)
Nicolas
Dernière modification par Nicolas Ribot (Fri 30 November 2018 19:25)
Hors ligne
Pages: 1
- Sujet précédent - PostGis / PostgreSQL - Supprimer les doublons à partir des géométries - Sujet suivant