Annonce
Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).
En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.
Pages: 1
- Sujet précédent - Joindre / fusionner des lignes qui se touchent et se croisent - Sujet suivant
#1 Tue 01 March 2022 11:20
- fmirault
- Juste Inscrit !
- Lieu: LABSTIDE-SAVES
- Date d'inscription: 4 Oct 2021
- Messages: 8
Joindre / fusionner des lignes qui se touchent et se croisent
Bonjour à tous,
J'ai une table regroupant l'ensemble des canalisations de mon réseau dans une base Postgis.
Ce réseau est constitué de nombreuses lignes plus ou moins longues.
Chaque ligne a un ID individuel et l'attribut commun que je veux utiliser est le diamètre de chaque bout de canalisation.
Je voudrais joindre / fusionner les lignes qui se touchent / se croisent afin d'obtenir une seule ligne à chaque fois par regroupement (comme l'image ci-jointe) ... mais je bute sur la création de ma requête.
J'ai essaye st_makeline , st_lignemerge mais je n'obtiens en résultat qu'une seule entité et non une ligne par 'lignes qui se touchent'
Code:
select st_transform(st_makeline(a."GEOM"),4326) from aep."CANALISATION" a join aep."CANALISATION" b on st_intersects(a."GEOM",b."GEOM") where a."BG_COMMUNE" = '31351' and a."RAEPA_DIAMETRE_NOMINAL" = 'DIAMETRE_CANALISATION_20'
Si une bon samaritain passe dans le coin pour m'aiguiller, je suis preneur !
En formation (Technicien Supérieur S.I.G. (TSSIG) chez idGeo)
Hors ligne
#2 Tue 01 March 2022 11:42
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1534
Re: Joindre / fusionner des lignes qui se touchent et se croisent
Bonjour,
st_clusterIntersecting est votre ami: http://postgis.net/docs/ST_ClusterIntersecting.html
Nicolas
Hors ligne
#3 Tue 01 March 2022 12:50
- fmirault
- Juste Inscrit !
- Lieu: LABSTIDE-SAVES
- Date d'inscription: 4 Oct 2021
- Messages: 8
Re: Joindre / fusionner des lignes qui se touchent et se croisent
Bonjour et merci beaucoup !!!
Je m'en suis sorti avec le code suivant (si ça peut aider) :
Code:
with test as ( select st_transform("GEOM",4326) as geom from aep."CANALISATION" where "BG_COMMUNE" = '31351' and "RAEPA_DIAMETRE_NOMINAL" = 'DIAMETRE_CANALISATION_20') SELECT ST_SetSRID(ST_GeomCollFromText(ST_AsText(unnest(ST_ClusterIntersecting(geom)))),4326) FROM test;
En formation (Technicien Supérieur S.I.G. (TSSIG) chez idGeo)
Hors ligne
#4 Tue 01 March 2022 13:00
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1534
Re: Joindre / fusionner des lignes qui se touchent et se croisent
Pourquoi faire un ST_GeomCollFromText(ST_AsText(geom)) ?
La conversion en texte peut modifier les coord et rendre les geom invalides.
Nicolas
Hors ligne
#5 Tue 01 March 2022 14:32
- fmirault
- Juste Inscrit !
- Lieu: LABSTIDE-SAVES
- Date d'inscription: 4 Oct 2021
- Messages: 8
Re: Joindre / fusionner des lignes qui se touchent et se croisent
Parce que lorsque j'utilise le code ci-dessous directement, cela ne me renvoit pas une geométrie.
Code:
ST_ClusterIntersecting("GEOM")
Je pensais donc devoir passer par là pour 'récréer' une géométrie.
Je viens de comprendre votre remarque : le code ci-dessous suffit :
Code:
unnest(ST_ClusterIntersecting("GEOM"))
Dernière modification par fmirault (Tue 01 March 2022 14:36)
En formation (Technicien Supérieur S.I.G. (TSSIG) chez idGeo)
Hors ligne
#6 Tue 01 March 2022 16:43
- fmirault
- Juste Inscrit !
- Lieu: LABSTIDE-SAVES
- Date d'inscription: 4 Oct 2021
- Messages: 8
Re: Joindre / fusionner des lignes qui se touchent et se croisent
J'ai crié victoire trop vite ... impossible de charger ma vue dans QGis.
Il ne reconnait ni la géométrie, ni le SRID
En formation (Technicien Supérieur S.I.G. (TSSIG) chez idGeo)
Hors ligne
#7 Tue 01 March 2022 16:48
- Nicolas Ribot
- Membre
- Lieu: Toulouse
- Date d'inscription: 9 Sep 2005
- Messages: 1534
Re: Joindre / fusionner des lignes qui se touchent et se croisent
Il faut que vous castiez le champ geom, pour que qgis le voit, avec un type différent de geometry:
Code:
... SELECT ST_SetSRID(unnest(ST_ClusterIntersecting(geom)),4326)::geometry(MULTILINESTRING, 4326) as geom FROM test;
Nicolas
Dernière modification par Nicolas Ribot (Tue 01 March 2022 16:49)
Hors ligne
#8 Wed 02 March 2022 10:54
- fmirault
- Juste Inscrit !
- Lieu: LABSTIDE-SAVES
- Date d'inscription: 4 Oct 2021
- Messages: 8
Re: Joindre / fusionner des lignes qui se touchent et se croisent
Bonjour,
Encore merci pour vos retours ...
Alors je viens de tester :
Code:
create view aep.v_canalisation_diametre as (select "BG_COMMUNE","BG_SECTEUR","RAEPA_MATERIAU","RAEPA_CAT_CAN_AE","RAEPA_FONCTION_CAN_AE","STATUS","RAEPA_DIAMETRE_NOMINAL" ,unnest(ST_ClusterIntersecting("GEOM"))::geometry(MULTILINESTRING,3943) geom from aep."CANALISATION" where "BG_COMMUNE" = '31351' and "RAEPA_DIAMETRE_NOMINAL" = 'DIAMETRE_CANALISATION_20' group by 1,2,3,4,5,6,7 order by 1,2,3,4,5,6,7 )
J'ai bien un retour au niveau de la table public.geometry_columns que ma vue est bien reconnue comme spatiale (voir pièce jointe).
Mais lorsque je veux voir ce qu'il y a dedans, je me retrouve avec l'erreur suivante
Code:
ERROR: Geometry SRID (0) does not match column SRID (3943) SQL state: 22023
Idem sous QGis, j'ai le message suivant :
Code:
Requête erronée : SELECT * FROM "aep"."v_canalisation_diametre" LIMIT 1 a retourné 7 [ERROR: Geometry SRID (0) does not match column SRID (3943)
En formation (Technicien Supérieur S.I.G. (TSSIG) chez idGeo)
Hors ligne
Pages: 1
- Sujet précédent - Joindre / fusionner des lignes qui se touchent et se croisent - Sujet suivant