在第二层/属性上提取具有缓冲条件的栅格平均值

哈利勒·泰伯

在此处输入图片说明 在此处输入图片说明

我有这个星星对象(也可以格式化为栅格):

stars object with 2 dimensions and 2 attributes
attribute(s):
   LST_mean        elevation    
 Min.   :14.98   Min.   :296.0  
 1st Qu.:16.89   1st Qu.:346.9  
 Median :17.64   Median :389.3  
 Mean   :17.52   Mean   :389.2  
 3rd Qu.:18.18   3rd Qu.:428.3  
 Max.   :20.11   Max.   :521.6  
dimension(s):
  from to  offset    delta                       refsys point values    
x   71 83 4387654  860.241 DHDN / 3-degree Gauss-Kru... FALSE   NULL [x]
y   33 41 5598885 -860.241 DHDN / 3-degree Gauss-Kru... FALSE   NULL [y]

具有2个属性(在栅格情况下为图层):温度和海拔。使用温度,我想选择落入缓冲区内的像素并返回均值,仅针对每次与所考虑的像素之间的高程差小于90米的像素。

任何想法如何做到这一点?计算落入缓冲区的像素的平均值非常容易,但是我找不到一种对它们设置任何条件的方法。

我将非常感谢您的帮助和建议。使用其他软件包的方法satrs也非常受欢迎:)

迈克尔·多曼

请使用下面的解决方案terra该代码用于terra::extract创建两个对应list的:

  • 像素值
  • 周围的缓冲区值

随后,使用mapply与您建议的功能相似的功能,使用来成对处理这些值

这是我第一次使用,terra但似乎terra::extract比快得多raster::extract,因此,即使对于较大的栅格,此解决方案也可能可行。

创建样本数据:

library(sf)
library(terra)

r = rast(ncol = ncol(volcano), nrow = nrow(volcano), xmin = 0, xmax = ncol(volcano), ymin = 0, ymax = nrow(volcano))
values(r) = volcano
s = r
s[] = rnorm(ncell(s))
r = c(r, s)
crs(r) = ""
plot(r)

输入

计算缓冲区:

pnt = as.points(r, values = FALSE)
pol = buffer(pnt, 10)

从点提取栅格值:

x = extract(r, pnt)
head(x)
##      ID lyr.1       lyr.1
## [1,]  1   100 -0.03525223
## [2,]  2   100  0.31525467
## [3,]  3   101  0.94054608
## [4,]  4   101  0.37209238
## [5,]  5   101 -0.38388234
## [6,]  6   101 -0.03120593

从缓冲区提取栅格值:

y = extract(r, pol)
head(y)
##      ID lyr.1       lyr.1
## [1,]  1   100 -0.03525223
## [2,]  1   100  0.31525467
## [3,]  1   101  0.94054608
## [4,]  1   101  0.37209238
## [5,]  1   101 -0.38388234
## [6,]  1   101 -0.03120593

现在,可以使用依次处理提取的值mapply首先,我们将对象转换为lists:

x = as.data.frame(x)
x = split(x, x$ID)
y = as.data.frame(y)
y = split(y, y$ID)

接下来,我们使用mapply每次考虑当前焦点值x和周围缓冲区值进行必要的计算y

f = function(x, y) {
    d = abs(x[, 2] - y[, 2])  ## differences
    values = y[, 3]  ## values
    mean(values[d < 5], na.rm = TRUE)  ## Mean of subset
}
result = mapply(f, x, y)

最后,将结果放回到栅格模板中:

u = r[[1]]
values(u) = result
plot(u)

输出

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使第二层保持关闭

来自分类Dev

侧边栏第二层

来自分类Dev

使第二层保持关闭

来自分类Dev

将第二层中具有不相等元素的python嵌套列表转换为dataframe

来自分类Dev

内联条件内的条件语句第二层反应

来自分类Dev

mod_rewrite:重定向第二层上的URL

来自分类Dev

postgresql jsonb在第二层包含key:value

来自分类常见问题

在第二层包括一些参考

来自分类Dev

如何输出网络的第二层?

来自分类Dev

如何输出网络的第二层?

来自分类Dev

在第二层网络中显示当前arp

来自分类Dev

获取对象中元素的路径,而无需遍历所有元素(第二层次结构未知)

来自分类Dev

我有多层日期框架,如何将第二层中的日期设置为通用索引

来自分类Dev

MySQL规范化,带有带有第一层子类别和第二层子类别的类别

来自分类Dev

循环/遍历go lang中的第二层嵌套JSON

来自分类Dev

如何检查第二层(嵌套)键是否在python list / dict中退出?

来自分类Dev

熊猫多索引如何通过第二层掩盖数据

来自分类Dev

Spring Retry在第二层方法上不起作用

来自分类Dev

在多层CNN中,哪个输入占据第二层?

来自分类Dev

在第二层嵌套子查询中访问外部表

来自分类Dev

如何计算嵌套在第二层groupBy中的项目?

来自分类Dev

如何计算嵌套在第二层groupBy中的项目?

来自分类Dev

如何在Selenium Webdriver Python中用鼠标单击元素的第二层?

来自分类Dev

如何使用HTML和CSS做第二层下拉菜单

来自分类Dev

以graphviz点表示法对节点的第二层进行重新排序

来自分类Dev

为什么第二层虚拟设备Linux Bridge的IP地址?

来自分类Dev

htaccess重写在第二层重写上不起作用

来自分类Dev

在Swift 2的API调用中访问第二层数据时需要帮助

来自分类Dev

数据库中的多层数组,无法将数组推入第二层

Related 相关文章

  1. 1

    使第二层保持关闭

  2. 2

    侧边栏第二层

  3. 3

    使第二层保持关闭

  4. 4

    将第二层中具有不相等元素的python嵌套列表转换为dataframe

  5. 5

    内联条件内的条件语句第二层反应

  6. 6

    mod_rewrite:重定向第二层上的URL

  7. 7

    postgresql jsonb在第二层包含key:value

  8. 8

    在第二层包括一些参考

  9. 9

    如何输出网络的第二层?

  10. 10

    如何输出网络的第二层?

  11. 11

    在第二层网络中显示当前arp

  12. 12

    获取对象中元素的路径,而无需遍历所有元素(第二层次结构未知)

  13. 13

    我有多层日期框架,如何将第二层中的日期设置为通用索引

  14. 14

    MySQL规范化,带有带有第一层子类别和第二层子类别的类别

  15. 15

    循环/遍历go lang中的第二层嵌套JSON

  16. 16

    如何检查第二层(嵌套)键是否在python list / dict中退出?

  17. 17

    熊猫多索引如何通过第二层掩盖数据

  18. 18

    Spring Retry在第二层方法上不起作用

  19. 19

    在多层CNN中,哪个输入占据第二层?

  20. 20

    在第二层嵌套子查询中访问外部表

  21. 21

    如何计算嵌套在第二层groupBy中的项目?

  22. 22

    如何计算嵌套在第二层groupBy中的项目?

  23. 23

    如何在Selenium Webdriver Python中用鼠标单击元素的第二层?

  24. 24

    如何使用HTML和CSS做第二层下拉菜单

  25. 25

    以graphviz点表示法对节点的第二层进行重新排序

  26. 26

    为什么第二层虚拟设备Linux Bridge的IP地址?

  27. 27

    htaccess重写在第二层重写上不起作用

  28. 28

    在Swift 2的API调用中访问第二层数据时需要帮助

  29. 29

    数据库中的多层数组,无法将数组推入第二层

热门标签

归档