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.
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...)
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:
- Listar todos as Subpastas e Arquivos de um diretório raiz;
- Para cada Subpasta encontrada, entra-se nela, e repetir o procedimento de listar Arquivos), retornando para a pasta anterior ao final
- Fazia isso de modo em loop, utilizando uma função recursiva.
- A cada iteração, todas as URLs apresentadas eram colecionadas em um tabela .csv.
Uma vez com todos os links, foi realizado o download usando o JDownloder, com arquivo scripts/03_download_list_files.ipynb
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:
- Listar todos as Subpastas (que represetam os municípios) de um diretório raiz;
- Usando os conceitos de ActionChains, passar o mouse sobre a pasta e clicar nela.
- Clicar no botão "Fazer Download".
Após isso, com uso do scripts/02_adjust_data.ipynb, foram feitos os seguintes procedimentos:
- Listar todos os arquivos shapefile (.shp) que estão dentro dos arquivos .tar, sem descompactar!
- Criar uma tabela com essa lista de arquivos.
- Ajustar essa tabela, agregando diversas informações para re-criar os caminhos para o arquivo.
- 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
- Listar os arquivos fake shapefile e ajusta-los, para que direcionem ao arquivo dentro do .tar
- Testar e leitura dos arquivos pelo geopandas, conectar e salvar... para cada feição.
Definir funções de fazer o download dos arquivos, a partir da lista.Realizar o agendamento para obter a lista.Ajustar a pasta de download. Atualmente vai para a pasta padrão. Movi manualmente!- Ajustar os tipos de arquivos (Pontos, Polylines, Polygons), visto que na lista de arquivos surgiu uma feição curiosa:
- RIOS_DUPLOS.shp
- RIOSDUPLOS.shp
- RIOS_DUPLOS_POL.shp