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Ă© ?

#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: 1226

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: 1226

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: 1566

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

Copyright Association GeoRezo