查看原文
其他

菌菌:移动窗口法原理是什么?然后我给他找了一个栅格计算的原理教程

走天涯徐小洋 走天涯徐小洋地理数据科学 2022-07-17

什么是地图代数Map Algebra(栅格计算Raster Math)

大年初四的下午,菌老板就来提问了,问“有没有推荐的,讲移动窗口法原理的文章==”?

卷王菌菌大年初四就开始研究移动窗口法了

然后我就按照卷王菌的说法找到了一篇不错的文章,英文的,给大家搬运过来。

什么是地图代数(栅格计算)?

地图代数(Map algebra) 就是给地图做代数运算。但是它通常只用于栅格数据,这就是为什么我们一般称它为栅格计算(raster math)

接下来我们先看看地图代数的几种类型,然后实战一下。

地图代数的类型

就像你学到的,地图代数使用数学运算。例如,你可以使用简单的数学计算如“相加”或“相乘”来更新栅格像元值。

最常用的地图代数方法是逐像元的计算,适用于彼此对齐的像元格网。也可以更改配置,使其不仅仅适用于逐像元,常用的地图代数运算类型有以下四种:

  • Local局部
  • Focal焦点(移动窗口)
  • Zonal区域
  • Global全局

Local Operations局部运算

最简单的就是逐像元的地图代数,例如,你有两个格网对齐的栅格,你可以对他们逐像元的相加。

如果栅格像元代表温度,您可以在不同的时间段将它们都减去。通过使用局部运算,您可以找到每个像元的温度差异。

逐像元的栅格局部计算

Global Operations全局运算

全局运算将批量更改应用于栅格中的所有像元。如果要为所有像元单元添加 1 的值,这是一个全局操作。

例如,欧几里得距离就是全局运算的一个例子。通过计算距源的最近距离,它在栅格中全局应用该函数。

左边1为起始位置,右边为欧几里德距离值,sqrt(2)=1.4, sqrt(4+4)=2.8

Focal Operations焦点运算

焦点运算是使用每个像元的临近像元计算得到本像元的值。例如卷积运算(convolution)、核运算(kernel)和移动窗口法(moving windows)。

焦点运算

移动窗口:移动窗口是一个矩形排列的单元格,位置会发生变化。通过从移动窗口对每个像元应用操作,它通常会平滑栅格中的值。

移动窗口

Zonal Operation区域运算

区域运算是给一组特定区域内的像元应用一个数学公式计算。这个区域可以是矢量也可以是栅格。

区域运算

如果你想知道一个流域内的降雨量,那么你可以使用区域计算,使用降水量栅格数据,使用流域作为求和范围进行计算。

其实就是分区统计,具体可以查阅:栅格数据分区统计转面板数据,单波段、多波段数据都可以找到合适的方法

数学函数

可以用于地图代数的运算方法:

  • 算术运算:加减乘除(+ - × ÷)
  • 统计运算:最大最小均值中值
  • 关系运算:大于小于等于
  • 三角函数运算:sin/cos/tan/arcsin
  • 指数和对数运算

地图代数实例

2014和2015年4月的地表温度如下图所示:

左:2015年地表温度,右2014年地表温度

相减获得两个时期地表温度的差值:

地表温度差值

这是局部运算的一个示例,因为它将每个像元从一年减去另一年。它也是算术运算符的一个示例,因为它使用减法。

这样做的特别之处在于,您可以查明差异最大的像元。如果值为正,则意味着 2015 年的地表温度更高。但如果值为负数,则意味着 2015 年的地表温度较低。

相减,局部运算

当你有空值时会发生什么?Null 不是数值。如果任何栅格像元中有空值,则它们在输出栅格中将保持为空值。

地图代数实际操作

ArcGIS里的地图代数

  1. 启用ArcGIS Spatial Analyst拓展模块;
  2. ArcToolbox > Spatial Analyst Tools > Map Algebra双击打开Raster Calculator栅格计算器工具
  • 选择栅格数据和运算符
  • 输入函数
  • 指定输出栅格
栅格计算器

参考文献

  1. https://gisgeography.com/map-algebra-global-zonal-focal-local/
  2. 栅格数据分区统计转面板数据,单波段、多波段数据都可以找到合适的方法

更多栅格计算相关内容请点击阅读原文

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存