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 Thu 27 June 2013 11:11

Razorbak
Participant assidu
Lieu: Clermont Ferrand
Date d'inscription: 7 Oct 2007
Messages: 505

[PostGis] Insérer des linestring dans une table MultiLineString

Bonjour,

J'essaie de charger des données dans une table où la géométrie est MultiLineString. En gros, ce sont des lignes que je fusionne selon un attribut commun.
Voici ma requête :

Code:

INSERT INTO matable (
                                code,
                                geom)
                            SELECT
                                code,
                                ST_Force_2D((ST_Dump(geom)).geom) as geom
                            FROM (SELECT
                                trim(code) as code,
                                ST_LineMerge(ST_Union(geom)) as geom
                            FROM tabletemp
                            GROUP BY code) as A

Mais j'obtiens une erreur m'indiquant "Geometry type (LineString) does not match column type (MultiLineString)".
En effet, le résultat de ma sous-requête me donne à la fois des multilinestring et des linestring.

Comment puis-je spécifier que je veux transformer mes linestring en multi afin que tous mes enregistrements soient chargés dans ma table ?

Merci

Hors ligne

 

#2 Thu 27 June 2013 11:27

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [PostGis] Insérer des linestring dans une table MultiLineString

Salut,

la fonction ST_Multi http://www.postgis.org/docs/ST_Multi.html ne conviendrait-elle pas ?

Hors ligne

 

#3 Thu 27 June 2013 11:32

Razorbak
Participant assidu
Lieu: Clermont Ferrand
Date d'inscription: 7 Oct 2007
Messages: 505

Re: [PostGis] Insérer des linestring dans une table MultiLineString

Effectivement, je l'ai déjà testé mais je ne vois pas où placer cette commande...
Car en la mettant devant le ST_Force2D, ça annule la fusion que je fais dans la sous-requête.

Hors ligne

 

#4 Thu 27 June 2013 11:43

tumasgiu
Membre
Lieu: Ajaccio
Date d'inscription: 5 Jul 2010
Messages: 1160

Re: [PostGis] Insérer des linestring dans une table MultiLineString

En remplacant ST_LineMerge  par ST_Multi (pas sur que le ST_Dump serve alors à quelque chose)  ? cf le premier example de cette page :http://postgis.refractions.net/document … Union.html

Hors ligne

 

#5 Thu 27 June 2013 11:54

Razorbak
Participant assidu
Lieu: Clermont Ferrand
Date d'inscription: 7 Oct 2007
Messages: 505

Re: [PostGis] Insérer des linestring dans une table MultiLineString

Exact, c'est bien ça.
Et il faut bien supprimer le ST_DUMP qui ne sert plus.
En gros, le ST_Dump éclate les géométries, c'est ça ?

Hors ligne

 

#6 Thu 27 June 2013 14:28

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1554

Re: [PostGis] Insérer des linestring dans une table MultiLineString

Oui, st_dump explose une collection de geometries en ses éléments constitutifs, indiquant, en plus de la geometrie, le rang de l'objet au sein de la collection.

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB