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

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#1 Mon 19 November 2018 19:45

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

Method dans rails

j’ai un petit souci avec une method et une simple requête Postgis (qui fonctionne bien dans pgadmin) :

   

Code:

def track_start_point(linestring)
    start_point = <<-SQL
       select
       ST_AsText(ST_StartPoint('#{linestring}'))
      SQL
      Track.connection.execute(start_point)
end

Me retourne “wrong number of arguments (given 0, expected 1)” pourtant si je fais un raise, ma “linestring” est bien passée en argument...

Si je met la variable linetsring entre double quotes, ça me retourne :
ERROR: column “LINESTRING(743238 2967416,743238 2967450)” does not exist
LINE 2: ST_AsText(“LINESTRING(743238 2967416,743238 2967450)

Hors ligne

 

#2 Mon 19 November 2018 20:17

sam92
Juste Inscrit !
Date d'inscription: 6 Nov 2018
Messages: 7

Re: Method dans rails

Bonsoir,

La variable linestring présente est une chaîne de caractères, elle doit être convertie en un objet géométrique pour être acceptée par la fonction ST_StartPoint.
La fonction suivante vous permettra d'effectuer la conversion : http://postgis.net/docs/ST_GeomFromText.html

Sam

Hors ligne

 

#3 Mon 19 November 2018 20:40

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

Re: Method dans rails

Merci Sam pour ton aide,

Avce PgAdmin, la requête fonctionne très bien sans, je viens d'essayer avec et maintenant j'ai une syntax error :

(ST_StartPoint(ST_GeomFromText(LINESTRING(743238 2967416,74....

La linestring devrait être entre quote, si je rajoute des quotes, la linestring ne passe plus en argument:(

Hors ligne

 

#4 Mon 19 November 2018 21:24

sam92
Juste Inscrit !
Date d'inscription: 6 Nov 2018
Messages: 7

Re: Method dans rails

Je crois comprendre maintenant d'où vient le souci, c'est parce qu'il faut mettre l'expression LINESTRING(...) entre apostrophes, et non entre guillemets.
A mon avis, c'est ça smile

Code:

ST_AsText(ST_StartPoint('#{linestring}'::geometry))

Ou

Code:

ST_AsText(ST_StartPoint(ST_GeomFromText('#{linestring}')))

Dernière modification par sam92 (Mon 19 November 2018 21:34)

Hors ligne

 

#5 Mon 19 November 2018 23:52

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

Re: Method dans rails

Oui le problème vient bien de là,

mais si je met :

Code:

ST_AsText(ST_StartPoint('#{linestring}'::geometry))

Ca ne passe plus en argument : wrong number of arguments (given 0, expected 1)

et si je met :

Code:

ST_AsText(ST_StartPoint(ST_GeomFromText('#{linestring}')))

J'ai un syntax error at or near "ST_AsText"

sad

Hors ligne

 

#6 Tue 20 November 2018 07:55

sam92
Juste Inscrit !
Date d'inscription: 6 Nov 2018
Messages: 7

Re: Method dans rails

"wrong number of arguments (given 0, expected 1)"

Ce log d'erreur est propre au langage Ruby, il y a quelque part (en dehors du bloc SQL) un défaut de déclaration/d'initialisation du paramètre d'une fonction.
Mais je ne peux pas t'aider, c'est hors de mes compétences.

Bon courage !
Sam

Hors ligne

 

Pied de page des forums

Powered by FluxBB