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é ?

#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 smile

Lison

Hors ligne

 

#2 Tue 20 April 2021 16:13

cquest
Participant assidu
Date d'inscription: 6 Jan 2013
Messages: 873

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 smile

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

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

 

Pied de page des forums

Powered by FluxBB