Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

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.

#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 !


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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 sad


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

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)

Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

En formation (Technicien Supérieur S.I.G. (TSSIG) chez idGeo)

Hors ligne

 

Pied de page des forums

Powered by FluxBB