O objetivo do chewie é tornar o download de dados GEDI o mais simples possível. Isto inclui os produtos de nível pontual: 1B, 2A, 2B e 4A. Aqui está um rápido resumo das opções de design que permitem que {chewie} consiga isso:
Os dados são baixados e convertidos em arquivos parquet que podem ser lidos usando {seta} e convertidos em objetos sf. Essa abordagem tem bom desempenho, pois requer apenas que cada grânulo inteiro seja carregado na memória uma vez (quando é convertido de hdf5 em parquet). A partir daqui, podemos usar verbos dplyr (ou base R) para filter
, mutate
e select
dados conforme necessário, sem a necessidade de carregar todos os disparos, de um determinado grânulo, na memória.
Um cache em nível de sistema é usado para armazenar os dados. Isto significa que uma vez baixado um arquivo, ele não será baixado novamente, mesmo se estiver trabalhando em um projeto diferente (também é possível especificar um local de cache exclusivo para cada projeto).
Há suporte para filtragem espacial de grânulos que cruzam uma área de interesse e não apenas por uma caixa delimitadora; isso frequentemente reduz a quantidade de dados irrelevantes baixados.
Você pode instalar a versão de desenvolvimento do chewie assim:
# install.packages("pak")pak::pkg_install("Permian-Global-Research/chewie")
Primeiro, vamos carregar algumas bibliotecas. {dplyr} não é essencial, mas é recomendado por ser uma opção excelente e altamente performática para trabalhar com conjuntos de dados de seta.
biblioteca (chewie) biblioteca (dplyr) biblioteca (sf)
Aqui estão algumas funções auxiliares úteis para configurar suas credenciais (usando chewie_creds()
) e verificar se essas credenciais e o cache estão configurados corretamente (usando chewie_health_check()
). Por padrão, o cache é configurado na pasta .chewie
em seu diretório inicial. Você pode mudar isso executando chewie_cache_set()
.
chewie_creds() # para configurar suas credenciaischewie_health_check() # para verificar suas credenciais e configuração de cache.
Agora, vamos procurar dados GEDI 2A que cruzam com o Parque Estadual Prairie Creek Redwoods, Califórnia (o conjunto de dados está incluído no pacote). Em seguida, traçamos as pegadas dos grânulos que se cruzam com esta área para verificar o que temos. Observe que, por padrão, find_gedi
e grab_gedi
armazenam em cache suas saídas, portanto, quando essas funções forem executadas novamente, os dados serão carregados do cache em vez de baixados novamente, mesmo em uma sessão R diferente.
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")#> ✔ Usando GEDI em cache find resultprint(gedi_2a_search)#> #> ── chewie.find ──────────────── ──────────────────────────────────────── ────────── ──────────────────────────────────────── ─────────# > • GEDI-2A#> id time_start time_end url em cache#>#> 1: G2754665065-LPCLOUD 2023-01-25 05:14:31 2023-01- 25 06:47:21 https://data.lpdaac.earthdatacloud.nasa.gov/lp-pro... TRUE#> 1 variável(ões) não mostrada(s): [geometry ]#> #> ─── ──────────────────────────────────────── ────────── ──────────────────────────────────────── ────────── ───────────────────────────
Embora exista um método plot
para objetos chewie.find , uma ótima alternativa é plotar um mapa de folheto com chewie_show
, que pode ser estático ou interativo (isso usa o fantástico {mapview} nos bastidores).
mastigar_show(gedi_2a_search, zoom = 8)
Agora usamos grab_gedi
para baixar os dados - esta função converte os dados internamente para o formato parquet e os armazena no cache. O valor retornado é um objeto arrow_dplyr_query . Podemos então usar verbos {dplyr} para filter
/ select
os dados como desejamos antes de finalmente usar collect_gedi
para converter os dados em um objeto sf. Se nenhuma filtragem/seleção for realizada, então collect_gedi
retornará todas as colunas/linhas disponíveis para o AOI.
gedi_2a_sf <- grab_gedi(gedi_2a_search) |> filter(qualidade_flag == 1, degradar_flag == 0 ) |> select( feixe, data_hora, lat_lowestmode, lon_lowestmode, elev_highestreturn, elev_lowestmode, rh0, rh25, rh50, rh75, rh95, rh100 ) |> collect_gedi(gedi_find = gedi_2a_search)#> ✔ Todos os dados encontrados em cacheprint(gedi_2a_sf)#> Coleção de recursos simples com 884 recursos e 10 campos#> Tipo de geometria: PONTO#> Dimensão: XY#> Caixa delimitadora: xmin: -124.069 ymin: 41.3609 xmax: -123.9959 ymax: 41.43904#> CRS geodésico: WGS 84#> # A tibble: 884 × 11#> feixe data_hora 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 linhas mais#> # ℹ mais 5 variáveis: rh50 , rh75 , rh95 , rh100 ,#> # geometria
Finalmente, podemos representar graficamente os dados. Novamente podemos usar a função genérica chewie_show
.
mastigar_show(gedi_2a_sf, zcol = "rh95", zoom = 13, alfa = 0,5, aoi_color = "branco")
gedi-subsetter fornece uma seleção de ferramentas python para consultar e baixar dados GEDI. Seu escopo é semelhante ao {chewie}, mas também fornece acesso direto aos arquivos hdf5 para afiliados da NASA com acesso à plataforma MAAP.
{rGEDI} fornece a capacidade de baixar dados GEDI, mas também uma grande quantidade de funcionalidades adicionais para visualização, pós-processamento e modelagem.
{GEDI4R} que também fornece um conjunto de ferramentas para download, visualização e modelagem de dados GEDI, mas com foco no produto 4A.
pyGEDI é um pacote Python para baixar e visualizar dados GEDI.
GEDI-Data-Resources é uma coleção de scripts para python e R que fornece exemplos de como baixar e processar dados GEDI.
Esses recursos têm sido uma grande fonte de inspiração para {chewie}; gostaríamos de agradecer aos autores pelo seu excelente trabalho!