我有兩個相同區域的柵格圖層。我需要找到粗解析度柵格像元和精細解析度柵格像元之間的歐幾里得距離,這些像元落在我的粗解析度柵格像素的每個像元內。例如:

紅色方塊是粗解析度柵格的像素,藍色方塊是精細解析度柵格的像素。黑點是粗解析度柵格的質心,藍點是精細解析度柵格的質心。
發布了類似的問題,但與我的問題不同的是我不想計算柵格單元之間的最近距離。
我的粗解析度柵格的像素大小為 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 進行裁剪和遮罩之后)如下所示:

其中黃色方塊是粗柵格中的單元格,其下方的柵格是答案部分中代碼的輸出。
uj5u.com熱心網友回復:
這有點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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/525506.html
標籤:r光栅欧式距离大地
