Не удается извлечь значения chlor_a из файла NetCDF с помощью R - PullRequest
0 голосов
/ 12 октября 2018

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

Я пытаюсь получить значения хлорофилла из файла 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)

Большое спасибо за все!

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

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

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

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)
0 голосов
/ 13 октября 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)))

enter image description here

...