#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
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)
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
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: 1554
Re: 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.
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