首页 > 解决方案 > 无法使用 R 从 NetCDF 文件中提取 chlor_a 值

问题描述

并感谢您的帮助!

我正在尝试使用 R 软件从 NetCDF 文件中获取叶绿素 a 值,但我得到的只是缺失值,NA。我想知道我是否做错了什么,或者文件是否真的缺少叶绿素 a 值。我可以使用此方法获取经度和纬度值。

我正在使用的文件来自这里https://oceandata.sci.gsfc.nasa.gov/MODIS-Aqua/Mapped/Monthly/4km/chlor_a/我尝试的任何文件都缺少值,不仅显示了剧本上。

require(rgdal)
require(maptools)
require(raster)
require(sp)
require(rorwr)
require(RNetCDF)

clorofila<- "C:\\Users\\User\\Desktop\\files\\A20172132017243.L3m_MO_CHL_chlor_a_4km.nc"

cla <- open.nc(clorofila)

print.nc(cla)
file.inq.nc(cla)

clor <- var.get.nc(cla,"chlor_a",start=c(1,1),count=c(8640,4320))
Long <- var.get.nc(cla,"lon")
Lat <- var.get.nc(cla, "lat")

使用 ncdf4 和 raster 我得到了相同的结果

require(ncdf4)

clorofila10<- "C:\\Users\\User\\Desktop\\files\\A20172132017243.L3m_MO_CHL_chlor_a_4km.nc"

nc <- nc_open(clorofila10)

val <- ncvar_get(nc, "chlor_a")
nc_close(nc)

光栅

require(raster)
clorofila10<- "C:\\Users\\User\\Desktop\\files\\A20172132017243.L3m_MO_CHL_chlor_a_4km.nc"
clacla<-raster(clorofila10)
CHL1 <- raster(clorofila10, varname="chlor_a")
names(CHL1) <- 'chlor_a'

z <- getValues(CHL1)

非常感谢你的一切!

此致

标签: rgisrasternetcdfnetcdf4

解决方案


该文件具有值。你可以看到这样的:

library(raster)
r <- raster("A20172132017243.L3m_MO_CHL_chlor_a_4km.nc", var="chlor_a")
plot(r)
cellStats(r, mean)
#[1] 0.4608675

或者像这样

 freq(round(r/10))
#  value    count
# [1,]     0 16110852
# [2,]     1   190403
# [3,]     2    24723
# [4,]     3     6790
# [5,]     4     3064
# [6,]     5     1666
# [7,]     6      821
# [8,]     7      524
# [9,]     8      349
#[10,]     9      209
#[11,]    10       70
#[12,]    NA 20985329

或者

summary(r)

推荐阅读