{"name": "OrIFSC", "package_name": "OrIFSC", "version": "0.1.18", "experimental": false, "qgis_min": "3.40.0", "qgis_max": "4.99.0", "downloads": 26, "uploaded_by": null, "upload_datetime": "2026-07-13T19:41:15.011366", "changelog": "0.1.18\n- Seguran\u00e7a: zerados todos os apontamentos do scanner Bandit do reposit\u00f3rio oficial, que bloqueava a publica\u00e7\u00e3o. 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\u00e1veis, blocos try/except best-effort, imports de XML) foram anotados como seguros, e os asserts de valida\u00e7\u00e3o de layout do OCD viraram checagem expl\u00edcita com raise (passam a rodar tamb\u00e9m em bytecode otimizado). Sem mudan\u00e7a de comportamento.\n0.1.16\n- Curvas de n\u00edvel: removida a op\u00e7\u00e3o \"Fonte do MDT\" que baixava o MDT de SC pelo WCS do SIG@SC \u2014 o servi\u00e7o n\u00e3o respondia de forma confi\u00e1vel. A gera\u00e7\u00e3o passa a usar apenas o Copernicus 30 m. O menu Dados P\u00fablicos \u2192 SIG@SC (camadas WMS/WMTS) continua dispon\u00edvel.\n- Corre\u00e7\u00e3o: o menu Dados P\u00fablicos \u2192 Santa Catarina quebrava ao abrir (TypeError no QMessageBox por receber a interface do QGIS em vez da janela principal).\n0.1.15\n- Simbologia oficial completa nos projetos exportados: o .omap e o .ocd podem sair com toda a paleta de s\u00edmbolos da norma \u2014 ISOM 2017-2 (floresta; variantes 1:15.000 e 1:10.000, esta com s\u00edmbolos ampliados em 150% como manda a norma) ou ISSprOM 2019-2 (sprint) \u2014 pronta para desenhar. Os symbol sets oficiais do OpenOrienteering Mapper (GPLv3) v\u00eam embutidos no plugin (recursos/simbologias, com proveni\u00eancia documentada); a op\u00e7\u00e3o \"Nenhuma (s\u00f3 o s\u00edmbolo de curva)\" mant\u00e9m o comportamento anterior. As paletas cobrem qualquer escala derivada (1:7.500, 1:5.000, 1:3.000...): os s\u00edmbolos t\u00eam dimens\u00e3o fixa em mm de papel e a escala real do projeto vai na georrefer\u00eancia.\n- Paleta sprint atualizada para a ISSprOM 2019-2 Revis\u00e3o 6 (IOF, jan/2024), \u00e0 frente do pr\u00f3prio OOM: nova cor \"Dark green\" (CMYK 100-0-80-30, conforme o documento oficial de cores da IOF), vegeta\u00e7\u00e3o intranspon\u00edvel renumerada 410\u2192411, novo 410 \"Vegetation: fight\" e novo s\u00edmbolo 533 \"Area with obstacles\" \u2014 tudo implementado a partir da especifica\u00e7\u00e3o aberta da IOF (mudan\u00e7as documentadas em recursos/simbologias/PROVENIENCIA.txt e reproduz\u00edveis via tools/atualizar_issprom_2019_2.py).\n- Curvas mestras autom\u00e1ticas: com simbologia selecionada, curvas cuja eleva\u00e7\u00e3o (campo ELEV) \u00e9 m\u00faltiplo de 5x a equidist\u00e2ncia (deduzida dos pr\u00f3prios dados) saem no s\u00edmbolo 102 (curva mestra); as demais no 101. Sem o campo ELEV, tudo sai como 101 com aviso no log.\n- Novo par\u00e2metro \"Simbologia\" no di\u00e1logo de exporta\u00e7\u00e3o, com padr\u00e3o sugerido pela escala do projeto (<= 1:5.000 sugere ISSprOM; demais, ISOM) e nova prefer\u00eancia global nas Configura\u00e7\u00f5es (\"Simbologia da exporta\u00e7\u00e3o\").\n- No .ocd a paleta vem de um arquivo doador OCD v10 derivado do symbol set do OOM; se o doador ainda n\u00e3o estiver presente no pacote, o .ocd sai como antes (aviso no log) e o .omap sai completo mesmo assim.\n- Licen\u00e7a do plugin alinhada para GPLv3: os escritores .ocd/.omap sempre foram portes do OpenOrienteering Mapper (GPLv3) e os symbol sets embutidos s\u00e3o GPLv3 \u2014 o LICENSE (antes GPLv2) agora reflete isso.\n- Qualidade: 20 novos testes automatizados (inje\u00e7\u00e3o da simbologia no .omap, doador .ocd, curvas mestras), 43 no total.\n- Curvas de n\u00edvel (Copernicus) muito mais r\u00e1pidas em folhas pequenas: o MDT agora \u00e9 recortado na janela da folha (mosaico virtual com outputBounds) antes do gdal:contour, e curvas totalmente fora da \u00e1rea de recorte s\u00e3o puladas antes da suaviza\u00e7\u00e3o (pr\u00e9-filtro com geometria preparada e folga de 2x a toler\u00e2ncia). Acaba o longo \"suavizando... (0 linhas gravadas)\"; o resultado dentro da folha \u00e9 id\u00eantico.\n- Corre\u00e7\u00e3o: o ISSprOM_2019_4000.omap embutido n\u00e3o abria no OpenOrienteering Mapper. A atualiza\u00e7\u00e3o para a ISSprOM 2019-2 havia inserido dois s\u00edmbolos novos no meio da lista sem renumerar os `id` dos demais \u2014 como o OOM referencia s\u00edmbolos combinados e objetos de exemplo por esse n\u00famero, a lista ficou desalinhada e o arquivo era rejeitado. Corrigido: os `id` s\u00e3o renumerados pela posi\u00e7\u00e3o final e todas as refer\u00eancias cruzadas s\u00e3o atualizadas junto (48 refer\u00eancias verificadas uma a uma).\n- Corre\u00e7\u00e3o: texto de ajuda de \"Recortar curvas por\" (Gerar Curvas de N\u00edvel) dizia \"deixe em branco para gerar sem recorte\" \u2014 o comportamento real sempre recortou pela pr\u00f3pria \u00e1rea a mapear quando o campo fica vazio. Texto corrigido para refletir o comportamento.\n0.1.11\n- Corre\u00e7\u00e3o importante nas curvas de n\u00edvel (fonte Copernicus): a simplifica\u00e7\u00e3o era aplicada com as curvas ainda em graus (EPSG:4326), o que equivalia a uma toler\u00e2ncia de ~22 km e deformava as curvas em \"tri\u00e2ngulos/ret\u00e2ngulos\". Agora as curvas s\u00e3o reprojetadas para o CRS UTM da folha ANTES da suaviza\u00e7\u00e3o, e a toler\u00e2ncia de 0,2 passa a valer 0,2 metro. A camada \"Curvas de N\u00edvel\" tamb\u00e9m passa a ser criada j\u00e1 em UTM.\n- 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 \u00fanico c\u00f3digo atende QGIS 3.40+ e QGIS 4.\n- Requisito m\u00ednimo atualizado para QGIS 3.40 LTR (vers\u00f5es anteriores n\u00e3o eram de fato suportadas: o c\u00f3digo j\u00e1 usava APIs do QGIS 3.38+).\n- Removida a op\u00e7\u00e3o FABDEM (\"em breve\") do menu Relevo e das Configura\u00e7\u00f5es.\n- Curvas de n\u00edvel muito mais r\u00e1pidas: suaviza\u00e7\u00e3o Chaikin vetorizada com NumPy (resultado id\u00eantico bit a bit, ~10-50x mais r\u00e1pido), recorte com geometria preparada (\u00edndice GEOS) e pr\u00e9-simplifica\u00e7\u00e3o de 0,05 mm na escala do papel antes da suaviza\u00e7\u00e3o (invis\u00edvel no mapa; essencial com o MDT de alta resolu\u00e7\u00e3o do SIG@SC). O log agora mostra um contador din\u00e2mico (\"suavizando: N/total curvas\") durante a etapa pesada.\n- Corre\u00e7\u00e3o de travamento (access violation) ao concluir a gera\u00e7\u00e3o de curvas: o sink de sa\u00edda agora \u00e9 liberado (flush + del) antes de o QGIS carregar a camada no projeto.\n- Exporta\u00e7\u00e3o do sat\u00e9lite muito mais leve (PCs lentos): o mosaico agora \u00e9 escrito por faixas direto no disco (streaming), eliminando a imagem gigante na RAM e o PNG intermedi\u00e1rio \u2014 pico de mem\u00f3ria cai de ~1,5 GB para menos de ~150 MB. Reproje\u00e7\u00e3o (GDAL Warp) multithread. O GeoTIFF final continua id\u00eantico: RGB, LZW, sem tiling \u2014 requisito do OCAD 10.\n- Cache persistente (perfil do QGIS, limite de 1 GB com poda autom\u00e1tica): tiles do MDT Copernicus e tiles do sat\u00e9lite ficam guardadas entre sess\u00f5es \u2014 re-exportar a mesma \u00e1rea fica muito mais r\u00e1pido. Tiles do Copernicus agora combinadas por mosaico virtual (VRT), sem reescrever o raster inteiro.\n- Toler\u00e2ncia de simplifica\u00e7\u00e3o das curvas agora acompanha a escala do projeto, derivada do menor objeto vis\u00edvel no papel (0,15 mm): 0,075 mm de papel por passada (duas passadas; desvio total < 0,15 mm, invis\u00edvel), entre 0,1 m e 1,5 m. Mapas 1:2.000 preservam mais detalhe; 1:15.000 ficam bem mais leves.\n- Arquivos tempor\u00e1rios com nome \u00fanico por execu\u00e7\u00e3o (sem colis\u00e3o entre execu\u00e7\u00f5es simult\u00e2neas).\n- SIG@SC: a consulta ao servi\u00e7o (GetCapabilities) agora roda em segundo plano (QgsTask) \u2014 o QGIS n\u00e3o congela mais no clique do menu enquanto o servidor, que \u00e9 lento, responde; a camada aparece quando o servi\u00e7o retornar.\n- Corre\u00e7\u00e3o de vazamento leve: as a\u00e7\u00f5es do menu agora s\u00e3o destru\u00eddas junto com o menu ao recarregar/desinstalar o plugin.\n- Qualidade: su\u00edte de testes automatizados (pytest, 23 testes) cobrindo o escritor bin\u00e1rio OCAD, o XML do OOM, os c\u00e1lculos UTM/converg\u00eancia e a suaviza\u00e7\u00e3o Chaikin (equival\u00eancia bit a bit com a implementa\u00e7\u00e3o original); roda em CI (GitHub Actions) a cada altera\u00e7\u00e3o.\n0.1.9\n- SIG@SC (Santa Catarina): as camadas passam a ser adicionadas pelo gerenciador WMS/WMTS nativo do QGIS (ass\u00edncrono \u2014 n\u00e3o trava mais o QGIS); ortofoto via WMTS e o CRS acompanha o projeto (reproje\u00e7\u00e3o on-the-fly). C\u00f3digo formatado (PEP8/flake8).\n- Curvas de n\u00edvel: nova op\u00e7\u00e3o \"Fonte do MDT\" \u2014 al\u00e9m do Copernicus 30 m (global, padr\u00e3o), d\u00e1 para usar o MDT de SC via WCS do SIG@SC (alta resolu\u00e7\u00e3o), gerando curvas bem melhores em Santa Catarina.\n- Qualidade/seguran\u00e7a (revis\u00e3o autom\u00e1tica do reposit\u00f3rio QGIS): auditado o uso de urlopen (apenas http/https s\u00e3o aceitos, marcado como seguro); removido o campo obsoleto supportsQt6 do metadata; removidos imports e uma vari\u00e1vel sem uso; permiss\u00f5es dos arquivos do pacote normalizadas. Sem mudan\u00e7a de funcionalidade.\n0.1.8\n- Assistente: o menu indica o progresso do fluxo (\u2713 etapa conclu\u00edda, \u25b6 pr\u00f3xima sugerida) sem travar nada; avisos amig\u00e1veis quando falta um pr\u00e9-requisito; o di\u00e1logo de exporta\u00e7\u00e3o j\u00e1 vem pr\u00e9-preenchido (folha, curvas e pasta de sa\u00edda) e mostra a escala do projeto.\n- Curvas de n\u00edvel: gera\u00e7\u00e3o mais robusta \u2014 a suaviza\u00e7\u00e3o passou a usar um algoritmo pr\u00f3prio (Chaikin) que n\u00e3o depende de algoritmos do QGIS que podiam travar/fechar o programa; sa\u00edda como camada limpa \"Curvas de N\u00edvel\"; recorte por folha/limite aplicado de forma controlada.\n- Sat\u00e9lite de fundo: download paralelo confi\u00e1vel (n\u00e3o trava nem prende o QGIS ao fechar), sempre no melhor zoom, com progresso vis\u00edvel (contador de tiles e porcentagem da reproje\u00e7\u00e3o), cancel\u00e1vel e com re-tentativas para a imagem sair completa.\n- Exporta\u00e7\u00e3o OCAD 10 / OpenOrienteering Mapper: projeto pronto com georrefer\u00eancia (UTM + escala + grade), declina\u00e7\u00e3o magn\u00e9tica (WMM/NOAA) com griva\u00e7\u00e3o correta, sat\u00e9lite como mapa de fundo e curvas como objetos de linha.\n- Importar KML/GPX e camadas de base (Sat\u00e9lite Google, OpenStreetMap, WMS/WMTS, SIG@SC).\n- Compat\u00edvel com QGIS 3.16+ e QGIS 4 (Qt5/Qt6).\n0.1.7.3\n- Qualidade: c\u00f3digo de reload de m\u00f3dulos movido para tr\u00e1s de vari\u00e1vel de ambiente ORIFSC_DEV \u2014 n\u00e3o roda mais em produ\u00e7\u00e3o, evitando comportamento imprevis\u00edvel com refer\u00eancias a classes recarregadas.\n- Qualidade: fun\u00e7\u00e3o _ocultar_da_toolbox centralizada em algorithms/utils.py, eliminando duplica\u00e7\u00e3o entre gerar_curvas.py e exportar_ocad.py.\n- Corre\u00e7\u00e3o: cache de tiles Copernicus agora valida o tamanho m\u00ednimo do arquivo (1 KB); arquivos corrompidos ou incompletos de downloads anteriores s\u00e3o detectados e re-baixados automaticamente.\n- Corre\u00e7\u00e3o: valida\u00e7\u00e3o de intervalo das coordenadas no di\u00e1logo \"Definir Local\" \u2014 latitude fora de [-90, 90] ou longitude fora de [-180, 180] exibe mensagem clara em vez de gerar um CRS inv\u00e1lido silenciosamente.\n0.1.7\n- Corre\u00e7\u00e3o: o sat\u00e9lite exportado n\u00e3o \u00e9 mais carregado automaticamente no QGIS (evita o QGIS travar/ficar preso na mem\u00f3ria ao fechar com imagens grandes); o .tif fica salvo na pasta de sa\u00edda para abrir manualmente e \u00e9 usado pelo OCAD. Os datasets GDAL da gera\u00e7\u00e3o s\u00e3o fechados explicitamente (sem handle preso no arquivo).\n- Corre\u00e7\u00e3o: download das tiles do sat\u00e9lite passa a ser ass\u00edncrono numa thread s\u00f3 (via QgsNetworkAccessManager), em vez de um pool de threads. As threads do pool criavam gerenciadores de rede do QGIS que ficavam \u00f3rf\u00e3os e travavam o QGIS ao fechar. O GeoTIFF do sat\u00e9lite segue em LZW (necess\u00e1rio: sem compress\u00e3o o arquivo passa de ~290 MB e o OCAD 10 falha ao ler).\n- Corre\u00e7\u00e3o: o GeoTIFF do sat\u00e9lite 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\u00e7\u00e3o agora ficam brancos.\n- Exporta\u00e7\u00e3o OCAD: o .ocd passa a ser gravado no formato OCD v10 (antes v9), abrindo direto no OCAD 10+ sem o pedido de convers\u00e3o. A pasta de sa\u00edda agora \u00e9 obrigat\u00f3ria e n\u00e3o pode ser um diret\u00f3rio tempor\u00e1rio (o sat\u00e9lite .tif precisa ficar junto dos projetos).\n- Exporta\u00e7\u00e3o: novo seletor \"Formato(s) a gerar\" (OCAD .ocd / OpenOrienteering Mapper .omap / ambos), com \"OCAD (.ocd)\" como padr\u00e3o \u2014 antes os dois arquivos eram sempre gerados. O campo de declina\u00e7\u00e3o manual agora deixa claro que s\u00f3 \u00e9 usado se o autom\u00e1tico estiver desmarcado ou falhar.\n- 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\u00e1logos usam exec() em vez de exec_(). As mudan\u00e7as continuam funcionando no QGIS 3.16+ (PyQt5). metadata: supportsQt6=True e qgisMaximumVersion=4.99.", "external_deps": null, "download_url": "https://plugins.qgis.org/plugins/OrIFSC/version/0.1.18/download/"}