Vous n'êtes pas identifié(e).

#1 28/03/2012 11:14:37

Geo-x
Membre

Fusion de plusieurs linestring en une multilinestring

Bonjour à tous,

Tout et dans le titre avec en plus, un regroupement par condition.

Donc pour résumer,

1- j'ai plusieurs linestring dans une table1, avec un champ1 contenant des infos a,b,c,a,a,b,c,c,c par exemple

2- je veux regrouper en une seule multilinestring dans une table2, avec la condition de regroupement selon table1.champ1

Alors j'ai pondu un truc du style :

INSERT INTO table1 (wkb_geometry,champ1) 
SELECT wkb_geometry,champ1 FROM table2
WHERE table2.wkb_geometry=st_multi(st_union('SELECT table1.wkb_geometry FROM table1 GROUP BY table1.champ1'));

Mais l'efficacité n'est pas au rendez-vous :-(

Avez-vous une idée de la piste à suivre?

Hors ligne

#2 28/03/2012 11:37:30

Marc Cousin
Membre

Re : Fusion de plusieurs linestring en une multilinestring

C'est un peu difficile à suivre:

Vous dites que vous voulez regrouper dans table2 alors que vous faites un insert dans table1…

Pouvez-vous reformuler ?


Marc.

Hors ligne

#3 28/03/2012 11:46:24

Geo-x
Membre

Re : Fusion de plusieurs linestring en une multilinestring

Euh oui en effet, j'avoue ne pas avoir été très clair sur ce coup là...mea culpa. Il s'agit bien d'un INSERT INTO table2...

Donc pour reformuler :

Initialement :

Table1 (LINESTRING)   -   Champ1 : a,b,c,a,a,b,c,c,c

Ce que je souhaite avoir :

Table2 (MULTILINESTRING)  -  Champ1 : a,b,c

Et donc le code qui ne fonctionne pas, mais que j'ai écris :

INSERT INTO table2 (wkb_geometry,champ1) 
SELECT wkb_geometry,champ1 FROM table1
WHERE table1.wkb_geometry=st_multi(st_union('SELECT table1.wkb_geometry FROM table1 GROUP BY table1.champ1'));

Hors ligne

Pied de page des forums