感谢您的帮助!
我正在尝试使用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和栅格,我得到了相同的结果
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)
非常感谢您所做的一切!
最诚挚的问候
答案 0 :(得分:0)
使用ncdf4读取数据没问题。有很多NA,但不仅如此。这是这类数据的特征:您有一个相对于地球的矩阵,但有沿海叶绿素浓度的数据。
tempF <- tempfile()
download.file('https://oceandata.sci.gsfc.nasa.gov/cgi/getfile/A20172132017243.L3m_MO_CHL_chlor_a_4km.nc', tempF)
library(ncdf4)
ncF <- nc_open(tempF)
val <- ncvar_get(ncF, "chlor_a")
nc_close(ncF)
> length(val)
[1] 37324800
> sum(is.na(val))
[1] 20985329
library(raster)
plot(raster(t(val)))
答案 1 :(得分:0)
文件具有值。您可以看到这样的内容:
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)