Не удается извлечь значения chlor_a из файла NetCDF с помощью R

и спасибо за вашу помощь!

Я пытаюсь получить значения хлорофилла a из файла NetCDF с помощью программного обеспечения R, но все, что я получаю, - это отсутствующие значения, NA. Я хотел бы знать, делаю ли я что-то не так или в файле действительно просто отсутствуют значения хлорофилла а. С помощью этого метода я могу получить значения долготы и широты.

Файл, который я использую, находится здесь 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)

Огромное спасибо за все!

С наилучшими пожеланиями


person TheBlueMagpie    schedule 12.10.2018    source источник


Ответы (2)


В файле есть значения. Вы можете увидеть это так:

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

Or

summary(r)
person Robert Hijmans    schedule 13.10.2018

Нет проблем с чтением данных с помощью ncdf4. НАС много, но не только. Это характерно для этого типа данных: у вас есть матрица относительно земного шара, но с данными о концентрации хлорофилла в прибрежной зоне.

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)))

введите описание изображения здесь

person Carlos Eduardo Lagosta    schedule 13.10.2018
comment
Большое спасибо за ваш ответ! Вы использовали какие-то другие функции? Я все еще получаю все значения NA от начала до конца матрицы результатов. Я проверил значения, отличные от NA, и не дал мне других значений в матрице. - person TheBlueMagpie; 13.10.2018
comment
Ничего особенного. Я обновил ответ своим полным кодом. Когда вы строите график, вы можете видеть, что у вас есть данные для побережий; остальная часть океанов - это СА. - person Carlos Eduardo Lagosta; 14.10.2018