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

Annonce

GEODATA DAYS 2024

#1 Fri 20 July 2012 10:11

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 104

ogr2ogr export table Postgis en Shape suite à requete spatiale

Bonjour la Communauté,

je cherche à exporter en shape le résultat d'une requete spatiale effectuée sous Postgis.

La requete sous Postgis est de type "trouver tous les occupants situés dans un périmètre de 400m autour d'un batiment".

la requete SQL ci-dessous lancée sous Postgis fonctionne parfaitement et renvoie un résultat correct:

Code:

SELECT num_voirie.gc_key, num_voirie.nom, num_voirie.occupant
FROM num_voirie
join bati_dur
on ST_DWithin (num_voirie.geometrie, bati_dur.geometrie, 400)
where bati_dur.gc_key='5127420';

A présent, je cherche à partir de Fwtools à créer le shape correspondant au résultat de ma requete. Voici le code que j'écris:

Code:

ogr2ogr -f "ESRI Shapefile" c:\transfo\test.shp PG:"host=192.168.1.149 
user=postgres dbname=cadastre password=monmotdepasse" 
-sql "select num_voirie.gc_key, num_voirie.nom, num_voirie.occupant 
from num_voirie join bati_dur on ST_DWithin (num_voirie.geometrie, bati_dur.geometrie, 400)
where bati_dur.gckey='5127420'"

J'ai alors un message d'erreur du type: "ERROR1 : ERROR: current transaction is aborted, commands ignored until end of transaction block"

Est ce que je m'y prends mal, existe-t-il une autre solution ?

D'avance merci pour votre aide
Cordialement

Hors ligne

 

#2 Fri 20 July 2012 11:53

tqhien
Participant actif
Lieu: Clamart
Date d'inscription: 22 Apr 2011
Messages: 78

Re: ogr2ogr export table Postgis en Shape suite à requete spatiale

Bonjour,

Ce type de message apparaît quand l'appel à la requête renvoie une erreur. Je pencherai pour un problème de version entre fwtools, gdal et postgresql. Est-ce que des requêtes simple (select * from matable) fonctionne déjà ?

Hien.

Hors ligne

 

#3 Fri 20 July 2012 15:35

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 104

Re: ogr2ogr export table Postgis en Shape suite à requete spatiale

J'utilise la version 2.4.7 de FWTools et la version 8.3 de Postgre

J'ai testé cette 1ere requête:

Code:

ogr2ogr -f "ESRI Shapefile" c:\transfo\test_ogr.shp
PG:"host=192.168.1.149 user=postgres dbname=cadastre 
password=monmotdepasse" "num_voirie"

le fichier shape a bien été créé, je l'ai ouvert sous Qgis, tout est ok

J'ai testé cette seconde requete avec une clause SQL limitant la table aux objets d'une commune (sur la champ Planche):

Code:

ogr2ogr -f "ESRI Shapefile" c:\transfo\test_ogr2.shp
PG:"host=192.168.1.149 user=postgres dbname=cadastre 
password=monmotdepasse" -sql "select voie_nom, 
occupant from num_voirie where planche='26295'"

et là par contre, je n'ai pas d'erreur mais le résultat est très bizarre lorsqu'on consulte sous Qgis.
En effet, ma table Postgis d'origine contient des objets ponctuels (des numéros de voie) et ogr2ogr me crée une couche shape de type linéaire ! Le plus bizarre c'est que les objets ont bien été filtrés avec les attributs demandés mais rien n'apparait sous Qgis (même en zoomant sur l'emprise de la couche)!

J'avoue être un peu déboussolé. Est ce que la synthaxe de ma ligne de commande est correcte ?

Hors ligne

 

#4 Sat 21 July 2012 14:03

rouault
Participant assidu
Date d'inscription: 26 Apr 2009
Messages: 166

Re: ogr2ogr export table Postgis en Shape suite à requete spatiale

Il faut ajouter dans ta requête SQL le nom de la colonne qui contient la géométrie, soit "geometrie" si j'ai bien suivi :

Code:

ogr2ogr -f "ESRI Shapefile" c:\transfo\test_ogr2.shp PG:"host=192.168.1.149 user=postgres dbname=cadastre password=monmotdepasse" -sql "select voie_nom, occupant, geometrie from num_voirie where planche='26295'"

Quant à ta première requête qui échouait, je ne sais pas trop pourquoi. Je te conseille d'utiliser un binaire plus récent que FWTools qui n'est plus maintenu, par exemple comme ceux dispos sur http://vbkto.dyndns.org/sdk/ . Normalement à partir de GDAL 1.9.0, le message d'erreur est plus explicite si je me souviens bien

Hors ligne

 

#5 Tue 24 July 2012 12:26

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 104

Re: ogr2ogr export table Postgis en Shape suite à requete spatiale

rouault a écrit:

Il faut ajouter dans ta requête SQL le nom de la colonne qui contient la géométrie, soit "geometrie" si j'ai bien suivi :


Effectivement, j'avais oublié de préciser le champ "geometrie" dans la requete SQL. J'ai testé et le résultat est correct
Pour la requete avec le ST_Dwithin, je testerai demain avec une version plus récente de FwTools.
en tout cas, merci pour les éléments de réponse.

Cordialement

Hors ligne

 

#6 Wed 25 July 2012 11:15

guibouvier
Participant actif
Date d'inscription: 23 Jan 2007
Messages: 104

Re: ogr2ogr export table Postgis en Shape suite à requete spatiale

rouault a écrit:

Quant à ta première requête qui échouait, je ne sais pas trop pourquoi. Je te conseille d'utiliser un binaire plus récent que FWTools


Re,

j'ai suivi tes conseils et retélécharger Gdal à partir de OsGeo4W. J'ai lancé cette requête sous OSGeo4WShell:

Code:

ogr2ogr -f "ESRI Shapefile" c:\transfo\test2.shp PG:"host=192.168.1.149 
user=postgres dbname=cadastre password=monmotdepasse" 
-sql "select num_voirie.nom, num_voirie.occupant, num_voirie.geometrie 
from num_voirie join bati_dur on ST_DWithin (num_voirie.geometrie, 
bati_dur.geometrie, 400) where bati_dur.gc_key='5127420'"

Et là génial ! tout a parfaitement fonctionné

Merci encore pour ton aide

Hors ligne

 

Pied de page des forums

Powered by FluxBB