如何从R的SpatRaster类中提取坐标对应的月度气候数据
解决方案:提取WorldClim月度气候数据及CRS相关问题
一、修复数据提取错误
你的报错原因是proj4string参数传入了字符串而非合法的CRS对象,且没必要依赖sp包的SpatialPoints——terra包的extract函数直接支持数据框格式的坐标输入,更简单高效:
方法1:直接用terra包提取(推荐)
# 直接传入data.frame格式的坐标提取数据 values <- terra::extract(test, coords) # 合并原始坐标与提取结果,方便查看匹配关系 result <- cbind(coords, 五月最低温 = values)
方法2:正确使用sp包(若需兼容旧代码)
如果坚持用SpatialPoints,需传入合法的CRS对象,可直接从test中提取:
library(sp) # 从SpatRaster获取CRS对象,而非手动输入字符串 points <- SpatialPoints(coords, proj4string = terra::crs(test)) values <- terra::extract(test, points)
二、关于"coord. ref."的重命名问题
你看到的coord. ref.是terra包输出SpatRaster信息时的固定显示标签,无法直接修改这个文本本身。但可以通过两种方式调整相关内容:
- 修改坐标参考系的描述名称:
可以重新设置CRS的WKT字符串,替换其中的描述内容:# 获取当前CRS的详细WKT文本 current_wkt <- terra::crs(test, describe = TRUE)$wkt # 替换描述部分(以EPSG:4326为例) new_wkt <- gsub("WGS 84", "自定义WGS84坐标系", current_wkt) # 重新设置CRS terra::crs(test) <- new_wkt # 再次查看test信息,coord. ref.后的描述会更新 test - 修改图层名称(即
name字段):
如果是想修改输出中name对应的长文件名,直接用names()函数:names(test) <- "tmin_may"
内容的提问来源于stack exchange,提问作者steve
相关产品推荐
相关产品推荐

