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 Tue 24 January 2012 12:07

khalid_sig
Participant actif
Date d'inscription: 7 Apr 2011
Messages: 52

[postGIS] Insértion d'un ensemble de points

Bonjour

Après avoir inséré ma couche SHP de point dans ma base de données dans Postgis, je veux à partir d'un fichier texte (ou fichier CSV) contenant les coordonnées des points, les ajouter à ma table postgis.

Y-a-t il des requêtes SQL permettant de faire ceci ?

Merci

Hors ligne

 

#2 Tue 24 January 2012 12:41

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

Re: [postGIS] Insértion d'un ensemble de points

khalid_sig a écrit:

Bonjour

Après avoir inséré ma couche SHP de point dans ma base de données dans Postgis, je veux à partir d'un fichier texte (ou fichier CSV) contenant les coordonnées des points, les ajouter à ma table postgis.

Y-a-t il des requêtes SQL permettant de faire ceci ?

Merci


Oui, la commande COPY permet de faire ca (charger un fichier csv, texte, etc).
pour des points X-Y, le plus simple est souvent:
    • Creation de la table cible, avec les champs x-y sous forme de doubles/float ET le champ geometry
    • Import des données dans la table a partir du CSV (COPY)
    • Mise a jour de la table pour remplir la colonne geometry avec les colonnes X-Y:

Code:

update matable set geometry = st_makepoint(x, y);

(attention au SRID, a l'ordre X-Y si les données sont en Latitude Longitude, etc)
    • Eventuellement supprimer les colonnes X-Y de la table, si elles ne servent plus.

Nicolas

Hors ligne

 

#3 Thu 02 February 2012 15:17

khalid_sig
Participant actif
Date d'inscription: 7 Apr 2011
Messages: 52

Re: [postGIS] Insértion d'un ensemble de points

Bonjour

je vous remercie pour votre réponse.

la structure de ma table est comme suit:

gid serial NOT NULL,
  bornes character varying(254),
  x double precision,
  y double precision,
  the_geom geometry,
  CONSTRAINT shp_point_pkey PRIMARY KEY (gid ),
  CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
  CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL),
  CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 26191)

j'ai testé la commande mais ça me donne cette erreur:

la nouvelle ligne viole la contrainte de vérification « shp_point » de la relation « enforce_srid_the_geom »

Hors ligne

 

#4 Thu 02 February 2012 16:34

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

Re: [postGIS] Insértion d'un ensemble de points

khalid_sig a écrit:

Bonjour

je vous remercie pour votre réponse.

la structure de ma table est comme suit:

gid serial NOT NULL,
  bornes character varying(254),
  x double precision,
  y double precision,
  the_geom geometry,
  CONSTRAINT shp_point_pkey PRIMARY KEY (gid ),
  CONSTRAINT enforce_dims_the_geom CHECK (st_ndims(the_geom) = 2),
  CONSTRAINT enforce_geotype_the_geom CHECK (geometrytype(the_geom) = 'POINT'::text OR the_geom IS NULL),
  CONSTRAINT enforce_srid_the_geom CHECK (st_srid(the_geom) = 26191)

j'ai testé la commande mais ça me donne cette erreur:

la nouvelle ligne viole la contrainte de vérification « shp_point » de la relation « enforce_srid_the_geom »


Bonjour,

Oui, d'ou ma remarque sur le SRID et l'attention a lui apporter:
Votre table a une contrainte permettant de garantir que le SRID des objets de la table soit bien toujours le meme.

Il faut englober l'appel a makePoint par st_setsrid, qui permet d'affecter un SRID a une géometries créée:

Code:

update matable set geometry = st_setsrid(st_makepoint(x, y), 26191);

Nicolas

Hors ligne

 

#5 Thu 02 February 2012 17:35

khalid_sig
Participant actif
Date d'inscription: 7 Apr 2011
Messages: 52

Re: [postGIS] Insértion d'un ensemble de points

Je vous remercie.

Par contre, le copy ne fonctionne pas car ma table contient 5 champs alors que mon fichier csv contient 3 champs (borne, X et Y).

Hors ligne

 

#6 Thu 02 February 2012 18:31

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

Re: [postGIS] Insértion d'un ensemble de points

khalid_sig a écrit:

Je vous remercie.

Par contre, le copy ne fonctionne pas car ma table contient 5 champs alors que mon fichier csv contient 3 champs (borne, X et Y).


la commande COPY permet de préciser les colonnes a copier.
Sinon, faites le contraire: créez une table contenant les 3 colonnes du fichier
chargez le fichier
créez les autres colonnes (dont la colonne geo)

Nicolas

Dernière modification par Nicolas Ribot (Thu 02 February 2012 22:51)

Hors ligne

 

#7 Mon 25 June 2012 11:42

christophe_hardy
Participant actif
Lieu: Arras
Date d'inscription: 24 Oct 2011
Messages: 101

Re: [postGIS] Insértion d'un ensemble de points

Bonjour,

merci beaucoup pour les réponses sur ce post, c'est exactement ce que je recherchais sur les SRID et les fonction MakePoint.

Hors ligne

 

Pied de page des forums

Powered by FluxBB