# PE3D-Downloader

Plugin para QGIS que localiza e baixa produtos do programa Pernambuco 3D (PE3D) a partir de uma área de interesse. O plugin trabalha com MDE, MDT e ortofotos da escala 1:5000 e pode gerar um GeoTIFF recortado para análise ou VRTs de rascunho separados por SRC.

## Recursos

- Seleção da área de interesse pela extensão do mapa, extensão de uma camada ou retângulo desenhado.
- Download de MDE, MDT e ORTOFOTO.
- Processamento produto por produto e em ordem geográfica contínua.
- Duas barras de progresso: progresso total e progresso do produto/fase atual.
- Downloads em segundo plano usando o gerenciador de tarefas do QGIS, com 1 a 5 arquivos simultâneos por produto.
- Estimativa do volume total de cada produto a partir do tamanho das primeiras quadrículas concluídas.
- Até três tentativas após falhas de conexão.
- Retomada de arquivos `.part` quando o servidor oferece suporte a HTTP Range.
- Cache validado por URL, tamanho, data de modificação e SHA-256.
- Extração segura, com limites de tamanho, quantidade de arquivos e taxa de compressão.
- Reutilização de extrações previamente validadas.
- Reprojeção para SIRGAS 2000 geográfico (EPSG:4674) no modo GeoTIFF, inclusive quando a AOI atravessa fusos UTM.
- Resolução nominal selecionável (1, 2, 5, 10 ou 20 m), sem baixar novamente arquivos já validados no cache.
- GeoTIFF otimizado com recorte pela AOI, compressão, blocos e pirâmides internas.
- VRTs leves de rascunho, sem reprojeção e sem recorte, separados pelo SRC original das quadrículas.
- Máscara alfa nas ortofotos para ignorar bordas pretas e aproveitar corretamente as áreas sobrepostas.
- Opção de processar e carregar arquivos concluídos após cancelamento ou falha definitiva.
- Preservação das camadas que já estão abertas no projeto QGIS.

## Requisitos

- QGIS 3.16 ou superior, até a série 3.x.
- Acesso à internet para os downloads.
- Espaço em disco suficiente para armazenar os ZIPs e os TIFFs extraídos.

As bibliotecas QGIS, GDAL e PyQt utilizadas pelo plugin já fazem parte de uma instalação normal do QGIS. A biblioteca `requests` também precisa estar disponível no ambiente Python do QGIS.


## Guia de uso

### 1. Definir a área de interesse

Escolha uma das opções em **Fonte da área**:

- **Extensão da tela:** usa a extensão atualmente visível no mapa.
- **Extensão de camada:** usa o retângulo envolvente da camada selecionada.
- **Desenhar retângulo:** clique no botão correspondente e arraste o mouse sobre o mapa.

O SRC e as coordenadas da área escolhida são apresentados no campo de informações da AOI.

> A opção "Extensão de camada" usa a extensão retangular da camada, e não o contorno individual de suas feições.

### 2. Escolher a pasta de saída

Em **Saída**, escolha uma pasta com espaço disponível. Essa localização será lembrada nas próximas execuções.

### 3. Selecionar os produtos

Marque um ou mais produtos:

- **MDE:** Modelo Digital de Elevação.
- **MDT:** Modelo Digital do Terreno.
- **ORTOFOTO:** imagens ortorretificadas.

Somente os campos da grade correspondentes aos produtos selecionados são validados.

### 4. Definir desempenho e resolução

Em **Downloads simultâneos**, escolha entre 1 e 5 transferências. O padrão é 3. Valores maiores podem acelerar o conjunto quando a rede e o servidor permitem, mas também aumentam o uso da conexão, do disco e a carga no servidor. O plugin pede confirmação quando são selecionadas 4 ou 5 transferências.

Em **Resolução nominal da saída**, escolha:

- **1 m:** resolução original, indicada para análise detalhada;
- **2 ou 5 m:** visualização e trabalho intermediário mais leves;
- **10 ou 20 m:** pré-visualização rápida de áreas extensas.

A resolução altera os intermediários gerados e o raster de saída, mas não modifica os ZIPs e TIFFs originais. Portanto, é possível executar novamente com 1 m sem repetir downloads e extrações já validados.

Em **Formato de saída**, escolha:

- **GeoTIFF otimizado (recomendado):** materializa o resultado uma vez, usa blocos, compressão e pirâmides internas e oferece renderização muito mais rápida no QGIS;
- **VRT de rascunho:** cria rapidamente um mosaico direto das quadrículas para cada SRC encontrado. Não reprojeta e não recorta pela AOI; por isso, quando as quadrículas abrangem dois fusos, duas camadas VRT são criadas e carregadas.

A resolução escolhida é aplicada ao resultado de ambos os modos. Os dados originais do cache não são modificados.

### 5. Executar

Clique em **Executar**. O plugin identifica as quadrículas que intersectam a AOI e processa os produtos na ordem MDE, MDT e ORTOFOTO, considerando somente os itens marcados.

Para cada produto, as fases iniciais são:

1. baixar as quadrículas com a quantidade de transferências escolhida, mantendo a fila de cima para baixo e, em cada linha, da esquerda para a direita;
2. validar e extrair os arquivos;
3. processar o formato escolhido;
4. carregar o resultado no projeto.

No modo **GeoTIFF otimizado**, o plugin reprojeta as fontes para EPSG:4674 na resolução selecionada, monta o mosaico, recorta pela AOI, materializa o GeoTIFF e cria pirâmides internas.

No modo **VRT de rascunho**, o plugin agrupa os TIFFs pelo SRC original e cria um mosaico VRT direto para cada grupo, na resolução selecionada. Nenhuma reprojeção ou recorte é realizado, portanto o VRT cobre as quadrículas inteiras selecionadas.

A barra superior representa o progresso total. A barra inferior e o texto de estado mostram o produto e a fase atuais. Depois que a primeira quadrícula termina, o estado também apresenta o volume já transferido e uma estimativa do total; a estimativa é refinada conforme outras quadrículas são concluídas.

## Cancelamento e falhas de internet

Ao clicar em **Cancelar**, o download atual é interrompido de forma controlada. Se houver ZIPs completos, o plugin pergunta se eles devem ser extraídos e carregados.

Quando a conexão cai:

1. o arquivo parcial é preservado com extensão `.part`;
2. o plugin faz até três tentativas com intervalos progressivos;
3. quando possível, o download continua a partir do ponto interrompido;
4. se a conexão não retornar, o plugin oferece processar os arquivos completos disponíveis.

Em uma execução futura, arquivos parciais poderão ser retomados e caches válidos serão reutilizados.

## Arquivos gerados

A pasta de saída contém subpastas por produto:

```text
MDE/
MDT/
ORTOFOTO/
```

Cada subpasta armazena os ZIPs, metadados de validação e diretórios `fid_<n>` com os TIFFs extraídos.

Os resultados recebem um identificador único por execução, por exemplo:

```text
PE3D_MDE_1m_20260803_023000_123_EPSG_31984.vrt
PE3D_MDE_1m_20260803_023000_123_EPSG_31985.vrt
PE3D_MDT_5m_20260803_023000_123_EPSG_31985.vrt
PE3D_ORTOFOTO_10m_20260803_023000_123.tif
```

Os VRTs de rascunho referenciam diretamente os TIFFs extraídos nas subpastas dos produtos. Esses TIFFs não devem ser movidos ou apagados enquanto os VRTs estiverem em uso. No modo GeoTIFF, os intermediários são removidos depois que o arquivo final é validado.

## Suporte e desenvolvimento

- Autor: [Evanderson H. Aguiar](https://plugins.qgis.org/plugins/author/Evanderson%2520H.%2520Aguiar/)
- Mantenedor: [evanderson](https://plugins.qgis.org/plugins/user/evanderson/admin)
- Página e código-fonte: [GitHub](https://github.com/Evanderson-Aguiar/PE3D-Downloader)
- Problemas e sugestões: [GitHub Issues](https://github.com/Evanderson-Aguiar/PE3D-Downloader/issues)

Ao relatar um problema, informe a versão do QGIS, o produto selecionado, o SRC do projeto e as mensagens exibidas no log.

## Licença

Este projeto é distribuído sob a GNU General Public License, versão 2, de junho de 1991. Consulte o arquivo [LICENSE](LICENSE).
