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 !.
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

#1 mer. 13 septembre 2017 10:33

bruhnild
Membre
Lieu: Lyon
Date d'inscription: 7 juin 2014
Messages: 47

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 mer. 13 septembre 2017 11:46

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 sept. 2005
Messages: 2396
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 mer. 13 septembre 2017 13:02

bruhnild
Membre
Lieu: Lyon
Date d'inscription: 7 juin 2014
Messages: 47

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 mer. 13 septembre 2017 14:46

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 sept. 2005
Messages: 2396
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 mer. 13 septembre 2017 15:46

bruhnild
Membre
Lieu: Lyon
Date d'inscription: 7 juin 2014
Messages: 47

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 (mer. 13 septembre 2017 15:46)


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

Hors ligne

 

#6 mer. 13 septembre 2017 16:18

ChristopheV
Membre
Lieu: Ajaccio
Date d'inscription: 7 sept. 2005
Messages: 2396
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

Partagez  |