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 !.
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

Suite à un problème technique intervenu entre le 22 et le 23 mars, nous avons du procéder dans la soirée du 25 mars, à la restauration de la base de données du 24 mars (matinée).

En clair, nous avons perdu vos contributions et inscriptions du dimanche 24 et du lundi 25 mars.
Nous vous prions de nous excuser.

#1 Sun 09 December 2018 15:52

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

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

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