使用QGIS进行栅格聚类


10

我正在寻找一种基于每个类中的空间簇将分类栅格转换为多边形的方法。为了使群集被认为是有效的,我需要它们包含来自某一类的最小百分比的单元格。

例如:由70%(或更多)的“ 1”类单元组成的区域将被视为“ 1”类的集群,即使该区域与30%的单元混合在一起也属于其他类。因此,聚类分析应基于同一类单元之间的距离。

另一个选择是将聚类基于某个类中的最小单元数以及最大搜索区域的定义。

例如:在指定的区域内,应该有100个“类别1”的像元,才能将其视为群集。  

与聚类有关的大多数工具似乎仅适用于向量。我看过SAGA工具群集分析,但它确实不符合我的目的。解决此问题的任何想法或其他可能有用的工具?


您可以将栅格转换为矢量,然后使用矢量聚类工具。
csk

这是一个选择,但是我认为如果可能的话,以光栅格式进行分析要容易得多。转换为矢量可能会生成多边形,这些多边形在栅格像元的并集中会丢失很多细节,或者会处理太多点(大数据集)。
斯派兰

3
我知道这不是QGIS解决方案,但是您能否使用python或R来提供邻域函数,以便创建一个新栅格来查看每个像元,并且邻域中> 70%的像元属于一个类然后该单元格被重新分类为该类?
利亚姆G '18

可以肯定可以工作,谢谢!我是Python的新手,但值得一试。
Spiran '18

Answers:


5

如果您希望在“栅格逻辑”中解决此问题,则可以考虑一些过滤器。最佳选择将取决于您的“背景”值内每个类别的像素的空间分布,但是这里有两种可能的解决方案:

如果要删除的补丁程序相对较大,则应使用“筛子”(QGIS 3.2中基于gdal_sieve.py的“栅格”>“分析”>“筛子”)。

gdal_sieve.py脚本会删除小于提供的阈值大小(以像素为单位)的栅格多边形,并将其替换为最大相邻多边形的像素值。结果可以写回到现有的栅格波段,或复制到新文件中。

如果您有类似“盐和胡椒”的效果(许多孤立的像素属于不同类别,但每个小路径只有几个像素,则应使用多数过滤器(例如,从GRASS> raster> r访问附加工具)。邻居>选择“模式”选项)。请注意,此过滤器将(略微)影响您的边界。

r.neighbors-使每个像元类别值成为分配给周围像元的类别值的函数,并将新像元值存储在输出栅格地图图层中

如果愿意,可以在SAGA工具(SAGA>光栅过滤器)中找到相同的文件管理器(多数过滤器,筛分类)和其他过滤器(形态)。


这实际上是我解决问题的方式。基本上是通过使用草丛分析工具以及侧面的一些计算。不过忘了发布解决方案,非常感谢您的投入radouxju。
Spiran
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.