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

Printemps des cartes 2024

#1 Thu 21 December 2006 09:54

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

pgsql2shp et projection

Bonjour

Je souhaite obtenir un format shape pour une table de ma base postgresql/postgis, j'utilise donc pgsql2shp mais à l'inverse de shp2pgsql, je ne peux pas préciser la projection (-s 27571 avec shp2pgsql).
Après avoir tout de même essayé en me disant que le système de projection serait conservé, j'ouvre ma couche dans QGIS et m'aperçois qu'elle n'a pas récupéré le système de projection. Je ne peux pas non plus modifier la projection dans QGIS car il ne propose pas de sauvegarder la couche.

Comment puis je faire pour conserver ma projection ?

Merci pour votre aide.

Hors ligne

 

#2 Thu 21 December 2006 10:04

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: pgsql2shp et projection

Bonjour,

La projection est conservé dans un fichier prj. À ma connaissance QGIs n'utilise pas ce fichier pour connaitre la projection. Vous devez donc la définir vous même dans QGIS.

D'abord définissiez la projection de votre projet : menu "Préférence">"Propriété du projet", onglet "Projection", cochez la case "autorise la projection en marche" et choisissez la projection voulut en dessous  (copie d'écran n°1).

Puis double cliquez sur la couche (clique droit "Propriété") puis onglet "Générale", cliquez sur le bouton "changement" au niveau de la projection. Une fenêtre vous permet de choisir la projection de la couche (copie d'écran n°2).

Dernière modification par Yves (Thu 21 December 2006 10:05)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#3 Thu 21 December 2006 10:34

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

Re: pgsql2shp et projection

Ma couche shape dispose donc de la bonne projection.

Merci pour votre réponse.

Hors ligne

 

#4 Thu 21 December 2006 10:53

Sylvain Perrinel
Juste Inscrit !
Date d'inscription: 12 Apr 2006
Messages: 3

Re: pgsql2shp et projection

Bonjour,
sinon vous pouvez essayer d'utiliser la commande ogr2ogr
comme suit :

Code:

ogr2ogr -f "ESRI Shapefile" test.shp "PG:dbname=nom_base port=port_base 
user=username password=******" -sql "select * from table_test"

Il y alors trois moyens de préciser la projection en option :
-a_srs srs_def: Assign an output SRS
-t_srs srs_def: Reproject/transform to this SRS on output
-s_srs srs_def: Override source SRS

Pour ma part, je viens d'essayer sans changer la projection et la couche
.shp ouverte dans QGIS présente bien la même projection que celle de
postgis.

Voilà bonne journée

Hors ligne

 

#5 Thu 21 December 2006 11:16

Sylvain Perrinel
Juste Inscrit !
Date d'inscription: 12 Apr 2006
Messages: 3

Re: pgsql2shp et projection

Vous pouvez aussi faire la transformation au niveau de la requête sql :

Code:

ogr2ogr -f "ESRI Shapefile" test.shp "PG:dbname=nom_base port=port_base 
user=username password=******" -sql "select id, nom, transform(the_geom, 27582) from table_test"

Dernière modification par Sylvain Perrinel (Thu 21 December 2006 11:26)

Hors ligne

 

#6 Thu 21 December 2006 11:29

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

Re: pgsql2shp et projection

J'ai essayé cette solution mais je ne sais pas comment renseigner l'option :

"-a_srs srs_def: Assign an output SRS
-t_srs srs_def: Reproject/transform to this SRS on output
-s_srs srs_def: Override source SRS"

J'ai par exemple utilisé "-a_srs srs_def:21571" mais ca ne passe pas.

Merci pour votre réponse.

J'en profite :

Je recherche un logiciel gratuit permettant de visualiser mes couches ou même de se connecter à postgre/gis et proposant une impression de qualité (QGIS n'a pas l'air trés efficace).

Hors ligne

 

#7 Thu 21 December 2006 12:17

Yves
Membre du bureau
Lieu: Aix-les-Bains
Date d'inscription: 22 Mar 2006
Messages: 9855
Site web

Re: pgsql2shp et projection

Bonjour,

Je vous propose de lire la doc pour savoir comment définir la projection :
http://gdal.maptools.org/ogr/ogr2ogr.html
La projection se définie comme suit :

Code:

-a_srs "EPSG:21571

D'autre part, quelle fonctionnalité recherchez vous pour votre logiciel ? Il existe uDIG, GvSIG, ... qui sont des logiciels libres.

Y.

Dernière modification par Yves (Thu 21 December 2006 12:18)


Yves Jacolin, bénévole de l'association GeoRezo.net, agit au nom et pour le compte de l'association - Partageons ce qui nous départage !!  - GeoRezo vous aide ? Aidez GeoRezo !

Hors ligne

 

#8 Thu 21 December 2006 12:19

Sylvain Perrinel
Juste Inscrit !
Date d'inscription: 12 Apr 2006
Messages: 3

Re: pgsql2shp et projection

En fait, je viens de faire des tests et il  me semble qu'on est obligé de passer par un pgsql2shp puis ogr2ogr car ogr2ogr ne prend pas bien en compte les projections d'une base postgis.

Code:

ogr2ogr -f "ESRI Shapefile" test.shp "PG:dbname=base port=port user=username password=*****" -sql "select * from table_geo"  -a_srs "EPSG:4326"

Cette syntaxe ne fonctionne pas. Les bornes de la couche ne sont pas bien géré et je ne sais pas pourquoi.

Donc voilà comment procéder :

Code:

PGCLIENTENCODING=iso-8859-9 pgsql2shp -f test.shp -p port -h host -u username -P ***** nom_de_la_base 'SELECT * FROM couche_geo'

Puis :

Code:

ogr2ogr -f "MapInfo File" test.tab test.shp -a_srs "EPSG:4326"

pour l'avoir au format MapInfo.
-a_srs permet d'assigner une projection au fichier de sortie
-s_srs correpond à la projection du fichier source
-t_srs permet de transformer le système de projection

Et pour l'avoir au format Shape :

Code:

ogr2ogr -f "Esri Shapefile" test2.shp test.shp -a_srs "EPSG:4326"

Chez moi, c'est la méthode qui fonctionne.
Le 'PGCLIENTENCODING=iso-8859-9' permet de gérer l'encoding des caractères de sortie. Notamment, lorsque la base de données est en UTF-8 et qu'il faut des fichiers pour Windows qui lui est en ISO.

Voilà

Hors ligne

 

#9 Thu 21 December 2006 19:35

davidtecher
Participant occasionnel
Date d'inscription: 8 Sep 2005
Messages: 15

Re: pgsql2shp et projection

sinon avec pgsql2shp il est aussi possible d'utiliser la fonction transform qui permet de reprojet à la volée puisque pgsql2shp accepte aussi les requêtes en ligne de commande

exemple

pgsql2shp -f [nom_shapefile].shp [base] "[REQUETE]"

donnerait quelque chose comme

pgsql2shp -f [nom_shapefile].shp -g transform [base] "select the_geom,[id_transform]),??? from [votre_table]"

où [id_transfomr] est le srid de la projection de destination

et ???? les champs supplémentaires à exporter

Hors ligne

 

#10 Fri 22 December 2006 09:16

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

Re: pgsql2shp et projection

Merci pour ces réponses,

Pour ce qui est de la commande :

Code:

PGCLIENTENCODING=iso-8859-9 pgsql2shp -f test.shp -p port -h host -u username -P ***** nom_de_la_base 'SELECT * FROM couche_geo'

je ne sais pas comment l'utiliser cependant je devrais réussir à exporter correctement mes couches.

Je m'interesse aussi à openjump 2.1, les liens avec postgis sont trés interessants. Cependant lorsque je veux "charger des données vectorielles" provenant de ma base postgis, je configure la connexion, elle s'établie mais les tables qu'il me propose ne correspondent pas à ce qu'il y a réellement dans ma base. (une table qui n'existe plus, et deux nouvelles tables qui n'apparaissent pas). (c'est peut être pas trés clair)

J'ai configurer le isql viewer qui lui voit correctement le contenu de ma base.

Quelqu'un connait-il la raison du problème ?

(J'ai selectionné l'option active synchronisation, mais pas de changement, c'est comme si le logiciel reprenait une ancienne connexion obsolète)

Dernière modification par jonathan (Fri 22 December 2006 09:53)

Hors ligne

 

#11 Fri 22 December 2006 16:10

cedricd
Participant occasionnel
Lieu: Dijon
Date d'inscription: 20 Mar 2006
Messages: 19

Re: pgsql2shp et projection

Bonjour,

Le listage des couches (tables spatiales) Postgis dans OpenJump (pour ma part sur la version Viatoris 2.0) semble se baser sur les informations stockées dans la table geometry_columns. Ainsi, les tables contenant des types "geometry" mais qui ne sont pas réferencées dans la table "geometry_columns" ne sont pas visibles dans la fenêtre de chargement des données d'OpenJump.

A contrario, la suppression d'une table spatiale avec "DROP" n'entraine pas la suppression de la ligne dans la table "geometry_columns", ces tables supprimées restent donc visibles par OpenJump.

Concrètement, il faut s'assurer en permanence que la table "geometry_columns" contienne bien l'ensemble des tables spatiales de la base (et supprimer les lignes pour les tables spatiales qui n'existent plus).

Postgis propose des fonctions permettant de gérer les informations de la table "geometry_columns" (DropGeometryTable,AddGeometryColumn, etc.) , se réferer à la documentation sur les sites www.postgis.org ou www.postgis.fr

Par ailleurs, il semble également possible de visualiser des vues spatiales dès lors que celles-ci sont elles aussi réferencées dans la table "geometry_columns".

En esperant que ces quelques infos vous soient utiles.

Hors ligne

 

#12 Fri 22 December 2006 16:23

jonathan
Participant assidu
Date d'inscription: 16 May 2006
Messages: 263

Re: pgsql2shp et projection

Merci beaucoup pour cette réponse.

Hors ligne

 

#13 Fri 21 May 2010 16:23

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

Re: pgsql2shp et projection

jonathan a écrit:

Bonjour

Je souhaite obtenir un format shape pour une table de ma base postgresql/postgis, j'utilise donc pgsql2shp mais à l'inverse de shp2pgsql, je ne peux pas préciser la projection (-s 27571 avec shp2pgsql).
Après avoir tout de même essayé en me disant que le système de projection serait conservé, j'ouvre ma couche dans QGIS et m'aperçois qu'elle n'a pas récupéré le système de projection. Je ne peux pas non plus modifier la projection dans QGIS car il ne propose pas de sauvegarder la couche.

Comment puis je faire pour conserver ma projection ?

Merci pour votre aide.


Bonjour,

Par ligne de commande, il est assez facile de demander a PG de generer le .prj qui va bien en association avec le shapefile généré. Il suffit de placer le tout dans un fichier batch prenant en parametre la requete ou la table a exporter et le srid:

pgsql2shp pour generer le shapefile
puis psql -c "select srtext from spatial_ref_sys where srid = 27582" > nom_du_shapefile.prj

La limitation vient du format meme SRTEXT WKT: ce format ne permet pas une reconnaissance parfaite du systeme de projection décrit. Il se peut alors que la version SRTEXT venant de postgis ne plaise pas a un soft ESRI, qui ne reconnaitra pas "son" format WKT

Nicolas

Hors ligne

 

Pied de page des forums

Powered by FluxBB