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

使用R的terra包提取多NetCDF海面密度点数据报错求助

从Copernicus海面密度NetCDF提取点数据时类型不兼容报错

数据说明

从哥白尼网站获取了2012-2024年的MULTIOBS_GLO_PHY_S_SURFACE_MYNRT_015_013每日海面密度数据,因单次下载限制最多2年,得到5个.nc文件。

预期目标

从2012-2024年的NetCDF文件中,提取野外调查特定日期的点数据,并将数值作为列插入到自有数据框中。

报错信息

运行选择海面密度变量的代码时,出现类型不兼容错误:

Error: Not compatible with requested type: [type=character; target=double].

此前用完全相同的方法从Lm3 AQUA MODIS文件提取叶绿素a和海表温度点数据成功,无法定位海面密度处理的问题,因数据所有权限制无法分享自有数据框。

代码实现

读取所有5个NetCDF文件

# SS1:2012年1月1日至2014年12月31日
sss1 <- terra::rast("~/Documents/cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729236771868.nc")
plot(sss1)
sss1 <- subset(sss1, 1:1096)

# SS2:2015年1月1日至2017年12月31日
ss2 <- terra::rast("~/Documents/cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729236939325.nc")
# 仅提取海面密度的子集
ss2 <- subset(ss2, 1:1096)

# SS3:2018年1月1日至2020年12月31日
ss3 <- terra::rast("~/Documents/cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729237129644.nc")
# 仅提取海面密度的子集
ss3 <- subset(ss3, 1:1096)

# SS4:2021年1月1日至2023年12月16日
ss4 <- terra::rast("~/Documents/cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729252813869.nc")
# 仅提取海面密度的子集
ss4 <- subset(ss3, 1:1080)

# SS5:2023年12月17日至2024年10月12日
ss5 <- terra::rast("~/Documents/cmems_obs-mob_glo_phy-sss_nrt_multi_P1D_1729253007917.nc")
# 仅提取海面密度的子集
ss5 <- subset(ss3, 1:301)

合并所有子集文件

total_sss <- c(sss1, ss2, ss3, ss4, ss5)

提取点数据

# 从NetCDF文件中选择海面密度变量
SSSs <- terra::rast(total_sss, "dos")

# 将数据框转换为CRS为4326的sf类空间对象
Ds_Points <- st_as_sf(x=MyDf, 
                      coords = c("Longitude_E_DD", "Latitude_N_DD"), 
                      crs = 4326)
    
# 从NetCDF文件中提取海面密度值
SSSs_Data <- terra::extract(SSSs, Ds_Points)

# 用cbind函数将海面密度结果添加到数据框
MyDf <- cbind(MyDf, SSS = SSSs_Data$dos)

栅格对象信息

total_sss 信息

class       : SpatRaster 
dimensions  : 189, 154, 4669  (nrow, ncol, nlyr)
resolution  : 0.125, 0.125  (x, y)
extent      : 28.75, 48, 8.625, 32.25  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 
sources     : cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729236771868.nc:dos  (1096 layers) 
              cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729236939325.nc:dos  (1096 layers) 
              cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729237129644.nc:dos  (1096 layers) 
              ... and 2 more source(s)
varnames    : dos (Sea surface density) 
              dos (Sea surface density) 
              dos (Sea surface density) 
              ...
names       : dos_d~=-0_1, dos_d~=-0_2, dos_d~=-0_3, dos_d~=-0_4, dos_d~=-0_5, dos_d~=-0_6, ... 
unit        :       kg/m3,       kg/m3,       kg/m3,       kg/m3,       kg/m3,       kg/m3, ... 
time        : 2012-01-01 to 2020-12-31 UTC 

sss1 信息

class       : SpatRaster 
dimensions  : 189, 154, 1096  (nrow, ncol, nlyr)
resolution  : 0.125, 0.125  (x, y)
extent      : 28.75, 48, 8.625, 32.25  (xmin, xmax, ymin, ymax)
coord. ref. : lon/lat WGS 84 
source      : cmems_obs-mob_glo_phy-sss_my_multi_P1D_1729236771868.nc:dos 
varname     : dos (Sea surface density) 
names       : dos_d~=-0_1, dos_d~=-0_2, dos_d~=-0_3, dos_d~=-0_4, dos_d~=-0_5, dos_d~=-0_6, ... 
unit        :       kg/m3,       kg/m3,       kg/m3,       kg/m3,       kg/m3,       kg/m3, ... 
time        : 2012-01-01 to 2014-12-31 UTC 

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 22:14:58