Я пытаюсь создать data.frame в R со следующими именами столбцов: latitutde, longitude, Day, Month, Year и различными показателями температуры с использованием базы данных по аномалиям температуры кораллового рифа (CoRTAD).
В частности, я использую cortadv6_SSTA.n c https://data.nodc.noaa.gov/cortad/Version6/
У меня проблемы с форматированием и включением дат для добавления в метрики. Примечание: я обычно делаю это в ARCGIS, но программа продолжает зависать, вероятно из-за размера файла (103 ГБ).
Вот что я сделал до сих пор:
Считайте данные:
ncin <- nc_open(ncfname)
print(ncin) #time_period_covered: Weekly, 1982-01-02 - 2019-12-27
Извлеките переменные: lat, lon и tas
lon <- ncvar_get(ncin,"lon")
lat <- ncvar_get(ncin,"lat")
tas <- ncvar_get(ncin, "SSTA_FrequencyStandardDeviation") #one of the variables of interest
одно из примеров мест, представляющих интерес, чтобы сделать данные меньше и проще работать с
lon_index <- which.min(abs(lon - -149.437596))
lat_index <- which.min(abs(lat - -17.788787))
Вывод одного значения, потому что время еще не включено
tas[lon_index, lat_index]
следующее ниже не будет работать, потому что данные не отформатированы правильно (хотя в ncin говорится, что они в "григорианском" формате
tas_time <- nc.get.time.series(ncin, correct.for.gregorian.julian=TRUE)
time_index <- which(format(tas_time, "%Y-%m-%d") == "2075-07-15")
Это похоже на полезную функцию из пакета ncdf4.helpers, но оно привело к нулевым возвращаемым значениям
library(ncdf4.helpers)
tas2 <- nc.get.var.subset.by.axes(ncin, c("SSTA_FrequencyStandardDeviation","time"),
axis.indices = list(X = lon_index,
Y = lat_index))
Я попытался переформатировать даты
time <- ncvar_get(ncin,"time")
time
dim(time)
tunits <- ncatt_get(ncin,"time","units")
nt <- dim(time)
nt
в лучшем случае можно было бы заставить функцию, подобную следующей, работать из пакета ereefs
library(ereefs)
library(ncdf4)
test.reef<-get_ereefs_ts(var_names = ("SSTA_FrequencyStandardDeviation"),
location_latlon = c(-XXX, YYY), layer = "surface",
start_date = c(2010, 12, 31), end_date = c(2016, 10, 31),
input_file = "cortadv6_SSTA.nc", input_grid = NA, eta_stem = NA,
override_positive = FALSE, verbosity = 1)
Следующие посты очень многообещающие и были полезны, но мне кажется, что часть даты не верна : https://cran.r-project.org/web/packages/futureheatwaves/vignettes/starting_from_netcdf.html Используйте R для извлечения временных рядов из данных netcdf https://pjbartlein.github.io/REarthSysSci/ltms-and-anomalies.html
Спасибо за любую помощь !!