Comment puis-je obtenir un fichier de formes à partir d'une requête postgis?

44

Mes données sont dans une base de données PostGIS. J'aimerais générer un fichier de formes à partir d'une requête. Comment puis je faire ça?

rudivonstaden
la source

Réponses:

86

La méthode recommandée consiste à utiliser l' utilitaire pgsql2shp , qui devrait être installé avec PostGIS. Notez que vous devez inclure la colonne de géométrie dans la requête.

$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"

Exemple (crée qds_cnt.shpdans le répertoire courant):

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Initializing... 
Done (postgis major version: 2).
Output shape: Polygon
Dumping: XXXXXXXXXXXXXXXXXXXX [1947 rows].

Si vous souhaitez enregistrer une table entière en tant que fichier de formes, utilisez simplement le nom de la table en tant que requête.

Vous pouvez également utiliser l' utilitaire ogr2ogr , mais il comporte davantage de dépendances et ne devrait donc pas être la première option. Si vous êtes déterminé, la commande équivalente serait:

$ ogr2ogr -f "ESRI Shapefile" qds_cnt.shp PG:"host=localhost user=postgres dbname=gisdb password=password" -sql "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"

Voir également

rudivonstaden
la source
Est-il possible d'utiliser pgsql2shppour exporter une vue vers un fichier de formes?
Ricardo Barros Lourenço
8

Je n'ai pas assez de points de réputation pour commenter la réponse de rudivonstaden, mais j'ajouterais que l'écriture de commandes SQL en majuscules est importante pour pgsql2shp.

Par exemple, cela ne fonctionnera pas:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "Select sp_count, geom from grid50_rsa where province = 'Gauteng'"

alors que cela fonctionnera:

$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
pandorabob
la source
7

Selon le type de données que vous souhaitez exporter, vous pouvez également utiliser qgis ou un produit similaire: ouvrez une connexion postgis et sélectionnez les données qui vous intéressent. alors vous enregistrez en tant que fichier de formes ...

Si vous souhaitez exporter automatiquement et / ou de grandes quantités de données, rudivonstaden vous a fourni les solutions appropriées!

Un nom
la source