#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: 77
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: 1554
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 )
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
En ligne