0.1.18
- Segurança: zerados todos os apontamentos do scanner Bandit do
repositório oficial, que bloqueava a publicação. O parse de XML remoto
do SIG@SC passa a recusar DOCTYPE/ENTITY antes de interpretar
(bloqueia XXE e "billion laughs"); os demais apontamentos (parse de
arquivos embutidos confiáveis, blocos try/except best-effort, imports
de XML) foram anotados como seguros, e os asserts de validação de
layout do OCD viraram checagem explícita com raise (passam a rodar
também em bytecode otimizado). Sem mudança de comportamento.
0.1.16
- Curvas de nível: removida a opção "Fonte do MDT" que baixava o MDT
de SC pelo WCS do SIG@SC — o serviço não respondia de forma confiável.
A geração passa a usar apenas o Copernicus 30 m. O menu Dados Públicos
→ SIG@SC (camadas WMS/WMTS) continua disponível.
- Correção: o menu Dados Públicos → Santa Catarina quebrava ao abrir
(TypeError no QMessageBox por receber a interface do QGIS em vez da
janela principal).
0.1.15
- Simbologia oficial completa nos projetos exportados: o .omap e o
.ocd podem sair com toda a paleta de símbolos da norma — ISOM 2017-2
(floresta; variantes 1:15.000 e 1:10.000, esta com símbolos ampliados
em 150% como manda a norma) ou ISSprOM 2019-2 (sprint) — pronta para
desenhar. Os symbol sets oficiais do OpenOrienteering Mapper (GPLv3)
vêm embutidos no plugin (recursos/simbologias, com proveniência
documentada); a opção "Nenhuma (só o símbolo de curva)" mantém o
comportamento anterior. As paletas cobrem qualquer escala derivada
(1:7.500, 1:5.000, 1:3.000...): os símbolos têm dimensão fixa em mm de
papel e a escala real do projeto vai na georreferência.
- Paleta sprint atualizada para a ISSprOM 2019-2 Revisão 6 (IOF,
jan/2024), à frente do próprio OOM: nova cor "Dark green" (CMYK
100-0-80-30, conforme o documento oficial de cores da IOF), vegetação
intransponível renumerada 410→411, novo 410 "Vegetation: fight" e novo
símbolo 533 "Area with obstacles" — tudo implementado a partir da
especificação aberta da IOF (mudanças documentadas em
recursos/simbologias/PROVENIENCIA.txt e reproduzíveis via
tools/atualizar_issprom_2019_2.py).
- Curvas mestras automáticas: com simbologia selecionada, curvas cuja
elevação (campo ELEV) é múltiplo de 5x a equidistância (deduzida dos
próprios dados) saem no símbolo 102 (curva mestra); as demais no 101.
Sem o campo ELEV, tudo sai como 101 com aviso no log.
- Novo parâmetro "Simbologia" no diálogo de exportação, com padrão
sugerido pela escala do projeto (<= 1:5.000 sugere ISSprOM; demais,
ISOM) e nova preferência global nas Configurações ("Simbologia da
exportação").
- No .ocd a paleta vem de um arquivo doador OCD v10 derivado do symbol
set do OOM; se o doador ainda não estiver presente no pacote, o .ocd
sai como antes (aviso no log) e o .omap sai completo mesmo assim.
- Licença do plugin alinhada para GPLv3: os escritores .ocd/.omap
sempre foram portes do OpenOrienteering Mapper (GPLv3) e os symbol
sets embutidos são GPLv3 — o LICENSE (antes GPLv2) agora reflete isso.
- Qualidade: 20 novos testes automatizados (injeção da simbologia no
.omap, doador .ocd, curvas mestras), 43 no total.
- Curvas de nível (Copernicus) muito mais rápidas em folhas pequenas:
o MDT agora é recortado na janela da folha (mosaico virtual com
outputBounds) antes do gdal:contour, e curvas totalmente fora da área
de recorte são puladas antes da suavização (pré-filtro com geometria
preparada e folga de 2x a tolerância). Acaba o longo "suavizando... (0
linhas gravadas)"; o resultado dentro da folha é idêntico.
- Correção: o ISSprOM_2019_4000.omap embutido não abria no
OpenOrienteering Mapper. A atualização para a ISSprOM 2019-2 havia
inserido dois símbolos novos no meio da lista sem renumerar os `id`
dos demais — como o OOM referencia símbolos combinados e objetos de
exemplo por esse número, a lista ficou desalinhada e o arquivo era
rejeitado. Corrigido: os `id` são renumerados pela posição final e
todas as referências cruzadas são atualizadas junto (48 referências
verificadas uma a uma).
- Correção: texto de ajuda de "Recortar curvas por" (Gerar Curvas de
Nível) dizia "deixe em branco para gerar sem recorte" — o
comportamento real sempre recortou pela própria área a mapear quando o
campo fica vazio. Texto corrigido para refletir o comportamento.
0.1.11
- Correção importante nas curvas de nível (fonte Copernicus): a
simplificação era aplicada com as curvas ainda em graus (EPSG:4326), o
que equivalia a uma tolerância de ~22 km e deformava as curvas em
"triângulos/retângulos". Agora as curvas são reprojetadas para o CRS
UTM da folha ANTES da suavização, e a tolerância de 0,2 passa a valer
0,2 metro. A camada "Curvas de Nível" também passa a ser criada já em
UTM.
- QGIS 4 (Qt6/PyQt6): todos os enums restantes migraram para a forma
escopada (QMessageBox.Icon/ButtonRole/StandardButton,
Qgis.MessageLevel, QgsBlockingNetworkRequest.ErrorCode,
Qgis.ProcessingSourceType, Qgis.ProcessingNumberParameterType,
Qgis.WkbType, QgsFeatureSink.Flag, Qgis.ProcessingAlgorithmFlag). Um
único código atende QGIS 3.40+ e QGIS 4.
- Requisito mínimo atualizado para QGIS 3.40 LTR (versões anteriores
não eram de fato suportadas: o código já usava APIs do QGIS 3.38+).
- Removida a opção FABDEM ("em breve") do menu Relevo e das
Configurações.
- Curvas de nível muito mais rápidas: suavização Chaikin vetorizada
com NumPy (resultado idêntico bit a bit, ~10-50x mais rápido), recorte
com geometria preparada (índice GEOS) e pré-simplificação de 0,05 mm
na escala do papel antes da suavização (invisível no mapa; essencial
com o MDT de alta resolução do SIG@SC). O log agora mostra um contador
dinâmico ("suavizando: N/total curvas") durante a etapa pesada.
- Correção de travamento (access violation) ao concluir a geração de
curvas: o sink de saída agora é liberado (flush + del) antes de o QGIS
carregar a camada no projeto.
- Exportação do satélite muito mais leve (PCs lentos): o mosaico agora
é escrito por faixas direto no disco (streaming), eliminando a imagem
gigante na RAM e o PNG intermediário — pico de memória cai de ~1,5 GB
para menos de ~150 MB. Reprojeção (GDAL Warp) multithread. O GeoTIFF
final continua idêntico: RGB, LZW, sem tiling — requisito do OCAD 10.
- Cache persistente (perfil do QGIS, limite de 1 GB com poda
automática): tiles do MDT Copernicus e tiles do satélite ficam
guardadas entre sessões — re-exportar a mesma área fica muito mais
rápido. Tiles do Copernicus agora combinadas por mosaico virtual
(VRT), sem reescrever o raster inteiro.
- Tolerância de simplificação das curvas agora acompanha a escala do
projeto, derivada do menor objeto visível no papel (0,15 mm): 0,075 mm
de papel por passada (duas passadas; desvio total < 0,15 mm,
invisível), entre 0,1 m e 1,5 m. Mapas 1:2.000 preservam mais detalhe;
1:15.000 ficam bem mais leves.
- Arquivos temporários com nome único por execução (sem colisão entre
execuções simultâneas).
- SIG@SC: a consulta ao serviço (GetCapabilities) agora roda em
segundo plano (QgsTask) — o QGIS não congela mais no clique do menu
enquanto o servidor, que é lento, responde; a camada aparece quando o
serviço retornar.
- Correção de vazamento leve: as ações do menu agora são destruídas
junto com o menu ao recarregar/desinstalar o plugin.
- Qualidade: suíte de testes automatizados (pytest, 23 testes)
cobrindo o escritor binário OCAD, o XML do OOM, os cálculos
UTM/convergência e a suavização Chaikin (equivalência bit a bit com a
implementação original); roda em CI (GitHub Actions) a cada alteração.
0.1.9
- SIG@SC (Santa Catarina): as camadas passam a ser adicionadas pelo
gerenciador WMS/WMTS nativo do QGIS (assíncrono — não trava mais o
QGIS); ortofoto via WMTS e o CRS acompanha o projeto (reprojeção
on-the-fly). Código formatado (PEP8/flake8).
- Curvas de nível: nova opção "Fonte do MDT" — além do Copernicus 30 m
(global, padrão), dá para usar o MDT de SC via WCS do SIG@SC (alta
resolução), gerando curvas bem melhores em Santa Catarina.
- Qualidade/segurança (revisão automática do repositório QGIS):
auditado o uso de urlopen (apenas http/https são aceitos, marcado como
seguro); removido o campo obsoleto supportsQt6 do metadata; removidos
imports e uma variável sem uso; permissões dos arquivos do pacote
normalizadas. Sem mudança de funcionalidade.
0.1.8
- Assistente: o menu indica o progresso do fluxo (✓ etapa concluída, ▶
próxima sugerida) sem travar nada; avisos amigáveis quando falta um
pré-requisito; o diálogo de exportação já vem pré-preenchido (folha,
curvas e pasta de saída) e mostra a escala do projeto.
- Curvas de nível: geração mais robusta — a suavização passou a usar
um algoritmo próprio (Chaikin) que não depende de algoritmos do QGIS
que podiam travar/fechar o programa; saída como camada limpa "Curvas
de Nível"; recorte por folha/limite aplicado de forma controlada.
- Satélite de fundo: download paralelo confiável (não trava nem prende
o QGIS ao fechar), sempre no melhor zoom, com progresso visível
(contador de tiles e porcentagem da reprojeção), cancelável e com
re-tentativas para a imagem sair completa.
- Exportação OCAD 10 / OpenOrienteering Mapper: projeto pronto com
georreferência (UTM + escala + grade), declinação magnética (WMM/NOAA)
com grivação correta, satélite como mapa de fundo e curvas como
objetos de linha.
- Importar KML/GPX e camadas de base (Satélite Google, OpenStreetMap,
WMS/WMTS, SIG@SC).
- Compatível com QGIS 3.16+ e QGIS 4 (Qt5/Qt6).
0.1.7.3
- Qualidade: código de reload de módulos movido para trás de variável
de ambiente ORIFSC_DEV — não roda mais em produção, evitando
comportamento imprevisível com referências a classes recarregadas.
- Qualidade: função _ocultar_da_toolbox centralizada em
algorithms/utils.py, eliminando duplicação entre gerar_curvas.py e
exportar_ocad.py.
- Correção: cache de tiles Copernicus agora valida o tamanho mínimo do
arquivo (1 KB); arquivos corrompidos ou incompletos de downloads
anteriores são detectados e re-baixados automaticamente.
- Correção: validação de intervalo das coordenadas no diálogo "Definir
Local" — latitude fora de [-90, 90] ou longitude fora de [-180, 180]
exibe mensagem clara em vez de gerar um CRS inválido silenciosamente.
0.1.7
- Correção: o satélite exportado não é mais carregado automaticamente
no QGIS (evita o QGIS travar/ficar preso na memória ao fechar com
imagens grandes); o .tif fica salvo na pasta de saída para abrir
manualmente e é usado pelo OCAD. Os datasets GDAL da geração são
fechados explicitamente (sem handle preso no arquivo).
- Correção: download das tiles do satélite passa a ser assíncrono numa
thread só (via QgsNetworkAccessManager), em vez de um pool de threads.
As threads do pool criavam gerenciadores de rede do QGIS que ficavam
órfãos e travavam o QGIS ao fechar. O GeoTIFF do satélite segue em LZW
(necessário: sem compressão o arquivo passa de ~290 MB e o OCAD 10
falha ao ler).
- Correção: o GeoTIFF do satélite voltou a sair com 3 bandas RGB (sem
canal alpha). O alpha gerava um TIFF de 4 bandas que o OCAD lia como
falsa-cor/infravermelho (OCAD 2020) ou nem abria (OCAD 10); os cantos
vazios da rotação agora ficam brancos.
- Exportação OCAD: o .ocd passa a ser gravado no formato OCD v10
(antes v9), abrindo direto no OCAD 10+ sem o pedido de conversão. A
pasta de saída agora é obrigatória e não pode ser um diretório
temporário (o satélite .tif precisa ficar junto dos projetos).
- Exportação: novo seletor "Formato(s) a gerar" (OCAD .ocd /
OpenOrienteering Mapper .omap / ambos), com "OCAD (.ocd)" como padrão
— antes os dois arquivos eram sempre gerados. O campo de declinação
manual agora deixa claro que só é usado se o automático estiver
desmarcado ou falhar.
- Compatibilidade com QGIS 4 (Qt6/PyQt6): enums de classes Qt agora
usam a forma escopada (QImage.Format.Format_RGB888,
Qt.PenStyle.DashLine, Qt.BrushStyle.NoBrush,
QDialogButtonBox.StandardButton.*, QXmlStreamReader.TokenType.*) e os
diálogos usam exec() em vez de exec_(). As mudanças continuam
funcionando no QGIS 3.16+ (PyQt5). metadata: supportsQt6=True e
qgisMaximumVersion=4.99.
yes
Token
2026-07-14T00:41:15.011366+00:00
3.40.0
4.99.0
None
no
Plugin Tags