将ESRI Shape SHP文件的子集拆分或保存到新文件中?

时间:2010-06-10 17:07:00

标签: gis shapefile geodjango

我正在使用GeoDjango中的形状文件。现在我正在尝试为加载在形状文件中的代码编写测试并将其保存到数据库中。形状文件目前的功能数量为64,118。我想把它减少到少数,所以测试可以快速加载并确认一切正常。

由于形状文件不是文本格式,是否有免费的应用程序或库可以用来提取一些功能并将它们保存到新文件中?

我应该提到我没有许可证也无法访问任何ESRI产品系列。

1 个答案:

答案 0 :(得分:12)

您有几个选项可以从shapefile导出记录子集。

  • 任何开源桌面GIS都能够执行此操作。一些较为流行的人物是Quantum GISgvSIGopenJUMP。每个步骤的确切步骤会有所不同,但基本上你必须加载形状文件,开始编辑,选择你想要的记录并将它们导出到新的shapefile。

  • ogr2ogr工具是GDAL包的一部分,允许您在不同的地理矢量格式之间(或在相同的格式内)进行转换,并且您可以指定类似SQL的表达式来过滤原始数据集

    ogr2ogr -f“ESRI Shapefile”-where“id< 10”new_shapefile.shp huge_shapefile.shp

  • 如果您使用的是PostGIS并且不想安装任何以前的应用程序,则可以使用pgsql2shp工具将PostGIS表的子集导出到shapefile。

    pgsql2shp -f“/ path / to / shapefile”-h server -u user -P password postgisdb     “SELECT * FROM table WHERE id< 10”

编辑:在三个选项中的任何一个中,您都可以执行空间过滤器(即位于边界框内的要素),而不是基于属性的选择。