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

如何从terra的SpatRaster对象构造包含经纬度及对应数值的数据框

解决方案

核心实现代码

terra包本身已经内置了直接输出带坐标数据框的原生方法,全程不需要额外加载其他空间包,实现步骤如下:

# 加载terra包
library(terra)

# 读取单变量nc文件为SpatRaster
r <- rast("your_file.nc")

# 直接转换为带坐标、栅格值的数据框
# xy=TRUE 表示输出行列对应的坐标值,na.rm=TRUE 会自动剔除无值的栅格单元
df <- as.data.frame(r, xy = TRUE, na.rm = TRUE)

# 修改列名符合你的要求
colnames(df) <- c("lon", "lat", names(r))

可选优化操作

  • 如果你的SpatRaster原始坐标系不是WGS84经纬度,可先做投影转换再转数据框:
# 转换为WGS84经纬度坐标系(EPSG:4326)
r_wgs84 <- project(r, "EPSG:4326")
# 再执行上述转数据框的操作即可
  • 若栅格体量极大,全量提取内存占用过高,可先随机采样再生成数据框:
# 随机采样10000个有效栅格单元生成数据框,可根据需求调整采样量
df_sample <- spatSample(r, size = 10000, xy = TRUE, na.rm = TRUE)
colnames(df_sample) <- c("lon", "lat", names(r))

后续地质统计适配

生成的三列数据框可直接适配绝大多数R地质统计包的输入要求:

  • 用gstat包拟合变异函数时,可直接指定locations = ~lon+lat传入坐标
  • 用geoR包构造geodata对象时,可直接将坐标和数值传入对应参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 11:15:06