Skip to content

Scripts para fazer download dos dados espaciais do FBDS

License

Notifications You must be signed in to change notification settings

open-geodata/br_fbds

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fundação Brasileira para o Desenvolvimento Sustentável - FBDS


Em novembro de 2022 surgiu a necessidade/curiosidade de melhor compreender os dados de hidrologia e uso do solo disponibilizados pela Fundação Brasileira para o Desenvolvimento Sustentável (FBDS). Os dados são utilizados em projetos de pesquisa (Biota-Síntese e outros) e são disponibilizados em um repositório público de mapas e shapefiles para download.

Para obter os dados desenvolvi scripts para fazer o download dos layers do estado de São Paulo. As rotinas podem ser usadas para outros estados. O resultado formou a criação de 7 layers em formato geopackage:

id Layer Subpasta Tamanho
1 app.gpkg APP 994 MB
2 app_uso.gpkg APP 2,07 GB
3 hidro_simples.gpkg HIDROGRAFIA 673 MB
4 hidro_duplas.gpkg HIDROGRAFIA 93,8 MB
5 hidro_nascentes.gpkg HIDROGRAFIA 60,0 MB
6 hidro_massa.gpkg HIDROGRAFIA 124 MB
7 uso.gpkg USO 3,89 GB
Total 7,87 GB

Abaixo segue informações obtidas no site da Fundação:

Em 2015 a Fundação Brasileira para o Desenvolvimento Sustentável deu início ao Projeto de Mapeamento em Alta Resolução dos Biomas Brasileiros, que desde então vem produzindo dados primários de uso e cobertura do solo, hidrografia e Áreas de Preservação Permanente em uma resolução inédita para os biomas brasileiros (5 metros).

Os resultados do mapeamento vêm sendo utilizados para apoiar a execução de políticas públicas - em especial a implementação do Cadastro Ambiental Rural, o planejamento territorial, a realização de pesquisas acadêmicas e o desenvolvimento de tecnologias. Até o momento o mapeamento já foi concluído para mais de 4 mil municípios brasileiros abrangidos pelos biomas Mata Atlântica e Cerrado.


qgis



h5ai

A interface do repositório foi construída em com o framework h5ai que se assemelha a estrutura de um servidor FTP. Foi importante estudar o funcionamento do framework, do lado do cliente, para descobrir as melhores maneiras de "raspar" os dados.

Pesquisei a possibilidade de existirem APIs em python para "raspar", de modo facilitado. Na ausência de APIs públicas, foi necessário pensar em técnicas de webscrapping.

Pesquisando sobre APIs para utilizar com o framework h5ai, encontrei informação sobre um bug, no Exploit-DB.com. (a ser pequisado...)



Abordagens

Primeira Abordagem (ruim e, portanto, descontinuada)

A concepção empregada foi obter a lista dos arquivos em formato tabular (.csv) para, posteriormente, fazer o download.

Usando o ./scripts/01_get_data.ipynb, foi utilizada a seguinte concepção: Para criar a lista de arquivos, fiz com auxílio do selenium. Com o driver eram realizados os seguintes procedimentos:

  1. Listar todos as Subpastas e Arquivos de um diretório raiz;
  2. Para cada Subpasta encontrada, entra-se nela, e repetir o procedimento de listar Arquivos), retornando para a pasta anterior ao final
  3. Fazia isso de modo em loop, utilizando uma função recursiva.
  4. A cada iteração, todas as URLs apresentadas eram colecionadas em um tabela .csv.

Abordagem_1


Uma vez com todos os links, foi realizado o download usando o JDownloder, com arquivo scripts/03_download_list_files.ipynb



Segunda Abordagem (melhor!!)

A partir do diretório do Estado de São Paulo, com 645 pastas (uma para cada município), foi realizado o download da pasta, resultando em 645 arquivos .tar. Isso foi feito com o arquivo ./scripts/01_get_data.ipynb. A ideia era:

  1. Listar todos as Subpastas (que represetam os municípios) de um diretório raiz;
  2. Usando os conceitos de ActionChains, passar o mouse sobre a pasta e clicar nela.
  3. Clicar no botão "Fazer Download".

Abordagem_2


Após isso, com uso do scripts/02_adjust_data.ipynb, foram feitos os seguintes procedimentos:

  1. Listar todos os arquivos shapefile (.shp) que estão dentro dos arquivos .tar, sem descompactar!
  2. Criar uma tabela com essa lista de arquivos.
  3. Ajustar essa tabela, agregando diversas informações para re-criar os caminhos para o arquivo.
  4. Criar cententas de arquivos temporários (com auxílio da bibliotenca tempfile), com o mesmo padrão de nome, evitando a necessidade de descompactar os arquivos .tar
  5. Listar os arquivos fake shapefile e ajusta-los, para que direcionem ao arquivo dentro do .tar
  6. Testar e leitura dos arquivos pelo geopandas, conectar e salvar... para cada feição.


TODO

  1. Definir funções de fazer o download dos arquivos, a partir da lista.
  2. Realizar o agendamento para obter a lista.
  3. Ajustar a pasta de download. Atualmente vai para a pasta padrão. Movi manualmente!
  4. Ajustar os tipos de arquivos (Pontos, Polylines, Polygons), visto que na lista de arquivos surgiu uma feição curiosa:
    1. RIOS_DUPLOS.shp
    2. RIOSDUPLOS.shp
    3. RIOS_DUPLOS_POL.shp