如何自动填充多边形中的孔?


12

QGIS中是否可以通过设置参数(例如最大面积,边界线之间的距离)来自动填充多边形中的孔?我想删除/填充非常“薄” /小的孔。


1
您是否对(球体内部的环)或减小单独的多边形之间的间隙感兴趣?
Simbamangu

这是否必须是基于QGIS的解决方案?之前,我曾写过博客,内容涉及如何在PostGIS(geospatial.commons.gc.cuny.edu/2013/11/04/…)中使用空间SQL来完成此任务。如果您没有运行PostGIS,那么我可能会为它改编为SpatiaLite,如果您使用的是QGIS,那么您可能已经在其工具链中有了SpatiaLite。
李·哈查多里安(Le Hachadoorian)2015年

Answers:


11

使用QGIS 2.10.1-Pisa和Processing版本2.10.2,可以从Processing Toolbox中使用以下两个工具:

  • 填充孔工具,您可以指定最大面积
  • 删除将应用于整个输入层的工具。

希望这可以帮助!


1
仅检查最大面积参数,即要填充的孔的最大尺寸?因此,在一个UTM米项目中,如果最大数量为10,000,这意味着要填充的最大孔将是公顷,并且比该面积还大?
BillW

1
@BillW-是的,我相信这正是它的作用:)
Joseph

11

对于这个shapefile,我面临着与您相同的问题,多边形之间存在许多缝隙。

原始文件有空白

为了解决该问题,您可以对tshiffle的方法进行一些修改:

  1. 首先,执行文件与覆盖整个范围的多边形之间的区别。

Extent_polygon

差异工具

此操作将创建一个仅包含一个多边形的新shapefile,因此您必须将其分解为单个部分。为此,您可以使用矢量/几何工具/多部分到单部分工具。

差异结果

多对单

之后,删除外部实体。现在,在新的shapefile中,有几个多边形可以覆盖原始coverage的间隙。

gaps_covered

  1. 在初始数据和单个零件之间执行合并。使用SAGA工具,因为默认的QGIS选项会在数据库中创建重复项。

联盟

  1. 现在,所有间隙将在数据库中显示为空记录(例如72行)。使用区域字段对表进行排序,并从原始文件中的最小多边形中获取值。在这种情况下,为0.13645公顷。

数据库

  1. 最后,使用“消除条形多边形”工具,并在图像中显示设置。

在此处输入图片说明

  1. 最终结果没有任何差距。

在此处输入图片说明


您能否添加有关参数选择的更多信息?什么是“价值”?QGIS文档页面上的详细信息非常简短。非常优雅的回复,可惜最初的用户没有接受任何答案!
user3386170

1
“值”是用于比较的大小。在此示例中,使用的字段“区域”以公顷为单位设置,因此0.1表示:消除小于或等于0.1公顷的多边形。
gtapko '18

gtapko,能否请您提供有关第3阶段的更多详细信息?我不明白,谢谢
newGIS '19

4

可能有更优雅的解决方案,但这一直对我有用。

1)创建“填孔”多边形。为此,绘制一个比原始对象大的大多边形,然后使用“差异”工具。如果绘制了更大的多边形,则将具有所有“填充”多边形以及一个围绕原始形状的更大的多边形。删除该较大的多边形,并保留“填充孔”的多边形。

2)将“填孔”多边形与原始shapefile合并。如果您只想填充符合特定条件的孔(即,在X平方公里以下),则可以在此处进行筛选。

3)在公共字段上溶解新合并的多边形。


不清楚第3步,某个人将如何找到共同领域?
iRfAn 2015年

在此步骤中,公共字段可以是任何东西,目标是简单地溶解多边形之间的边界。您可以使用现有字段,也可以只添加一个。
tshiffle

4

在python / shapely中,这可以填充您的多边形:

import shapely
from shapely.geometry import Polygon
filled_shape = Polygon(shape_with_holes.exterior)

2

我已经看到了一些解释,它们与gtapko和tshiffle的解释相同,但是对我来说不起作用,因为无效的几何形状使差异工具无法正常工作。因此,我想出了自己的解决方案,该解决方案并非100%自动化,而是可管理的。可能有人已经想到了这一点,但我会抓住机会:

1)在原始损坏的图层上创建一个ID

创建ID属性很简单,但是我的解决方案也很简单,因此我将对其进行介绍。

首先,您必须打开属性表,然后转到“ 字段计算器”,这是一个非常类似于算盘的按钮。在那里,您可以选择创建一个新字段或更新现有字段。在上面的图片中,我正在创建一个新的名为“ ID”的ID。该公式就在图片的末尾。(很抱歉,我的QGIS用另一种语言设置。由于设计和公式在所有语言版本中都是完全相同的,所以我认为这不会妨碍我们的工作。)

2)将多边形转换为线

此步骤位于菜单的“ 向量”>“几何”部分。转换后的形状应如下所示:

在将多边形转换为线之后,您将必须执行完全相反的操作,即...

3)将线转换为多边形

选项彼此相邻。同样,让我们​​不要介意这里的语言障碍。

4)欢喜 之所以执行步骤2和3的原因是因为现在您确定这些线将被视为多边形,这意味着它们现在在属性表上具有自己的线。如果签出,它将看起来像这样:

第一个总是整个多边形(相信我,今天我已经删除了几百行...),其余的是中间的松散线。您可以启用编辑并准备采取行动。如果您决定尝试这种方法,则需要牢记两件事:以ID的方式组织表,这样就可以确保您不会丢失任何东西,并像其他任何程序一样使用shift选择数据集群。

我知道这是不是上流社会的名流 QGIS解决问题的,但如果你面对其中工具不是因为工作的情况下无效的几何形状,这些线创建(我甚至尝试用ID溶解,但它不起作用),那么这可能是一个出路。


您可以更新图片吗?链接断开!
Simbamangu

嘿。抱歉,但是Photobucket显然劫持了我的图像,我无法访问它们。我已经打开了一张票,并试图重新获得访问权限。我会尽快与您联系。
埃里克·利诺
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.