我从栅格图层创建平滑轮廓多边形的成功有限。
我创建了轮廓线和边界折线,然后使用QGIS Union。然后,我使用QGIS Polygonize。然后对原始栅格使用区域统计,以获取面的值。
我尝试的第二种方法是将栅格转换为多边形。然后创建一个新的四舍五入到所需轮廓的属性列。然后,我将相同值之间的线溶解。然后使用v.generalize。这种方法要快一些,但是会留下一些锯齿状/不平滑的多边形。
有没有更简单的方法始终有效?似乎应该有一个简单的命令来完成整个过程。
我从栅格图层创建平滑轮廓多边形的成功有限。
我创建了轮廓线和边界折线,然后使用QGIS Union。然后,我使用QGIS Polygonize。然后对原始栅格使用区域统计,以获取面的值。
我尝试的第二种方法是将栅格转换为多边形。然后创建一个新的四舍五入到所需轮廓的属性列。然后,我将相同值之间的线溶解。然后使用v.generalize。这种方法要快一些,但是会留下一些锯齿状/不平滑的多边形。
有没有更简单的方法始终有效?似乎应该有一个简单的命令来完成整个过程。
Answers:
在第二种方法中,您遇到过同样的问题。我将栅格导出到矢量,然后尝试使用v.generalise,我得到的大多是平滑的多边形,偶尔会出现“阶梯式”边界,该边界似乎不受算法影响。
我发现一个适合我任务的过程,不确定是否是最好的方法,但是我想我会分享它以防万一。
我从BoM的ascii网格开始,看起来像这样:
我可以使用以下步骤获得结果(我很满意)。
如果有人知道更简单的方法,我也想听听。最初,我在想与@Rx_类似,我可以将栅格转换为矢量,然后进行一般化,然后就可以完成了。我要做的事情要长得多。
我喜欢这里的答案,但我不能相信QGIS仍然没有快速简便的方法来做到这一点。MapInfo可以将多边形等高线生成为具有指定间隔的轮廓。
这似乎是一项基本任务,并且对于获得范围也很重要。如果有人有更新或更快的方法,请分享!
一种更直接的方法是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安装