R中重采样不同范围栅格出现全NA值的问题求解
问题根源:坐标系标记错误导致空间范围无重叠
你遇到的重采样后全NA问题,核心原因是**hfp栅格的坐标系(CRS)被错误标记了**,导致两个栅格的空间范围完全没有重叠区域,resample自然输出全空的结果。
咱们拆解下你的栅格信息就能看明白:
alt是标准的WGS84经纬度坐标系(单位:度),范围是-180, 180, -60, 90,分辨率是0.0833度(约9公里)hfp虽然CRS写的是+proj=longlat,但它的分辨率是1000, 1000(明显是米为单位),范围是-18040094, 18040906, -7363043, 9018957——这数值是米级的投影坐标系范围,和alt的经纬度范围完全不搭边,两个栅格在空间上根本没有交集,重采样后自然全是NA。
解决步骤
1. 修正hfp的正确坐标系
首先得确定hfp实际用的投影。从范围和1000米分辨率来看,它大概率是Web Mercator投影(EPSG:3857)——这个投影的坐标范围刚好是约±20037508米,和你的hfp范围匹配。先给hfp设置正确的CRS:
library(raster) # 给hfp设置正确的Web Mercator投影(EPSG:3857) crs(hfp) <- "EPSG:3857" # 如果你用的是旧版本R,可能需要用CRS对象: # crs(hfp) <- CRS("+init=epsg:3857")
如果EPSG:3857不对,你需要去查hfp原始数据的文档,确认它的真实投影参数。
2. 投影转换+重采样
现在把hfp转换到和alt一致的WGS84经纬度坐标系,同时重采样到alt的分辨率和范围。你可以用projectRaster一步完成(它会自动处理投影转换和重采样):
# 将hfp转换到alt的坐标系和栅格尺寸 hfpResamp <- projectRaster(hfp, alt, method = "bilinear")
或者分两步操作(结果完全一致):
# 先转换到WGS84经纬度坐标系 hfp_longlat <- projectRaster(hfp, crs = crs(alt)) # 再重采样到alt的分辨率 hfpResamp <- resample(hfp_longlat, alt, method = "bilinear")
3. 验证结果
运行完后查看结果:
show(hfpResamp) minValue(hfpResamp) maxValue(hfpResamp)
现在应该能看到正常的数值范围,而不是全NA了。
额外提示
- 以后处理栅格时,一定要先检查CRS和单位是否匹配,如果分辨率和范围数值明显不对应(比如经纬度范围却出现几万的数值),大概率是CRS标记错误。
resample函数只处理相同坐标系下的栅格重采样,跨坐标系的转换必须用projectRaster。
内容的提问来源于stack exchange,提问作者Mafalda De Sousa Gama
相关产品推荐
相关产品推荐

