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

使用stars::read_stars与raster::raster读取同一.nc文件投影不一致求助

解决stars::read_stars读取NetCDF文件时的投影异常问题

问题背景

使用raster::raster()可正常读取CHAP_PM2.5_Y1K_2020_V4.nc文件,绘图投影显示正常;但用stars::read_stars()读取同一文件后,绘图出现投影异常,读取过程还弹出关于矢量字段的警告信息。

原因分析

该NetCDF文件包含多组变量,其中部分变量的维度定义与主PM2.5数据变量不统一,导致GDAL解析投影信息时出现偏差;另外raster::raster()默认仅读取第一个变量,而stars::read_stars()默认读取所有变量,这也是两者表现差异的核心原因。

解决方案

1. 指定读取目标变量

明确指定要读取的PM2.5变量(文件中对应变量名为GWRPM25),避免GDAL处理无关变量时干扰投影解析:

library(stars)
library(raster)

# 仅读取目标变量GWRPM25
pm_stars = stars::read_stars('CHAP_PM2.5_Y1K_2020_V4.nc', var = 'GWRPM25')

2. 手动校正投影信息

若指定变量后投影仍异常,可从raster对象中提取正确投影信息,赋值给stars对象:

pm_raster = raster::raster('CHAP_PM2.5_Y1K_2020_V4.nc')
pm_stars = stars::read_stars('CHAP_PM2.5_Y1K_2020_V4.nc', var = 'GWRPM25')

# 将raster对象的投影信息同步给stars对象
st_crs(pm_stars) = st_crs(pm_raster)

3. 验证修复效果

通过绘图确认投影是否恢复正常:

plot(pm_raster, main = 'raster::raster')
plot(pm_stars, main = 'stars::read_stars (fixed)')

额外说明

读取时的警告源于文件中存在维度不统一的矢量字段变量,指定目标变量后该警告会自动消失,且不影响主数据的读取与投影校正。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:40:33