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

Printemps des cartes 2024

#1 Wed 13 November 2019 11:14

zakarya2626
Participant occasionnel
Date d'inscription: 9 May 2019
Messages: 13

Mise à jour d'une table en utilisant ST_GeometryFromText

J'essaie de faire de mettre à jour une colonne de type géométrie , en se basant sur deux colonnes de la même table : "longitude" et "latitude" afin de créer des point .  j'utilise Pgadmin comme outil pour gérer la base de données .

Code:

 UPDATE sirene_test.etablisssement_actif
SET geom=ST_GeometryFromText('POINT('|| latitude  ||' '|| longitude ||')', 4326);

j'obtiens l’erreur suivante :

Code:

ERREUR:  parse error - invalid geometry
HINT:  "POINT( )" <-- parse error at position 9 within geometry
********** Erreur **********

ERREUR: parse error - invalid geometry
État SQL :XX000
Astuce : "POINT( )" <-- parse error at position 9 within geometry

je ne sais pas où est le problème !

Merci

Hors ligne

 

#2 Wed 13 November 2019 11:32

nworr
Participant actif
Date d'inscription: 10 Apr 2014
Messages: 74

Re: Mise à jour d'une table en utilisant ST_GeometryFromText

A priori vu le hint, c'est par ce que les champs "latitude" "longitud" sont vide.

Eventuellement faire

Code:

UPDATE sirene_test.etablisssement_actif
SET geom=ST_GeometryFromText('POINT('|| latitude  ||' '|| longitude ||')', 4326)
WHERE COALESCE(latitude  ,'') <> '' AND COALESCE(longitude,'') <> '' ;

Hors ligne

 

#3 Wed 13 November 2019 14:15

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

Re: Mise à jour d'une table en utilisant ST_GeometryFromText

Bonjour,

Attention ! un point Postgis est défini en longitude/latitude, pas en lat-long ! (vos points vont etre en Somalie/corne de l'afrique wink )

Utilisez de préference st_makePoint(long, lat), ca gère mieux ce genre d'erreur (nullité d'une valeur protégée par coalesce)


Code:

update ... set geom = st_setSRID(st_makePoint(long, lat), 4326))

peut etre un st_transform si vous voulez le point projeté
Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB