Цель Chevie — максимально упростить загрузку данных GEDI. Сюда входят продукты точечного уровня: 1B, 2A, 2B и 4A. Вот краткое описание вариантов дизайна, которые позволяют {chewie} добиться этого:
Данные загружаются и преобразуются в файлы паркета, которые затем можно прочитать с помощью {стрелки} и преобразовать в объекты SF. Этот подход эффективен, поскольку требует, чтобы каждая гранула целиком загружалась в память только один раз (при преобразовании из hdf5 в паркет). С этого момента мы можем использовать глаголы dplyr (или базу R) для filter
, mutate
и select
данных по мере необходимости без необходимости загружать все снимки из заданной гранулы в память.
Для хранения данных используется кеш системного уровня. Это означает, что однажды скачанный файл не будет загружен повторно, даже если он работает в другом проекте (также можно указать уникальное местоположение кэша для каждого проекта).
Имеется поддержка пространственной фильтрации гранул, пересекающих интересующую область, а не только ограничивающей рамкой; это часто уменьшает количество загружаемых ненужных данных.
Вы можете установить разрабатываемую версию Chewie следующим образом:
# install.packages("pak")pak::pkg_install("Permian-Global-Research/chewie")
Сначала давайте загрузим несколько библиотек. {dplyr} не является обязательным, но рекомендуется, поскольку это отличный и высокопроизводительный вариант для работы с наборами данных стрелок.
библиотека (чуви) библиотека (дплир) библиотека(нф)
Вот несколько полезных вспомогательных функций для настройки ваших учетных данных (с помощью chewie_creds()
) и проверки правильности настройки этих учетных данных и кэша (с помощью chewie_health_check()
). По умолчанию кеш устанавливается в папке .chewie
в вашем домашнем каталоге. Вы можете изменить это, запустив chewie_cache_set()
.
Chewie_creds() # для настройки ваших учетных данныхchewie_health_check() # для проверки ваших учетных данных и настройки кэша.
Теперь давайте найдем данные GEDI 2A, которые пересекаются с государственным парком Прери-Крик-Редвудс, Калифорния (набор данных включен в пакет). Затем мы наносим на график следы гранул, пересекающих эту область, чтобы проверить, что у нас получилось. Обратите внимание, что по умолчанию и find_gedi
, grab_gedi
кэшируют свои выходные данные, поэтому при повторном запуске этих функций данные будут загружаться из кеша, а не загружаться снова, даже в другом сеансе R.
prairie_creek <- sf::read_sf(system.file( "geojson", "prairie-creek.geojson", package = "chewie"))gedi_2a_search <- find_gedi(prairie_creek, gedi_product = "2A", date_start = "2023-01 -01", date_end = "2023-01-31")#> ✔ Использование кэшированного GEDI find resultprint(gedi_2a_search)#> #> ── Cheewie.find ──────────────── ────────────────────────────────────────────────── ────────────────────────────────────────────────# > • GEDI-2A#> id time_start time_end URL-адрес в кэше#>#> 1: G2754665065-LPCLOUD 25 января 2023 05:14:31 01.2023- 25 06:47:21 https://data.lpdaac.earthdatacloud.nasa.gov/lp-pro... TRUE#> 1 переменная не отображается: [geometry ]#> #> ─── ────────────────────────────────────────────────── ────────────────────────────────────────────────── ────────────────────────────
Несмотря на то, что для объектов Chewie.find существует метод plot
, отличной альтернативой является построение карты-листовки с помощью chewie_show
, которая может быть статической или интерактивной (при этом используется фантастический {mapview} под капотом).
Chewie_show( gedi_2a_search, масштабирование = 8)
Теперь мы используем grab_gedi
для загрузки данных — эта функция внутренне преобразует данные в паркетный формат и сохраняет их в кеше. Возвращаемое значение является объектомarrow_dplyr_query . Затем мы можем использовать глаголы {dplyr} для filter
/ select
данных по своему усмотрению, прежде чем, наконец, использовать collect_gedi
для преобразования данных в объект SF. Если фильтрация/выбор не выполняется, то collect_gedi
вернет все доступные столбцы/строки для AOI.
gedi_2a_sf <-grab_gedi(gedi_2a_search) |> фильтр(quality_flag == 1, degrade_flag == 0 ) |> select( луч, дата_время, lat_lowestmode, lon_lowestmode, elev_highestreturn, elev_lowestmode, rh0, rh25, rh50, rh75, rh95, rh100 ) |> Collect_gedi(gedi_find = gedi_2a_search)#> ✔ Все данные найдены в кэшеprint(gedi_2a_sf)#> Простая коллекция объектов с 884 объектами и 10 полями#> Тип геометрии: POINT#> Размер: XY#> Ограничивающая рамка: xmin: -124,069 ymin: 41.3609 xmax: -123.9959 ymax: 41.43904#> Геодезический CRS: WGS 84#> # A tibble: 884 × 11#> луч date_time elev_highestreturn elev_lowestmode rh0 rh25#> *#> 1 0 2023-01-25 06:09:05 -19.6 -23.8 -3.55 -1.12 #> 2 0 2023-01-25 06:09:05 -20.7 -24.2 -3.89 -1.27 #> 3 0 2023-01-25 06:09:05 -20,7 -24,2 -3,93 -1,27 #> 4 0 2023-01-25 06:09:05 -2,29 -23,3 -3,37 -0,0300#> 5 0 2023-01-25 06:09:05 27,7 -15,0 -2,54 9,70 #> 6 0 2023-01-25 06:09:05 35,8 4,55 -3,74 12,1 #> 7 0 2023-01-25 06:09:05 55,9 12,2 -1,57 16,8 # > 8 0 2023-01-25 06:09:05 94,6 41,0 -1,53 25,8 #> 9 0 2023-01-25 06:09:05 95,3 42,5 -3,78 6,06 #> 10 0 2023-01-25 06:09: 05 98,3 33,8 -2,32 29,9 #> # ℹ еще 874 строк#> # ℹ еще 5 переменных: rh50 , rh75 , rh95 , rh100 ,#> # Geometry
Наконец, мы можем построить график данных. Мы снова можем использовать общую функцию chewie_show
.
Chewie_show( gedi_2a_sf, zcol = "rh95", масштабирование = 13, альфа = 0,5, aoi_color = "белый")
gedi-subsetter предоставляет набор инструментов Python для запроса и загрузки данных GEDI. Его область действия аналогична {chewie}, но он также обеспечивает прямой доступ к файлам hdf5 для филиалов НАСА, имеющих доступ к платформе MAAP.
{rGEDI} предоставляет возможность загрузки данных GEDI, а также множество дополнительных функций для визуализации, постобработки и моделирования.
{GEDI4R}, который также предоставляет набор инструментов для загрузки, визуализации и моделирования данных GEDI, но с упором на продукт 4A.
pyGEDI — это пакет Python для загрузки и визуализации данных GEDI.
GEDI-Data-Resources — это набор скриптов для Python и R, которые предоставляют примеры загрузки и обработки данных GEDI.
Эти ресурсы стали отличным источником вдохновения для {chewie}; Хотим поблагодарить авторов за прекрасную работу!