R语言保存栅格触发NOT UPDATED FOR PROJ >=6警告如何解决
问题根因
你遇到的In .gd_SetProject(object, ...) : NOT UPDATED FOR PROJ >= 6警告由两个核心原因导致:
- 原始DEM数据没有显式定义CRS,从你的输出可以看到DEM的
crs字段值为NA - 旧版
raster包对PROJ 6.0+版本的CRS处理逻辑兼容不完善,当栅格缺少显式CRS定义时极易触发该警告
解决方法
方案1:优先推荐(适配新版PROJ逻辑,无兼容问题)
使用raster包开发者推出的新一代空间栅格处理包terra,原生支持PROJ 6.0+标准,完全规避该警告:
# 加载依赖包 library(terra) library(sf) # 转换DEM为terra支持的SpatRaster格式,显式设置CRS dem_terra <- rast(DEM) crs(dem_terra) <- "EPSG:4326" # 聚合生成模板栅格 r_terra <- aggregate(dem_terra, fact = 6) # 矢量栅格化流程 sa_terra <- vect(st_transform(SA, crs = 4326)) r_terra <- rasterize(sa_terra, r_terra, field = 1) r_terra <- trim(r_terra) # 保存栅格 writeRaster(r_terra, filename = "prediction-surface_SA.tif", overwrite = TRUE)
方案2:保留原有raster包代码
在栅格化完成后、保存前,给生成的栅格显式指定CRS即可消除警告:
# 原有代码保留,在trim()后补充CRS设置 r <- SA %>% st_transform(crs = 4326)%>% rasterize(r, field = 1) %>% trim() # 新增:显式设置栅格CRS crs(r) <- "EPSG:4326" # 保存栅格 r <- writeRaster(r, filename = "prediction-surface_SA.tif", overwrite = TRUE)
补充说明
该警告本质是版本兼容提示,若不做处理,只要你的坐标体系逻辑正确,生成的栅格文件也可以正常使用,但显式定义CRS是空间数据处理的规范操作,可避免后续其他空间分析步骤出现坐标偏移、匹配错误等问题。
内容的提问来源于stack exchange,提问作者Buffy Smith
相关产品推荐
相关产品推荐

