#1 楼
推荐的方法是使用pgsql2shp实用程序,该实用程序应与PostGIS一起安装。请注意,您必须在查询中包括“几何”列。$ pgsql2shp -f <path to output shapefile> -h <hostname> -u <username> -P <password> databasename "<query>"
示例(在当前目录中创建
qds_cnt.shp
):$ 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].
如果要将整个表另存为shapefile,只需使用表名作为查询。
还可以使用ogr2ogr实用程序,但是它具有更多的依赖性,因此不应成为第一选择。如果确定,等效命令为:
$ 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'"
另请参见
Linfinity PostGIS导入/导出指南
使用Python将PostGIS表转换为Shapefile吗?
#2 楼
我没有足够的声誉积分来评论rudivonstaden的答案,但我想补充一点,以大写字母编写sql命令对pgsql2shp至关重要。例如,这将不起作用:
$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "Select sp_count, geom from grid50_rsa where province = 'Gauteng'"
这将起作用:
$ pgsql2shp -f qds_cnt -h localhost -u postgres -P password gisdb "SELECT sp_count, geom FROM grid50_rsa WHERE province = 'Gauteng'"
#3 楼
根据要导出的数据,另一种方法是使用qgis或类似的产品:在其中打开postgis的连接,然后选择所需的数据;然后将其另存为shapefile ...如果要自动导出和/或大量数据,rudivonstaden提供了适当的解决方案!
评论
是否可以使用pgsql2shp将视图导出到shapefile?
–里卡多·巴罗斯·洛伦索
18 Mar 27 '18 at 20:32