作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
同一区域我有两个栅格层。我需要找到粗分辨率栅格像元和精分割辨率栅格像元之间的欧几里得距离,这些像元落在我的粗分辨率栅格中像素的每个像元内。例如:
红色方 block 是粗分辨率光栅的像素,蓝色方 block 是精分割辨率光栅的像素。黑点为粗分辨率栅格质心,蓝点为精分割辨率栅格质心。
发布了类似的问题,但与我的问题不同的是我不想计算栅格单元之间的最近距离。
我的粗分辨率栅格的像素大小为 460m,精分割辨率栅格的像素大小为 100m。到目前为止,我所做的是从两个栅格的栅格像元的质心创建点符号。如何计算每个粗像素与其对应的精细像素之间的欧氏距离?
library(terra)
fr = rast("path/fine_image.tif") # fine resolution raster
cr = rast("path/coarse_image.tif") # coarse resolution raster
fr_p = as.points(fr,
values = T,
na.rm = T,
na.all = F) # fine resolution points
cr_p = as.points(cr,
values = T,
na.rm = T,
na.all = F) # coarse resolution points
我不确定如何从这里开始。有什么建议吗?
这是我的栅格:
fr = rast(ncols=108, nrows=203, nlyrs=1, xmin=583400, xmax=594200, ymin=1005700, ymax=1026000, names=c('B10_median'), crs='EPSG:7767')
cr = rast(ncols=23, nrows=43, nlyrs=1, xmin=583280, xmax=593860, ymin=1006020, ymax=1025800, names=c('coarse_image'), crs='EPSG:7767')
解决方案 来自@michael 的回答,输出栅格(在使用多边形 shp 进行裁剪和 mask 之后)如下所示:
黄色方 block 是粗栅格中的像元,下方的栅格是答案部分代码的输出。
最佳答案
这有点 hacky,但我认为它可能会做你想做的......
# Raster at fine resolution where values are cell indices
fr_cells <- fr
values(fr_cells) <- 1:ncell(fr)
# Second raster at fine resolution where values are indices of
# the surrounding coarse res cell (if there is one)
fr_cr <- fr
fr_xy <- xyFromCell(fr, 1:ncell(fr))
values(fr_cr) <- extract(cr, fr_xy, cells = TRUE)[, "cell"]
# Function to calculate distance given a pair of cell indices
fn <- function(x) {
fr_xy <- xyFromCell(fr, x[1])
cr_xy <- xyFromCell(cr, x[2])
sqrt( sum( (fr_xy - cr_xy)^2 ) )
}
fr_dist <- app(c(fr_cells, fr_cr), fun = fn)
关于R:计算两个栅格层像素之间的欧氏距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74282152/
我是一名优秀的程序员,十分优秀!