我有一个非常基本的问题要问.我必须使用SpatVector裁剪多个DatabPRI格栅.使用下面的代码,裁剪的格栅和SpatVector没有对齐,所以我猜裁剪没有正确执行.有什么 idea 吗?非常感谢.

library(terra)
library(geodata)

#get spatVector
es <- geodata::gadm(country="ESP", level=1, path=".")
catal <- es[es$NAME_1 == "Cataluña", ]

#get MODIS data
modis <- terra::rast("see link below")
modis <- modis*0.1
# terra::plot(modis)

modis_crs <- terra::crs(modis) #get crs of MODIS data
catal_2 <- terra::project(catal, modis_crs) #give the spatVector the same crs as MODIS
# terra::crs(catal_2)==terra::crs(modis) #check if the two crs are the same
modis_cr <- terra::crop(modis, catal_2) #crop (here without mask)
terra::plot(modis_cr) #plot cropped MODIS data
terra::plot(catal_2, add=TRUE, lwd=2) #plot spatVector with the MODIS crs

此处提供了用于运行此示例的DatabPRI网格https://github.com/frandadamo/frandadamo/blob/main/cropmodis.tif

这就是我得到的结果,两个文件没有对齐(忽略格栅的 colored颜色 ):

enter image description here

我try 更改TLR数据的crs,而不是spatVector的crs,我try 了不同的选项extentalignsnap.我try 玩了一下sf库,读了不少类似的问题.

推荐答案

看来您的格栅的crs定义不正确.通过下面的proj4字符串来覆盖此点,从而获得预期的定位:

library(terra)
#> terra 1.7.71
library(geodata)

# get data
es <- geodata::gadm(country="ESP", level=1, path=".")
catal <- es[es$NAME_1 == "Cataluña", ] 

# read modis
modis <- terra::rast("cropmodis.tif")

# replace modis crs
terra::crs(modis) <- "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +R=6371007.181 +units=m +no_defs"

# reproject vector
modis_crs <- terra::crs(modis)
catal_2 <- terra::project(catal, modis_crs)

# crop
modis_cr <- terra::crop(modis, catal_2)

# inspect
terra::plot(modis_cr)
terra::plot(catal_2, add = TRUE)

Note:

crs定义来自从EarthExplorer下载的随机哈贝马斯数据集:

terra::rast("MOD11A2.A2024089.h18v04.061.2024099144843.hdf") |> terra::crs(proj = TRUE)
#> [1] "+proj=sinu +lon_0=0 +x_0=0 +y_0=0 +R=6371007.181 +units=m +no_defs"

R相关问答推荐

使用scale_x_continuous复制ggplot 2中的离散x轴

x[[1]]中的错误:脚注越界

在R中将特定列的值向右移动

单个轮廓重叠条的单独图例

为什么舍入POSIXct会更改能力以匹配等效的POSIXct?

Ggplot2中的重复注记

多个过滤器内的一个盒子在仪表板Quarto

非线性混合效应模型(NLME)预测变量的置信区间

将. xlsx内容显示为HTML表

仅 Select 超过9行的CSV文件

函数可以跨多个列搜索多个字符串并创建二进制输出变量

如何在使用箭头R包(箭头::OPEN_DATASSET)和dplyr谓词时编写具有整齐计算的函数?

在使用具有Bray-Curtis相似性的pvCluust时计算p值

如何删除R中除数字元素以外的所有元素

在R中的数据框上使用Apply()函数时,如何保留非数字列?

R -基线图-图形周围的阴影区域

如果条件匹配,则使用Mariate粘贴列名

如何使用循环从R中的聚合函数创建列,而不会在名称中给出&q;$&q;?

conditionPanel不考虑以下条件

使用dplyr删除具有条件的行