2010-06-10 65 views
8

我正在使用GeoDjango中的形状文件。现在我试图编写一个加载到形状文件中的代码的测试并将其保存到数据库中。形状文件当前具有64,118的特征计数。我想将其减少到少数,以便测试可以快速加载它并确认一切正确。将ESRI Shape SHP文件的子集拆分或保存到新文件中?

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

我应该提到我没有许可证,也没有访问任何ESRI产品线。

+0

也许这些问题也适用于http://gis.stackexchange.com/? – 2011-10-18 07:50:15

+0

这些进程可以使用文件地理数据库中的shp文件吗?我的档案和坡度有超过1600万条记录。最好, – GeorgeC 2011-10-18 02:16:11

回答

12

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

  • 任何开源桌面GIS都可以执行此操作。一些更多的人群是Quantum GIS,gvSIGopenJUMP。确切的步骤在每一个中都有所不同,但基本上你必须加载形状文件,开始编辑,选择你想要的记录并将它们导出到一个新的形状文件。

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

    ogr2ogr -f “ESRI shape文件” -where “ID < 10” new_shapefile.shp huge_shapefile.shp

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

    pgsql2shp -f “/路径/到/ shape文件” -h服务器-u用户-P密码postgisdb “SELECT * FROM表WHERE ID < 10”

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