You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将值从SpatRaster转移到新栅格后无法读取,求排查问题

问题排查与解决方案

以下是你用terra包处理风数据栅格化时出现提取NaN的常见错误原因及修复步骤:

1. 坐标参考系(CRS)不匹配

这是最常见的问题:如果带风数据的栅格和德国范围空栅格的CRS不一样,重采样后坐标对应关系会混乱,提取原坐标自然全是NaN。

  • 先检查两个栅格的CRS:
    crs(wind_raster)
    crs(empty_germany_raster)
    
  • 统一CRS:把风数据栅格转换成空栅格的CRS:
    wind_raster <- project(wind_raster, crs(empty_germany_raster))
    

2. 点转栅格的方式不对

直接从DataFrame转栅格可能没对齐空栅格的像元,导致重采样后值丢失。改用rasterize基于空栅格模板生成风数据栅格更稳妥:

# 先把DataFrame转为矢量点
wind_points <- vect(wind_df, geom = c("lon", "lat"), crs = "EPSG:4326")
# 用空栅格作为模板,把点数据栅格化(用mean或其他合适的统计方法)
wind_raster <- rasterize(wind_points, empty_germany_raster, field = "dd", fun = mean)

3. 提取时坐标没转投影

原数据的lon/lat是WGS84,但重采样后的栅格可能是德国常用的投影(比如EPSG:3035),直接用WGS84坐标提取会找不到对应像元:

# 把原数据点转为目标栅格的CRS
original_points <- vect(wind_df, geom = c("lon", "lat"), crs = "EPSG:4326")
original_points_proj <- project(original_points, crs(resampled_wind))
# 再提取值
extracted_values <- extract(resampled_wind, original_points_proj)

4. 空栅格范围没覆盖数据点

如果你的空栅格范围根本没包含那10个风数据点,重采样后肯定全是NaN:

  • 检查范围是否重叠:
    # 查看空栅格范围
    ext(empty_germany_raster)
    # 查看风数据点的范围
    ext(wind_points)
    
  • 调整空栅格范围,确保覆盖所有点:
    point_ext <- ext(min(wind_df$lon), max(wind_df$lon), min(wind_df$lat), max(wind_df$lat))
    empty_germany_raster <- rast(ext = point_ext, crs = crs(wind_points), resolution = res(empty_germany_raster))
    

内容的提问来源于stack exchange,提问作者Andreas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 06:40:26