R包`terra`在投影时如何决定模板栅格属性?

问题描述 投票:0回答:1

我试图了解 R 包

terra
如何决定投影时创建的新栅格的属性。我知道投影时的最佳实践是在新的 crs 中使用模板栅格,例如
project(my_raster, my_template_raster)
。但是,如果用户确实尝试仅使用 crs 进行投影,例如
project(my_raster,"ESRI:54009")
,尚不清楚
terra
如何决定新投影中模板栅格的尺寸、范围和分辨率。例如,在下面的表示中,投影栅格没有覆盖多边形栅格的投影版本的范围,这看起来很奇怪。

library(terra)
#> terra 1.7.71

r <- rast(xmin = 0, xmax = 5, ymin = 0, ymax = 5, resolution = 1)
values(r) <- 1:ncell(r)

#Mollweide
proj_moll <- "ESRI:54009"

#create vector grid of raster
v_moll <- r |>
  as.polygons(dissolve = FALSE) |>
  project(proj_moll)

#project raster to Molleweide
r_moll <- project(r, proj_moll)

#plot: setting limits manually since ext = argument doesn't seem to function correctly at the moment - see https://github.com/rspatial/terra/issues/1495
plot(r_moll, xlim = c(ext(v_moll)$xmin, ext(v_moll)$xmax), ylim = c(ext(v_moll)$ymin, ext(v_moll)$ymax))
lines(v_moll, col = "red", lwd = 2)

创建于 2024-05-07,使用 reprex v2.1.0

r terra
1个回答
0
投票

算法尝试匹配范围。添加另一行和/或列会导致更大的差异(超调,也许这是更好的选择)

如果使用较小的电池,您可以看到差异

library(terra)
r <- rast(xmin = 0, xmax = 5, ymin = 0, ymax = 5, resolution = 1)
values(r) <- 1:ncell(r)
proj_moll <- "ESRI:54009"
v_moll <- as.polygons(r, dissolve = FALSE) |> project(proj_moll)

# 4x disaggregation to get smaller cells.
r_moll <- disagg(r, 4) |> project(proj_moll)

plot(r_moll, ext=ext(v_moll)+50000)
lines(v_moll, col = "red", lwd = 2)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.