Friday, 18 May 2018

How can I get a shapefile from a postgis query?


My data is in a PostGIS database. I would like to generate a shapefile from a query. How can I do that?



Answer



The recommended way to do this is using the pgsql2shp utility, which should be installed with PostGIS. Note that you must include the geometry column in the query.



$ pgsql2shp -f  -h  -u  -P  databasename ""

Example (creates qds_cnt.shp in current directory):


$ 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].


If you wanted to save a whole table as a shapefile, just use the table name as the query.


You can also use the ogr2ogr utility, but it has more dependencies so should not be the first option. If you are determined, the equivalent command would be:


$ 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'"

See also



No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...