转换至莫尔韦德投影时出现区域匹配问题
原因分析
- 原边界框是WGS84经纬度投影下的轴对齐矩形,Mollweide是等面积投影,经纬度矩形转换后会因投影扭曲变成非轴对齐的多边形,这是投影转换的正常现象。
- 目标栅格
ghsl是Mollweide投影下的轴对齐栅格,二者的视觉差异是不同投影下空间范围的表现形式不同,并非转换错误。
解决方法
方法1:直接使用terra::crop自动处理跨投影裁剪
无需手动转换边界框投影,crop函数会自动完成投影转换并裁剪:
# 读取原栅格(补充缺失的读取步骤) template_rast <- rast("你的原栅格文件路径.tif") # 获取原栅格边界框 my_box <- vect(st_as_sfc(st_bbox(template_rast), crs = crs(template_rast, proj=TRUE))) # 读取目标栅格并裁剪 ghsl <- rast("GHS_POP_E2015_GLOBE_R2019A_54009_1K_V1_0.tif") cropped_ghsl <- crop(ghsl, my_box) # 验证裁剪结果 plot(cropped_ghsl) plot(my_box, add = TRUE, border = "red", lwd = 2)
方法2:手动验证投影范围(可选)
若要确认转换后的范围是否正确,可将目标栅格的范围转换回WGS84投影,与原边界框对比:
# 获取目标栅格的Mollweide投影范围,转换为WGS84 ghsl_ext_wgs84 <- project(ext(ghsl), from = crs(ghsl), to = crs(template_rast)) # 打印对比两个范围 cat("原栅格边界框(WGS84):\n") print(st_bbox(template_rast)) cat("\n目标栅格的WGS84范围:\n") print(ghsl_ext_wgs84)
注意事项
- 避免手动转换轴对齐矩形后去匹配目标栅格的轴对齐范围,不同投影下的轴对齐规则不同,视觉上无法直接对应。
terra包的空间操作函数(如crop、mask、extract)均支持跨投影自动处理,优先使用内置函数减少误差。
内容的提问来源于stack exchange,提问作者TheRealJimShady
相关产品推荐
相关产品推荐

