Я построил greenbrown от источника (на основе файлов в постановке на GitHub) и обнаружили, что потребовалось значительно долго обрабатывать один сингл файл.
system.time(
r1 <- ReadVI3g("http://nasanex.s3.amazonaws.com/AVHRR/GIMMS/3G/1980s/geo81aug15a.n07-VI3g")
)
# user system elapsed
# 3.252 0.973 143.846
Поэтому я предлагаю, чтобы посмотреть на gimms пакет, который был разработан для данного конкретного вида данных, и, кроме того, можно получить CRAN. Обратите внимание, что в отличие от ReadVI3g
, он еще не предлагает автоматическое управление качеством, но эта функция запланирована для следующего обновления версии. Между тем, overlay
от растра пакет должен использоваться для отбрасывания низкокачественных значений.
# install.packages("gimms")
library(gimms)
system.time({
## download file, see ?downloadGimms for further options
f <- updateInventory()
f <- downloadGimms(f[3], overwrite = TRUE) # download 3rd file in 'f', viz. geo81aug15a.n07-VI3g
## rasterize ndvi and flags
ndvi <- rasterizeGimms(f)
flag <- rasterizeGimms(f, flag = TRUE)
## perform quality control
r2 <- overlay(ndvi, flag, fun = function(x, y) {
x[y[] > 1] <- NA
return(x)
})
})
# user system elapsed
# 4.538 3.894 26.781
получившиеся образы, очевидно, идентичны
> unique(r1 - r2, na.rm = TRUE)
[1] 0
, но как вы можете видеть, gimms основанное код работает намного быстрее. Кроме того, он предлагает параллельную функциональность (через doParallel), если вы хотите загрузить и обработать сразу несколько файлов.
Не совсем уверен, что вы здесь, можете ли вы быть более описательным? – Badger
Я думаю, что данные имеют подмножества.Вот что я нашел из документов: «Каждый набор данных NDVI представляет собой файл INT16, сохраненный с ieee-big_endian , он колеблется от -10000 -> (10000-> 10004) с файлом flagW, добавленным к значениям ndvi следующим образом: \t ndvi3g = round (ndvi * 10000) + flagW - 1; \t flagW варьируется от 1-> 7 для извлечения исходных значений ndvi и flagW \t flagW = ndvi3g-floor (ndvi3g/10) * 10 + 1; \t ndvi = floor (ndvi3g/10)/1000' Вы знаете, как я могу получить значения ndvi? –
@DNM У вас есть особый интерес к точному файловому формату этих файлов и вы хотите понять эти детали? Или вы просто хотите получить растровое изображение, чтобы отобразить его? – WhiteViking