Olá pessoal!
Construí um painel de dados (usando o pacote flexdashboard) que apresenta mapas de distribuição de espécies ameaçadas de aves e parques eólicos, além de outras camadas de interesse. Estou tentando hospedá-lo no github, mas estou enfrentando problemas devido ao grande tamanho dos arquivos de dados espaciais.
Pensei que talvez eu pudesse manter os arquivos grandes de dados em um repositório gratuito e lê-los diretamente do repositório usando algum pacote disponível.
Usei o pacote ‘gsheet’ para ler parte dos dados (algumas tabelas em formato .xlsx ou .csv) e funcionou.
r
install.packages('gsheet')
library(gsheet)
dados <- gsheet2tbl ('https://drive.google.com/open?id=1tgvOoEMkHRgNTVuHdlO3DikH0cEGsL0X')
View(dados)
Mas não encontrei nenhuma maneira de ler os arquivos mais pesados (no formato .shp) diretamente do Google Drive o de outro repositório gratuito qualquer.
Alguém teria alguma dica ou ideia de como eu poderia resolver o problema?
Agradeço antecipadamente por qualquer ajuda.
Arlindo
Olá! Experimente o pacote {googledrive}
.
Exemplo:
u <- "https://drive.google.com/file/d/1Hv3CIoYSTWff4g_RJohc-UCQUsRp_RhU/view?usp=sharing"
arquivo_temporario <- fs::file_temp("shp", ext = ".zip")
pasta_do_arquivo_temporario <- dirname(arquivo_temporario)
googledrive::drive_download(u, arquivo_temporario)
#> → Using an auto-discovered, cached token
#> To suppress this message, modify your code or options to clearly consent to the
#> use of a cached token
#> See gargle's "Non-interactive auth" vignette for more details:
#> <https://gargle.r-lib.org/articles/non-interactive-auth.html>
#> → The googledrive package is using a cached token for julio.trecenti@gmail.com
#> File downloaded:
#> * datageo.zip
#> Saved locally as:
#> * /tmp/RtmpPMgz76/shp110166db1658d.zip
unzip(arquivo_temporario, exdir = pasta_do_arquivo_temporario)
dados <- sf::read_sf(pasta_do_arquivo_temporario,
options = "ENCODING=WINDOWS-1252")
dados
#> Simple feature collection with 463 features and 5 fields
#> Geometry type: POINT
#> Dimension: XY
#> Bounding box: xmin: -53.00611 ymin: -24.72889 xmax: -44.77389 ymax: -19.84861
#> Geodetic CRS: SIRGAS 2000
#> # A tibble: 463 x 6
#> Codigo Corpo_Dagu KLOCAL Valor Classe geometry
#> <chr> <chr> <chr> <int> <chr> <POINT [°]>
#> 1 ABAN02… Córrego Água… Ponte na Rod. Mu… 63 Boa (-47.85306 -22.23111)
#> 2 ABRA02… Ribeirão Águ… Ponte na Av. Pri… 60 Boa (-45.36833 -23.81944)
#> 3 ACLA00… Reservatório… No Pier do Reser… 82 Ótima (-46.65833 -23.39778)
#> 4 AGUA02… Rio Aguapeí … Ponte na SP-425 … 67 Boa (-50.58917 -21.67639)
#> 5 AGUA02… Rio Aguapeí … Ponte que liga T… 71 Boa (-51.49778 -21.22083)
#> 6 AGUA02… Rio Aguapeí … Ponte na Rodovia… 71 Boa (-49.67556 -21.92139)
#> 7 AGUA02… Rio Aguapeí … Ponte na rodovia… 72 Boa (-51.01444 -21.43194)
#> 8 ALIM02… Ribeirão da … Junto a sua foz,… 41 Regul… (-44.94972 -22.56583)
#> 9 ANCO02… Rio Branco Na ponte da Rodo… 55 Boa (-46.46444 -23.93472)
#> 10 APIA02… Rio Apiaí-Gu… Ponte na Rod. SP… 70 Boa (-48.65611 -23.9275)
#> # … with 453 more rows
Created on 2021-04-11 by the reprex package (v2.0.0)
1 curtida
Caro Júlio,
Obrigado pela dica. O script funcionou perfeitamente e consegui ler os arquivos no formato .shp armazenados no googledrive. Entretanto, ocorreu um erro no momento da renderização do código:
r
Error in if (length(nms) != n || any(nms == "")) stop("'options' must be a fully named list, or have no names (NULL)") : valor ausente onde TRUE/FALSE necessário
Pelo que pesquisei, parece ser uma incompatibilidade entre o pacote sf (Simple Features) e a função addPolygons() do pacote Leaflet. Se entendi corretamente, parece que essa função do Leaflet não lê feições de polígonos “geradas” a partir do pacote sf.
De qualquer modo, muito grato pela ajuda!
Arlindo