使用开源工具删除重复的多边形


13

我有一个shapefile,其中包含具有重复几何图形但具有不同属性的特征(例如,具有XX属性的多边形和具有XY属性的相同多边形)。我要确定重复项,然后选择一个具有正确属性的属性,然后删除另一个属性。

我曾在OpenJump / Kosmo中尝试过拓扑工具,但没有成功。他们有一个“删除重复项”工具可以满足我的要求,但似乎可以任意删除其中一项功能,而不是让我选择保留哪一项。

我可以访问QGIS,OpenJUMP,Kosmo等,并且可以根据需要安装其他开源/免费工具。

有什么想法吗?

Answers:


7

除了PostGIS,您还可以使用拓扑开源GIS(GRASS):

  1. 下载并安装
  2. 启动并选择“位置管理器”,使用该工具从您的SHAPE文件(称为“ GRASS位置”)生成新的项目数据库,有关逐步指南,请参见此处
  3. 导入SHAPE文件
  4. 使用“ v.clean”工具可提供一系列选项
  5. 使用“ v.out.ogr”将地图导出回SHAPE文件格式

旁注:我们正计划为此提供WPS,以便您可以通过我们的Web门户完善数据。


我不相信v.clean允许用户“交互式地”识别和修复拓扑错误。如果我错了,请纠正我。
达伦·科普

我想念您想互动进行。因此,v.digit数字转换器是要使用的工具。
markusN

马库斯(Markus),快速浏览v.digit听起来并不像我想要的那样。您能否举例说明如何使用v.digit完成任务?
达伦·科普,2010年

1
实际上,仅将shapefile导入GRASS会创建一个重叠多边形层作为2_polygon层。我认为这足以让我继续前进!
达伦·科普,2010年

3

在这些情况下,我就是这样做的。据我了解,您将必须进行手动检查,以决定哪个具有正确的属性。然后,我用两步来完成它。首先,我用重复的多边形在PostGIS中创建一个表或视图,然后在桌面GIS中打开该表以及要删除重复项的原始图层。这将导致我通过重复表找到重复项,并且可以在原始表或shapefile或任何其他文件中删除。

如果您有一个称为gid的唯一ID和一个名为the_geom的几何列,则查找重复项的查询将类似于以下内容:

create table duplicates as
select a.the_geom, a.gid, b.gid from mytable a, mytable b 
where ST_Equals(a.the_geom, b.the_geom) and a.gid!=b.gid;

ST_Equals上有一些变体,但我认为ST_Equals是您想要的变体。这将为您提供一张表格,其中包含重复的几何图形以及该多边形第一次和第二次的gid(id)。虽然您会获得两次相同的重复项,但这无关紧要,因为您只希望它们向您显示它们在哪里。

HTH尼克拉斯


3

如果您使用的是PostGIS 1.5.x,请签出ST_HausdorffDistance()函数。
重复的几何图形将产生0值。像提到的自联接一样使用它。比较多边形形状非常整洁。


0

一种更简单的方法。计算桌面GIS中的面积并按面积递增或递减顺序排序。现在,您必须检查每一行,以查看属性表中的重复对象。它基于这样的假设:对于某些区域,如果没有重复的对象,则永远不会有完全相同的区域,尽管有时可能会出错。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.