Algoritmos de Dados (download de rede)¶
Esta página documenta os 2 algoritmos de processamento do grupo Dados
(logis:load_osm_network e logis:load_snv_network), que baixam e pré-processam as
redes viárias que todos os demais grupos de algoritmos consomem: a rede urbana OSM
(indicadores urbanos, coleta de lixo) e a malha federal SNV/DNIT (indicadores
regionais).
São o caminho scriptável do painel logis — Rede Viária, que orquestra os mesmos dois algoritmos por trás dos botões Baixar arcos e nós (OSM) e Baixar arcos e nós (SNV). Para o uso pelo painel, consulte o Guia da Rede Viária; aqui o foco é a referência técnica de parâmetros, saídas, cache e complexidade.
Sumário dos Algoritmos¶
logis:load_osm_network— Baixar Rede Viária Urbana (OSM, Município)logis:load_snv_network— Baixar Rede Viária Federal (SNV/DNIT, UF)
1. Baixar Rede Viária Urbana (OSM, Município) (logis:load_osm_network)¶
O que faz¶
Baixa e processa a rede viária urbana de um município brasileiro a partir dos dados do
OpenStreetMap, via Overpass API (core.network.osm_pipeline.build_osm_municipal_network()):
- resolve o polígono do município (
gisbr:read_municipalityquando o GisBR está instalado; senão, download direto do GeoPackage municipal do geobr); - consulta a Overpass API pelo bbox do polígono resolvido;
- monta a camada de trechos com os atributos de custo (
length,speed,travel_time) a partir das tags OSM; - recorta a camada de trechos pelo polígono do município (
native:clip); - deduplica os nós de extremidade dos trechos recortados.
Se o código IBGE não tiver exatamente 7 dígitos, o algoritmo falha antes de qualquer
requisição de rede com a mensagem "Código IBGE do município deve possuir exatamente 7
dígitos.". Se o polígono do município não puder ser resolvido, ou se a Overpass não
devolver nenhum trecho com tag highway dentro do bbox, o algoritmo lança
QgsProcessingException com a mensagem de erro do pipeline.
Parâmetros de Entrada¶
| Identificador | Nome na UI | Tipo QGIS | Descrição | Valor Default |
|---|---|---|---|---|
INPUT_CODE_MUNI |
Código IBGE do município (7 dígitos) | QgsProcessingParameterString |
Código IBGE numérico de 7 dígitos do município. Validado no início da execução. | Obrigatório |
INPUT_NOME_MUNI |
Nome do município (opcional) | QgsProcessingParameterString |
Nome do município, repassado ao pipeline para auxiliar na identificação/log. | "" (Opcional) |
FORCE |
Forçar novo download (ignorar cache) | QgsProcessingParameterBoolean |
Se verdadeiro, ignora o cache local e faz nova requisição Overpass. | False |
Saídas e Resultados Gerados¶
| Identificador | Nome na UI | Tipo | Descrição |
|---|---|---|---|
OUTPUT_LINKS |
Arcos (rede viária) | QgsProcessingParameterFeatureSink (Linhas) |
Trechos de vias recortados pelo polígono do município, com os campos way_id, highway, name, oneway, length, speed, travel_time. |
OUTPUT_NODES |
Nós (rede viária) | QgsProcessingParameterFeatureSink (Pontos) |
Interseções e extremidades dos arcos, deduplicadas. |
Cache¶
- GeoPackage persistente:
<cache>/osm_<código>.gpkg, com as camadasosm_linkseosm_nodes. - Resposta bruta da Overpass:
<cache>/osm_overpass_<código>.json. <cache>édownloader.cache_dir(), isto é,QStandardPaths.CacheLocation→.../logis/.- Com
FORCE=False, se o arquivo de cache da Overpass já existir, ele é reutilizado e nenhuma nova consulta é feita. ComFORCE=True, a consulta Overpass é refeita e o cache é sobrescrito.
Limite de complexidade¶
Complexidade de Tempo: O(V + E) para construção e filtragem do grafo OSM. Complexidade de Espaço: O(V + E) para armazenamento de nós (V) e arcos (E). Testado com redes municipais de até 100.000 arcos e nós.
Referência Bibliográfica da Técnica¶
- OpenStreetMap contributors (2024). Planet dump [Data file from Overpass API].
- Haklay, M., & Weber, P. (2008). OpenStreetMap: User-generated street maps. IEEE Pervasive Computing, 7(4), 12-18.
2. Baixar Rede Viária Federal (SNV/DNIT, UF) (logis:load_snv_network)¶
O que faz¶
Baixa e processa a rede viária federal de uma UF a partir do SNV/DNIT
(core.network.snv_pipeline.build_snv_state_network()):
- consulta o WFS da fonte declarativa
dnit_snv(vintagesnv_202507a, na INDE) com filtro CQLsg_uf = '<UF>'; - monta a camada de trechos com os atributos de custo (
length,speed,travel_time), derivados da superfície física (ds_superfi); - extrai e deduplica os nós de extremidade dos trechos.
Se a sigla informada não constar em logis/core/ufs.py, o algoritmo falha antes de
qualquer requisição de rede com a mensagem "UF inválida: \<UF>". Se o WFS não
devolver dados válidos para a UF, o algoritmo lança QgsProcessingException com a
mensagem de erro do pipeline (por padrão, "O SNV não devolveu dados para a UF
\<UF>.").
Parâmetros de Entrada¶
| Identificador | Nome na UI | Tipo QGIS | Descrição | Valor Default |
|---|---|---|---|---|
INPUT_UF |
Sigla da UF (2 letras) | QgsProcessingParameterString |
Sigla de 2 letras da UF (ex.: MG, SP, RJ), validada contra logis/core/ufs.py. |
Obrigatório |
FORCE |
Forçar novo download (ignorar cache) | QgsProcessingParameterBoolean |
Se verdadeiro, ignora o cache local (GeoPackage e GeoJSON) e faz nova requisição WFS. | False |
Saídas e Resultados Gerados¶
| Identificador | Nome na UI | Tipo | Descrição |
|---|---|---|---|
OUTPUT_LINKS |
Arcos (rede viária) | QgsProcessingParameterFeatureSink (Linhas) |
Trechos de rodovias federais/estaduais da UF, com os campos id_trecho, vl_codigo, vl_br, sg_uf, ds_superfi, ds_jurisdi, oneway, length, speed, travel_time. |
OUTPUT_NODES |
Nós (rede viária) | QgsProcessingParameterFeatureSink (Pontos) |
Interseções e extremidades dos arcos, deduplicadas. |
Cache¶
- GeoPackage persistente:
<cache>/snv_<UF>.gpkg, com as camadassnv_links_<UF>esnv_nodes_<UF>. - Resposta bruta do WFS:
<cache>/snv_<UF>.geojson. <cache>édownloader.cache_dir(), isto é,QStandardPaths.CacheLocation→.../logis/.- Com
FORCE=False, se o GeoPackage já contiver as duas camadas, elas são devolvidas sem nova consulta ao WFS ("cached": Trueno metadado do pipeline). Sem o GeoPackage completo, o pipeline tenta o GeoJSON bruto em cache antes de consultar o WFS de novo. ComFORCE=True, ambos os caches são ignorados e a consulta WFS é refeita.
Limite de complexidade¶
Complexidade de Tempo: O(N) onde N é o número de trechos de rodovias na UF. Complexidade de Espaço: O(N) para armazenamento de links e nós. Testado com malhas regionais de UFs de grande porte.
Referência Bibliográfica da Técnica¶
- DNIT (Departamento Nacional de Infraestrutura de Transportes). (2025). Sistema Rodoviário Nacional (SRN/SNV) - Especificações Técnicas. Brasília: DNIT.
Exemplos de Uso via Console Python (processing.run)¶
Exemplo 1: Baixar a Rede Viária Urbana OSM de um Município¶
import processing
resultado = processing.run("logis:load_osm_network", {
'INPUT_CODE_MUNI': '3166600',
'INPUT_NOME_MUNI': 'Serra da Saudade',
'FORCE': False,
'OUTPUT_LINKS': 'TEMPORARY_OUTPUT',
'OUTPUT_NODES': 'TEMPORARY_OUTPUT'
})
camada_arcos = resultado['OUTPUT_LINKS']
Exemplo 2: Baixar a Malha Rodoviária Federal SNV/DNIT de uma UF¶
import processing
resultado = processing.run("logis:load_snv_network", {
'INPUT_UF': 'MG',
'FORCE': False,
'OUTPUT_LINKS': 'TEMPORARY_OUTPUT',
'OUTPUT_NODES': 'TEMPORARY_OUTPUT'
})
camada_arcos = resultado['OUTPUT_LINKS']
As camadas de saída são entregues em EPSG:4674 (SIRGAS 2000), na mesma convenção de CRS descrita em Algoritmos de Processamento.