Я бы порекомендовал вам посмотреть в блоге Florian Detsch ' s (сопровождающие пакета) об использовании пакета.Зачем?Флориан хорошо показывает, как импортировать файлы, используя Gimms , и как пакет может решить проблему организации файлов во времени (то есть в порядке времени), используя update_inventory () и remarangeFiles () - в моем понимании проблема, с которой вы столкнулись.
Надеюсь, это указывает вам правильное направление.
Флориан также написал руководство к пакету:
Вышеуказанное охватывает использование и применение пакета.
Цитируемая статья (импортировано для простоты)
Это гостевой пост Florian Detsch
О чем идет речь
С самым последним обновлением сбора данных GIMMS AVHRR до NDVI3g (Пинзон и Такер, 2014), мы решили создать пакет из всех функций, которые мы написали до сих пор, чтобы загрузить иобрабатывать двоичные файлы GIMMS с сервера NASA ECOCAST.Пакет называется gimms и содержит набор основных рабочих шагов, необходимых для передачи данных в R:
- updateInventory, чтобы вывести список всех файлов GIMMS, доступных в Интернете, и
- переупорядочить файлы для сортировки (онлайнили локальные) файлы по дате,
- downloadGimms для загрузки выбранных файлов,
- rasterizeGimms для импорта двоичных данных в виде объектов 'Raster *' в R и
- monthComposite для агрегированиядвухмесячные наборы данных для составления месячных значений.
Как установить
Пакет gimms (версия 0.1.1) официально зарегистрирован на CRAN и может бытьустанавливается напрямую через
## install 'gimms' package
install.packages("gimms")
## load 'gimms' package
library(gimms)
Чтобы использовать версию для разработчиков (не несем ответственности), пожалуйста, обратитесь к ветке 'Develop', размещенной на GitHub .Там вы также найдете последние новости и обновления, касающиеся пакета.
library(devtools)
install_github("environmentalinformatics-marburg/gimms", ref = "develop")
Список доступных файлов
updateInventory импортирует последнюю версию онлайнового инвентарного списка файлов как'символьный' вектор в R. Установив sort = TRUE, он в то же время является оберткой вокруг файлаrangerangeFiles, поскольку выходной вектор будет отсортирован по дате, а не по алфавиту.Последняя функция оказывается особенно полезной при рассмотрении соглашения об именовании файлов GIMMS, где, например, «geo13jul15a.n19-VI3g» означает первую половину июля 2013 года. Если активное интернет-соединение недоступно, updateInventory автоматически импортирует последнюю автономную версию файлаинвентарь.
gimms_files <- updateInventory()
## Trying to update GIMMS inventory from server...
## Online update of the GIMMS file inventory successful!
gimms_files[1:5]
## [1] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81jul15a.n07-VI3g</span>"
## [2] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81jul15b.n07-VI3g</span>"
## [3] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81aug15a.n07-VI3g</span>"
## [4] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81aug15b.n07-VI3g</span>"
## [5] "<span class="skimlinks-unlinked">http://ecocast.arc.nasa.gov/data/pub/gimms/3g.v0/1980s_new/geo81sep15a.n07-VI3g</span>"
Загрузка файлов
Следующим логическим шагом в цепочке обработки gimms является загрузка выбранных (если не всех) наборов данных за два месяца.Этого можно достичь, запустив downloadGimms, который принимает различные типы входных параметров.
- «пропущенный» ввод → загрузка всей коллекции Указание отсутствия какого-либо конкретного ввода, возможно, является наиболее простым способом получения данных.,Функция автоматически начнет загружать всю коллекцию файлов (в настоящее время с июля 1981 г. по декабрь 2013 г.) и записывать данные в dsn.
## download entire gimms collection
downloadGimms(dsn = paste0(getwd(), "/data"))
- «числовой» ввод → загрузка временного диапазона. Также возможноуказать начальный год (x) и / или конечный год (y), чтобы ограничить временный охват загружаемых наборов данных.В случае отсутствия x (или y) загрузка данных автоматически начнется с первого (или закончится с последним) доступного года.
## download gimms data from 1998-2000
downloadGimms(x = 1998, y = 2000,
dsn = paste0(getwd(), "/data"))
- ввод «символов» → загрузка определенных файлов. В качестве третьей и последней возможности запуска downloadGimms также можно предоставить вектор «символов», состоящий из действительных сетевых путей к файлам.Последний может быть легко получен из updateInventory (как показано выше) и напрямую передан входному аргументу x.
## download manually selected files
downloadGimms(x = gimms_files[769:780],
dsn = paste0(getwd(), "/data"))
Растеризация загруженных данных
rasterizeGimms преобразует полученные данные GIMMS из собственного двоичного файла в общий формат GeoTiff и делает отдельные слои доступными в R как обычные объекты Raster *. Таким образом, пользователь должен решить, следует ли отбрасывать значения «маска-вода» (-10 000) и значения «маска-нодата» (-5 000) (см. Также официальный NDVI3g README ) и примените коэффициент масштабирования (1/10000). Поскольку растеризация обычно занимает некоторое время, мы настоятельно рекомендуем использовать аргумент имени файла, который автоматически вызывает raster :: writeRaster.
## list available files
gimms_files <- rearrangeFiles(dsn = paste0(getwd(), "/data"),
pattern = "^geo13", <span class="skimlinks-unlinked">full.names</span> = TRUE)
## rasterize files
gimms_raster <- rasterizeGimms(gimms_files,
filename = paste0(gimms_files, ".tif"))
Немного усилий и с помощью RColorBrewer и sp, вот что мы создали до сих пор.
Создание ежемесячных композитов
Иногда от пользователя требуется рассчитать месячные значения композитов из двухмесячных наборов данных GIMMS, например, обеспечить временное перекрытие с другим продуктом дистанционного зондирования. Для этой цели gimms также имеет функцию MonthComposite, которая работает как с векторами имен файлов, так и со всеми объектами 'RasterStack' (в идеале возвращаемыми rasterizeGimms) и рассчитывает месячные значения на основе определенной пользователем функции (например, fun). = максимум для создания месячных слоев MVC). Эта функция в значительной степени основана на stackApply из растрового пакета, и требуемая работа по кодированию довольно проста.
## 'GeoTiff' files created during the previous step
gimms_files_tif <- sapply(gimms_raster@layers, function(i) attr(i@file, "name"))
## create monthly maximum value composites
gimms_raster_mvc <- monthlyComposite(gimms_files_tif)
Последнее замечание
Более полную версию этого краткого введения в пакет gimms, включая коллекцию вариантов использования (особенно в сочетании с параллельными возможностями R), можно найти в Интернете по адресу https://github.com/environmentalinformatics-marburg/gimms. Любые комментарии о том, как улучшить пакет, возможные сообщения об ошибках и т. д. высоко ценятся!