#1 Tue 20 April 2021 15:02
- Lison94
- Participant actif
- Date d'inscription: 1 Apr 2020
- Messages: 124
ajouter géométrie (polygone) à une table postgis
Bonjour à tous,
J'ai importé une table dans ma bdd postgis. Dans cette table il y a une colonne y et une colonne x pour géolocaliser. Comment procéder pour appliquer la géolocalisation de la table ?
Merci
Lison
Hors ligne
#2 Tue 20 April 2021 16:13
- cquest
- Participant assidu
- Date d'inscription: 6 Jan 2013
- Messages: 875
Re: ajouter géométrie (polygone) à une table postgis
1) ajouter la colonne:
ALTER TABLE ma_table ADD geom geometry;
2) remplir ce nouveau champ
UPDATE ma_table SET geom = ST_MakePoint(x,y);
Ensuite un index géographique peut être utile...
CREATE INDEX ON ma_table USING GIST (geom);
Christian Quest - https://amicale.net/@cquest sur Mastodon (terminé twitter/X)
Membre fondateur et porte parole d'OpenStreetMap France
Initiateur de opendatArchives, OpenEventDatabase, Panoramax
Hors ligne
#3 Tue 20 April 2021 16:53
- Lison94
- Participant actif
- Date d'inscription: 1 Apr 2020
- Messages: 124
Re: ajouter géométrie (polygone) à une table postgis
Merci
du coup il faut que je remplace x et y par ma latitude et longitude ?
Car j'ai en retour de la 2eme étape :
ERROR: function st_makepoint(character varying, character varying) does not exist
LIGNE 1 : ...nergie".nrj_potentiel_solaire_cnr_ccrc SET geom = ST_MakePoi...
^
ASTUCE : No function matches the given name and argument types. You might need to add explicit type casts.
Hors ligne
#4 Tue 20 April 2021 17:39
- Jean-Michel
- Membre
- Lieu: An Oriant /Lorient
- Date d'inscription: 3 Oct 2005
- Messages: 3909
Re: ajouter géométrie (polygone) à une table postgis
Bonjour,
Vous aurez à transformer vos données x, y stockées en VARCHAR avec une fonction de ce type
set geomwgs84=st_setsrid(ST_MakePoint(CAST (x AS DOUBLE PRECISION),CAST (y AS DOUBLE PRECISION)), 4326)
Où geomwgs84 est le nom de ma colonne de géometrie stockées en WGS84 (EPSG 4326)
Jean-Michel
GeoRezo, c'est des blogs, un wiki, un Netvibes ...
GeoRezo vous aide ==> Aidez GeoRezo !
Hors ligne
#5 Tue 20 April 2021 19:58
- cquest
- Participant assidu
- Date d'inscription: 6 Jan 2013
- Messages: 875
Re: ajouter géométrie (polygone) à une table postgis
Ou plus simplement:
ST_MakePoint(x::numeric, y::numeric)
x = longitude
y = latitude
et si ces x/y sont bien en ° WGS84, ajouter le ST_SetSRID indiqué par Jean-Michel (sinon utiliser le code de la projection de la source, comme 2154 si c'est du lambert93).
ST_SetSRID(ST_MakePoint(x::numeric, y::numeric),4326)
Christian Quest - https://amicale.net/@cquest sur Mastodon (terminé twitter/X)
Membre fondateur et porte parole d'OpenStreetMap France
Initiateur de opendatArchives, OpenEventDatabase, Panoramax
Hors ligne
#6 Wed 21 April 2021 13:05
- ChristopheV
- Membre
- Lieu: Ajaccio
- Date d'inscription: 7 Sep 2005
- Messages: 3198
- Site web
Re: ajouter géométrie (polygone) à une table postgis
Bonjour,
Vous pouvez synthétiser en écrivant :
Code:
ALTER TABLE some_table ADD COLUMN geom geometry(Point,4326)
Il faut se méfier de la fonction setsrid car elle ne fait qu'attribuer un SRID à la donnée sans en modifier les valeur.
Si vos données sont exprimées dans une projection X (3942 par exemple) et que vous faite un st_setSRID(geom,4326) les données seront toujours en 3942 elles ne seront pas reprojetées.
Pour reprojeter des données il faut utiliser la fonction st_transform()
Note Modération : Ce sujet à sa place dans GeoBD non ?
Christophe
L'avantage d'être une île c'est d'être une terre topologiquement close
Hors ligne