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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Wed 13 September 2017 10:33

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

Passer d'une multistring à une linestring[postgis]

Bonjour,

J'ai une table cable avec une entité en multistring. J'aimerais obtenir une seule ligne en linestring.
J'ai tenté une requête trouvée sur internet mais celle ci me renvoi seulement un bout de tronçon.

Code:

ALTER TABLE cable
ALTER COLUMN geom TYPE geometry(linestring,2154) USING ST_GeometryN(geom, 1);

Auriez vous une idée de la manière dont procéder?
Je travaille avec Qgis et postgis.

Merci d'avance!

Hors ligne

 

#2 Wed 13 September 2017 11:46

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: Passer d'une multistring à une linestring[postgis]

Bonjour,

st_dump() est plus efficace. Vous allez obtenir l'ensemble des linestring qui compose la collection puis il va falloir les transformer avec st_makeline().
Attention à ordonner les lignes ...


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#3 Wed 13 September 2017 13:02

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

Re: Passer d'une multistring à une linestring[postgis]

Merci  Christophe pour la réponse.
J'ai effectué un st_dump et je me retrouve avec 64 lignes en linestring (résultat en pj).

Pour la suite je ne vois pas comment ordonner mes lignes..


Code:

SELECT st_makeline (geom)
  FROM (select geom, id from cable_linestring
  order by id) bp
  group by id

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

Hors ligne

 

#4 Wed 13 September 2017 14:46

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: Passer d'une multistring à une linestring[postgis]


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

#5 Wed 13 September 2017 15:46

bruhnild
Participant actif
Lieu: Lyon
Date d'inscription: 7 Jun 2014
Messages: 130

Re: Passer d'une multistring à une linestring[postgis]

Le résultat de ma requete est plutot décevant....

Code:

SELECT St_MakeLine(geom) as geom, cab_id
FROM (SELECT geom,cab_id  
        FROM tr21_out.cab_test 
            ORDER BY cab_id)  a
GROUP BY a.cab_id;

J'ai l'impression que toutes mes lignes se sont accrochées les unes aux autres.

Dernière modification par bruhnild (Wed 13 September 2017 15:46)


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

Hors ligne

 

#6 Wed 13 September 2017 16:18

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 Sep 2005
Messages: 3199
Site web

Re: Passer d'une multistring à une linestring[postgis]

Bonjour,

Logique ! Si vous lisez les liens précédents vous verrez qu'il faut ordonner non pas par id (sauf construction spécifique) mais dans l'ordre "spatial" lignen, ligne n+1 avec fin ligne n = début ligne n+1.

exemple : les points sont des relevé GPS avec une date de prise de mesure, si je parcours mon réseau du départ à l'arrivée, je peu utiliser la date de prise de mesure pour ordonner. Avec une construction de la collection aléatoire c'est beaucoup plus compliqué.

Pour votre problème, je ferai un dump() de la collection, j'intégrerai ces lignes dans une couche topologique et je raisonnerai avec des arcs orientés et des nœuds, c'est beaucoup plus facile.


Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close

Hors ligne

 

Pied de page des forums

Powered by FluxBB