在QGIS中将栅格转换为平滑的轮廓多边形


14

我从栅格图层创建平滑轮廓多边形的成功有限。

我创建了轮廓线和边界折线,然后使用QGIS Union。然后,我使用QGIS Polygonize。然后对原始栅格使用区域统计,以获取面的值。

我尝试的第二种方法是将栅格转换为多边形。然后创建一个新的四舍五入到所需轮廓的属性列。然后,我将相同值之间的线溶解。然后使用v.generalize。这种方法要快一些,但是会留下一些锯齿状/不平滑的多边形。

在此处输入图片说明

有没有更简单的方法始终有效?似乎应该有一个简单的命令来完成整个过程。


2
为什么要使用Polygonize?输入栅格是连续的(例如浮点DEM)吗?QGIS有轮廓的工具,这是一个捷径GDAL_Contour .. qgistutorials.com/en/docs/working_with_terrain.html你试图让轮廓或分层设区?
Michael Stimson

输入文件是tif,所需的输出文件是形状文件,仅以特定的增量包含多边形。我发现了许多用于创建折线的工具,但不能创建多边形。
Rx_

公平地说,您正在尝试获取水压法区域。我使用(主要是)Esri,它具有将栅格创建的多边形简化为多边形的选项,但在这里无济于事。如果要从DEM创建轮廓,添加边界框,然后多边形化,外观会如何?然后,您可以创建标签点,对值进行相交/采样并使用属性来标记多边形...可能您会得到一些相同的值多边形,这些多边形可以被溶解掉,但更大的问题是跳跃的时间超过了一个间隔。我有一些代码可以从轮廓中归因于hypso,但是它适用于ArcInfo覆盖范围
Michael Stimson

您所描述的是我认为我在第一种方法中正在做的事情。它很麻烦。需要确保每个文件都具有id属性,然后在多边形化后删除不包含面积大于零的多边形。我未能获得线的一致正确标签以转移到多边形。第二种方法非常接近我想要的方法,但是v.generalize似乎无法100%地起作用。我希望ESRI简化多边形是您指出的QGIS中的一个选项。
Rx_

Answers:


12

在第二种方法中,您遇到过同样的问题。我将栅格导出到矢量,然后尝试使用v.generalise,我得到的大多是平滑的多边形,偶尔会出现“阶梯式”边界,该边界似乎不受算法影响。

我发现一个适合我任务的过程,不确定是否是最好的方法,但是我想我会分享它以防万一。

我从BoM的ascii网格开始,看起来像这样: 在此处输入图片说明

我想要的东西类似于BoM产生的东西: 在此处输入图片说明

我可以使用以下步骤获得结果(我很满意)。

  • 将网格(在我的情况下是BoM的ASCII网格)加载到QGIS中。
  • 重新编码为离散类。(处理工具箱>草>栅格> r.recode)
  • 运行多数过滤器以“清理”。(处理工具箱> SAGA>栅格过滤器>多数过滤器)
  • 从过滤后的网格以1的间隔创建轮廓,并将其存储在属性“类”中(因为我的类是1,2,3,4等)。(光栅“菜单”>“提取”>“轮廓”)
  • 输出轮廓有些一般化,但我使用v.generalized和'snakes'算法对其进行平滑处理。(处理工具箱>草>矢量> v.generalize)
  • 然后将线转换为多边形。(处理工具箱> QGIS地理算法>矢量几何工具>线转换为多边形)
  • 最后,我必须将单部分多边形转换为多个部分,以便所有多边形都能很好地绘制。(“处理工具箱”>“ QGIS地理算法”>“矢量几何工具”>“多个零件”)。

设置样式后,输出如下: 在此处输入图片说明

如果有人知道更简单的方法,我也想听听。最初,我在想与@Rx_类似,我可以将栅格转换为矢量,然后进行一般化,然后就可以完成了。我要做的事情要长得多。


3

我喜欢这里的答案,但我不能相信QGIS仍然没有快速简便的方法来做到这一点。MapInfo可以将多边形等高线生成为具有指定间隔的轮廓。

这似乎是一项基本任务,并且对于获得范围也很重要。如果有人有更新或更快的方法,请分享!


1

一种更直接的方法是gdal_countour在“多边形模式”下(即通过该-p选项)直接使用(作为命令行程序)。

例:

gdal_contour -p -amin min_val -amax max_val -i 1 input_raster.tif output_shape.shp

文档:https : //gdal.org/programs/gdal_contour.html

此选项仅在版本> = 2.4中可用(可以使用选中gdalinfo --version)。如果您使用的是Ubuntu 18.4,则可能必须从UbuntuGIS安装


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.