ipeaGIT / geobr

Easy access to official spatial data sets of Brazil in R and Python
https://ipeagit.github.io/geobr/
803 stars 119 forks source link

Add function `read_country` #28

Closed rafapereirabr closed 5 years ago

rafapereirabr commented 5 years ago

Adicionar função read_country. Que envolve

# 1 carregar dados dos estados
read_state(cod_state="all")
# Dar merge nos poligonos. Um das funções abaixo:
st_union 

 st_combine
guiducar commented 5 years ago

Oi Rafael, como a função _readstate (e todas as outras) já carrega todos os estados se lhe atribuirmos o parâmetro all (como você já disse), eu não entendi o que a função _readcountry fará, não percebi a diferença entre esta e as outras funções quando especificamos all. Pode detalhar melhor, por favor?

rafapereirabr commented 5 years ago

A ideia da função é carregar um shape file com o perímetro do país.

O jeito mais eficiente de fazer isso seria fazer download dos dados de todos estados e depois dissolver as fronteiras entre estados

Rafael H.M. Pereira

On 24 Jun 2019, at 11:27, Guilherme notifications@github.com wrote:

Oi Rafael, como a função read_state (e todas as outras) já carrega todos os estados se lhe atribuirmos o parâmetro all (como você já disse), eu não entendi o que a função read_country fará, não percebi a diferença entre esta e as outras funções quando especificamos all. Pode detalhar melhor, por favor?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or mute the thread.

guiducar commented 5 years ago

Fazendo o download de todos os estados, e depois dissolvendo as fronteiras, estava demorando muito tempo (coisa de vários minutos). No FTP do IBGE existe o shape do Brasil, creio que seja mais eficiente remover as fronteiras carregando um shape de uma vez. Um problema que eu encontrei (e que ainda não achei a solução) foi que o mapa (após utilizar a função _stunion ), ainda fica com algumas linhas, conforme abaixo (mapa gerado pelo mapview): Rplot01

guiducar commented 5 years ago

Usando o shape do Brasil de 2018 o problema foi resolvido! Rplot2

rafapereirabr commented 5 years ago

Eh, o st_union nao funciona muito bem ainda. Acho que a sua sugestao vai ser mais facil e rapida de implementar mesmo

guiducar commented 5 years ago

Eu acabei fazendo da forma que você disse. O st_union não funciona bem nos anos: 2000, 2001, 2014 e 2015, mesmo se eu usar o shape do Brasil, então a função vai travar ou carregar algumas linhas, se o usuário especificar qualquer um desses anos.

guiducar commented 5 years ago

Não sei se alguém já notou isto, mas a função read_state não funciona se o pacote DataTable estiver carregado. Como a minha função foi escrita editando a read_state, ela está com a mesma incompatibilidade.

rafapereirabr commented 5 years ago

Não sei se alguém já notou isto, mas a função read_state não funciona se o pacote DataTable estiver carregado. Como a minha função foi escrita editando a read_state, ela está com a mesma incompatibilidade.

Resolvi. Era só transformar o metadata.rds para data.frame (sem data.table)

rafapereirabr commented 5 years ago

A operação st_union demora muito mesmo. O ideal seri que o usuário não tivesse que rodar ela toda vez que chama a função. Então eu peguei o seu código e criei um script prep_country para gerar os arquivos de sf do Brasil pra todos anos e salvar esses dados no nosso servidor. Agora, quando o usuário chama a função, read_country, a função simplesmente faz o download do arquivo que já está pronto.

rafapereirabr commented 5 years ago

Função read_country já funcionando!