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