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 Sun 09 December 2018 15:52

Benji12
Participant occasionnel
Date d'inscription: 5 Apr 2018
Messages: 23

function st_collect(geometry, geometry, geometry) does not exist

J'ai un petit souci avec cette méthode :

Je voudrais faire un merge avec des linestrings :

Code:

SELECT ST_AsText(ST_LineMerge(ST_Collect(
ST_GeomFromText('LINESTRING(-29 -27,-30 -29.7,-36 -31,-45 -33)'),
(tr.path),
ST_GeomFromText('LINESTRING(-45 -33,-46 -32, -45 -34)')
)))
from tracks tr
where id = 12

Elle me retourne : function st_collect(geometry, geometry, geometry) does not exist.

tr.path est une linestring au format geom. et d'après la doc, ST_Collect attend bien des géometries.

Je pense qu'il faut caster les données, mais tout ce que j'ai tenté ne fonctionne pas... sad

Hors ligne

 

#2 Mon 10 December 2018 08:40

Alban NOIR
Participant occasionnel
Date d'inscription: 7 Sep 2005
Messages: 32

Re: function st_collect(geometry, geometry, geometry) does not exist

Bonjour,
La fonction st_collect prends comme arguments deux geometries une à une ou un tableau de geometries.
Dans ta requête tu en passes 3.

tu peux :

Code:

SELECT ST_AsText(ST_LineMerge(
    ST_Collect(
        ST_Collect(
            ST_GeomFromText('LINESTRING(-29 -27,-30 -29.7,-36 -31,-45 -33)'),
            tr.path,
        ),
        ST_GeomFromText('LINESTRING(-45 -33,-46 -32, -45 -34)')
    )
))
from tracks tr
where id = 12;

ou avec un tableau

Code:

SELECT ST_AsText(ST_LineMerge(
    ST_Collect(
        ARRAY(
            SELECT  ST_GeomFromText('LINESTRING(-29 -27,-30 -29.7,-36 -31,-45 -33)')
            UNION ALL
            SELECT tr.path from tracks tr where id = 12
            UNION ALL
            SELECT ST_GeomFromText('LINESTRING(-45 -33,-46 -32, -45 -34)')
        )
    )
))
;

Alban

Hors ligne

 

#3 Mon 10 December 2018 17:55

Benji12
Participant occasionnel
Date d'inscription: 5 Apr 2018
Messages: 23

Re: function st_collect(geometry, geometry, geometry) does not exist

Merci bien, j'ai testé les deux method :

La première me retourne une multilinestring la deuxième une linestring (ce que j'attendais). J'ai donc opté pour celle là wink

Un grand merci wink

Hors ligne

 

Pied de page des forums

Powered by FluxBB