OSMnx Routing & Isochrones
QGIS 3.34+ (testado)OSMnx 2.xInterface PT-BR · EN · ESGPL-2.0

Rotas e isócronas do OpenStreetMap, dentro do QGIS

Baixe uma vez a rede viária de um lugar, salve-a num GeoPackage e calcule rotas que respeitam a mão das ruas e as áreas alcançáveis num dado tempo — no seu computador, sem serviço de roteamento nem chave de API. Os resultados são estimativas baseadas nos dados do OpenStreetMap de cada lugar.

⬇ Instalar o plugin ★ Código no GitHub
Mapa de João Pessoa (PB) com isócronas de carro de 2, 4, 6 e 8 minutos, do verde (perto) ao vermelho (longe)

Visão geral

O que o plugin faz

Quatro algoritmos de Processamento e duas ferramentas interativas no mapa, construídos sobre o OSMnx (download e manipulação do grafo) e o NetworkX (menores caminhos).

Antes de começar. Para baixar uma rede é preciso conexão com a internet: o lugar é localizado pelo Nominatim e as ruas vêm do Overpass, dois serviços do OpenStreetMap. Depois que o GeoPackage está salvo no computador, rotas e isócronas rodam localmente. Os resultados dependem da cobertura e dos atributos disponíveis no OpenStreetMap, que variam de um lugar para outro.
🗺️

Sua própria rede

Transforma o nome de um lugar num GeoPackage com nós, trechos de rua, arcos dirigidos e o limite do lugar.

↪️

Mão e contramão

As rotas de carro seguem o sentido de circulação registrado no OSM. Um modo de comparação mostra onde um grafo não dirigido andaria na contramão.

⏱️

Isócronas

Áreas estimadas como alcançáveis em 5, 10, 15… minutos saindo dos pontos ou chegando a eles, com o tempo de chegada em cada rua alcançada.

🖱️

Clique no mapa

Painéis laterais deixam o mapa visível: clique os pontos, mova e dê zoom à vontade; o cálculo roda em segundo plano.

O que ele não faz

Qual ferramenta devo usar?

Quero…UseResultado
trabalhar num lugar novo1. Baixar malha viária (OSM)um GeoPackage com a rede (precisa de internet)
conferir um GeoPackage antes de usar2. Inspecionar GeoPackage da malhaum relatório HTML: SRC, campos, preenchimento, diagnóstico de roteamento
testar uma rota clicandoRota no mapa (barra de ferramentas)linha da rota, dois pontos, distância e tempo no painel
calcular muitas rotas ou usar num modelo3. Menor caminho (Processamento)camada da rota e as saídas DISTANCE_KM / TIME_MIN
ver o que se alcança a partir de lugares, ou até elesIsócronas no mapa, ou 4. Isócronas (Processamento) para uma camada de pontospolígonos das isócronas, vias alcançadas e os pontos usados

As ferramentas no mapa e os algoritmos de Processamento são dois caminhos para o mesmo cálculo: os painéis servem para explorar clicando; os algoritmos servem para camadas de pontos, Executar como processo em lote, o Modelador Gráfico e scripts Python.

Instalação

Instalar, reiniciar, verificar

O QGIS já traz geopandas, networkx, shapely e pyproj. O OSMnx precisa ser acrescentado ao ambiente Python que o QGIS usa, que em geral não é o mesmo de outras instalações de Python do computador.

Requisitos e versões testadas

  1. Instale o OSMnx no Python do QGIS

    Abra Complementos → Console Python, cole o código abaixo e tecle Enter. O --no-deps preserva as bibliotecas que vieram com o QGIS (veja abaixo).

    from pip._internal.cli.main import main as pip
    pip(["install", "--user", "--no-deps", "osmnx"])
  2. Reinicie o QGIS e verifique

    Depois de reiniciar, rode isto no Console Python. A primeira linha mostra qual Python está em uso; a segunda deve imprimir as versões, sem erros.

    import sys, osmnx, geopandas, networkx
    print(sys.prefix)                       # should be inside the QGIS installation
    print("osmnx", osmnx.__version__, "| geopandas", geopandas.__version__,
          "| networkx", networkx.__version__)
  3. Instale o plugin

    Complementos → Gerenciar e instalar complementos, procure por OSMnx Routing & Isochrones. Enquanto for experimental, marque Mostrar também os complementos experimentais nas Configurações. Também dá para usar Instalar a partir do ZIP com um arquivo das releases. Depois confira se OSMnx Routing & Isochrones aparece na Caixa de Ferramentas de Processamento.

Por que --no-deps, e quando deixá-lo de fora?
O OSMnx depende de numpy, pandas, geopandas, networkx, shapely e requests, que o QGIS normalmente já fornece. Sem --no-deps, o pip pode substituí-los por versões para as quais os módulos do próprio QGIS (GDAL, scipy) não foram compilados, gerando erros difíceis de rastrear. Se a verificação mostrar ModuleNotFoundError de outro pacote, ou um geopandas anterior ao 1.0 (pacotes antigos do Linux), instale só esse pacote do mesmo jeito, por exemplo pip(["install", "--user", "--no-deps", "requests"]), ou, em último caso, rode o comando sem --no-deps.
Como sei se o pip instalou no Python do QGIS?
Rode o comando no Console Python do próprio QGIS, não num terminal. O sys.prefix da verificação deve apontar para dentro da instalação do QGIS (ex.: /Applications/QGIS.app/…, C:\Program Files\QGIS … ou /usr nos pacotes do Linux). Se o OSMnx é encontrado no terminal mas não no QGIS, ele foi para outro Python.
O --user não funciona
Num ambiente conda ou virtual o pip recusa o --user: retire-o do comando. Em Debian/Ubuntu recentes, o pip pode parar com externally-managed-environment; acrescentar "--break-system-packages" à lista é aceitável aqui, porque o --user só grava na sua pasta pessoal. Com o instalador OSGeo4W no Windows, também dá para usar o OSGeo4W Shell: python -m pip install --no-deps osmnx.
Enquanto faltar alguma biblioteca, o plugin mostra uma mensagem com o botão Como instalar e os algoritmos ficam desativados; a mensagem também vai para Exibir → Painéis → Mensagens de log, aba OSMnx Routing.

Primeiros passos

Do nome de um lugar ao mapa

Um primeiro uso completo em Cabedelo (PB), cidade pequena do litoral: o download leva menos de um minuto numa conexão comum.

Nome do lugar1. BaixarNominatim + OverpassGeoPackagenós · trechos · arcos · limite2. InspecionarRelatório HTML3. Menor caminhoRota4. IsócronasÁreas de alcance
  1. Baixe a rede viária

    Caixa de Ferramentas de Processamento (Ctrl+Alt+T) → OSMnx Routing & Isochrones → 1. Baixar malha viária (OSM). Digite Cabedelo, Paraíba, Brasil, escolha drive e salve num arquivo (não numa saída temporária). Resultado esperado: quatro camadas no projeto — …_boundary, …_edges, …_nodes, …_arcs.

  2. Confira o que veio (opcional)

    2. Inspecionar GeoPackage da malha gera um relatório HTML. Resultado esperado: SRC EPSG:4326 e a camada arcs como fonte do sentido.

  3. Clique uma rota

    Botão Rota no mapa na barra: clique a origem e depois o destino. Resultado esperado: uma linha vermelha e, no painel, a distância e o tempo estimado.

  4. Clique isócronas

    Botão Isócronas no mapa: clique um ponto. Resultado esperado: polígonos de 5, 10 e 15 minutos, do verde ao vermelho, e suas áreas no painel.

Ferramentas no mapa

Clique no mapa com pan e zoom livres

As duas ferramentas abrem um painel lateral que não cobre o mapa. Clique marca um ponto, arrastar move o mapa, a roda do mouse dá zoom, botão direito ou Esc limpa. O GeoPackage da rede vem das camadas já abertas no projeto; também dá para escolhê-lo no painel.

Rota no mapa

Primeiro clique = origem, segundo = destino; a rota é então calculada em segundo plano. Inverter troca o sentido; um terceiro clique começa nova origem. Os cliques ficam na camada Pontos da rota.

O painel de rota ao lado do mapa, com a distância e o tempo estimado.
O painel de rota ao lado do mapa, com a distância e o tempo estimado.

Isócronas no mapa

Cada clique acrescenta um ponto (P1, P2…) à camada Pontos das isócronas e as isócronas são recalculadas — desmarque Calcular após cada clique para marcar vários pontos antes. O painel lista a área de cada faixa de tempo.

O painel de isócronas: tempos, sentido, método e a área de cada faixa.
O painel de isócronas: tempos, sentido, método e a área de cada faixa. perto longe
💡 A cada execução o resultado anterior é substituído; marque Manter resultados anteriores para comparar cenários lado a lado.
Como interromper um cálculo. As ferramentas no mapa rodam como tarefas em segundo plano do QGIS: cancele pela barra de progresso no rodapé da janela do QGIS. Num diálogo de Processamento, use Cancelar. Os erros aparecem no painel ou na aba Log do diálogo.

Capturas de tela: plugin 0.1, QGIS 3.44, interface em português.

Referência

Os quatro algoritmos de Processamento

Funcionam no diálogo, em Executar como processo em lote, no Modelador Gráfico e pelo Python. Todos os blocos seguem a mesma ordem: quando usar, entradas, saídas, como interpretar o resultado e limitações.

1. Baixar malha viária (OSM)

osmnx_routing:download_network

Use quando você precisa da rede de um lugar que ainda não baixou.

ParâmetroDescrição
Nome do lugarMunicípio, distrito ou bairro com estado e país, ex.: Campina Grande, Paraíba, Brasil. O Nominatim localiza o lugar e o polígono do limite restringe o download.
Tipo de rededrive vias públicas para carro · drive_service mais vias de serviço · walk rede de pedestres · bike rede cicloviária · all_public todas as vias públicas · all incluindo as privadas. Escolha uma compatível com o perfil que vai usar.
GeoPackage de saídaArquivo a gravar. Uma saída temporária é apagada ao fechar o QGIS; o log avisa.
Saídas
Camadas edges (uma linha por trecho de rua, para exibição), arcs (uma linha por sentido de circulação, usada no roteamento), nodes e boundary (com a consulta, o nome no OSM e a data do download). Os trechos trazem speed_kph e travel_time.
Como interpretar
O log informa o número de nós e arcos. Exiba edges sobre um mapa de fundo para ver se as ruas de que você precisa estão lá.
Limitações
Precisa de internet; usa o proxy HTTP definido em Configurações → Opções → Rede. Lugares grandes podem levar vários minutos e o Overpass pode recusar consultas pesadas. Respeite as políticas de uso do Nominatim e do Overpass: evite repetir pedidos em sequência rápida. Pedidos idênticos são respondidos pelo cache do OSMnx em ~/osmnx/cache.

2. Inspecionar GeoPackage da malha

osmnx_routing:inspect_network

Use quando você recebeu ou editou um GeoPackage e quer conferi-lo antes do roteamento. Só precisa do QGIS, não do OSMnx.

ParâmetroDescrição
GeoPackage da malhaQualquer GeoPackage; as camadas podem ter prefixo (patos_nodes…).
RelatórioArquivo HTML a gravar.
Saídas
Um relatório HTML que abre no navegador: SRC, geometria, extensão, campos com a proporção de valores preenchidos, uma amostra e um diagnóstico de roteamento.
Como interpretar
Pouco preenchimento de maxspeed significa que a maior parte dos tempos vem das velocidades padrão. A fonte do sentido deve ser a camada arcs.
Limitações
Descreve os dados; não os corrige.

3. Menor caminho (mão e contramão)

osmnx_routing:shortest_path

Use quando você precisa do caminho entre dois pontos, do comprimento e do tempo estimado.

ParâmetroDescrição
PerfilCarro — segue a mão das ruas · Pedestre — ignora o sentido.
CritérioMenor distância minimiza o comprimento em metros. Mais rápido (carro) minimiza o travel_time, uma estimativa a partir das velocidades; veja Como funciona.
Origem, DestinoPontos em qualquer SRC. Cada um é ligado ao nó mais próximo da rede, como explicado abaixo.
Ignorar mão únicaSó para comparação ou diagnóstico: permite a contramão e marca esses trechos.
Velocidade a pékm/h, padrão 4,8.
Saídas
Linhas da Rota com ordem, nome da rua, tipo de via, mão única, wrong_way, comprimento, velocidade, tempo e acumulados; Pontos da rota; os números DISTANCE_KM, TIME_MIN e WRONG_WAY_M.
Como interpretar
Compare a rota com o mapa de fundo. O log avisa quando um ponto fica a mais de 150 m do seu nó: a rota então começa ou termina nesse nó, não no clique.
Limitações
O tempo não inclui trânsito, semáforos nem tempo de conversão, e as restrições de conversão não são aplicadas. As regras de mão única são tão completas quanto as etiquetas do OSM.

4. Isócronas (áreas de alcance)

osmnx_routing:isochrones

Use quando você quer a área que se alcança em alguns minutos a partir de pontos (ou de onde se chega até eles).

ParâmetroDescrição
Ponto / Camada de pontosUm ponto clicado, uma camada (escolas, UBS…) ou ambos; o campo de nome identifica cada ponto.
Uma isócrona por pontoMarcado: um conjunto de polígonos por ponto. Desmarcado: uma cobertura combinada de todos os pontos.
Sentido (carro)Saindo dos pontos (até onde se chega) ou chegando a eles (de onde se chega).
Tempos em minutosex.: 5, 10, 15 (também 5;10;15).
Método do polígonoFaixa ao redor das vias alcançadas, ou envoltória côncava dos nós alcançados.
Largura da faixaMetros ao redor das vias, padrão 40.
Saídas
Isócronas (source, minutes, area_km2, roads_km), Vias alcançadas com tempo de chegada inicial e final, Pontos das isócronas.
Como interpretar
Leia os polígonos junto com as Vias alcançadas: o polígono é uma representação cartográfica; a camada de vias mostra o que a rede de fato alcança.
Limitações
Os mesmos limites das rotas. Uma isócrona de pedestre numa rede drive não tem calçadas nem caminhos: baixe walk ou all para estudos a pé.

Campos e saídas

CampoSignificado
speed_kphVelocidade do trecho em km/h (maxspeed do OSM ou um padrão).
travel_timeTempo estimado para percorrer o trecho, em segundos.
wrong_waytrue quando a rota usa o trecho na contramão (só com Ignorar mão única).
DISTANCE_KM · TIME_MIN · WRONG_WAY_MComprimento da rota em km, tempo estimado em minutos e metros feitos na contramão.
minutes · area_km2 · roads_kmLimite de tempo do polígono, sua área em km² e o comprimento das vias alcançadas em km (ruas de mão dupla contadas uma vez).
t_start_min · t_end_minTempo de chegada em minutos no início e no fim de um trecho alcançado.

Automação com Python

Cada algoritmo tem um id estável; os parâmetros de lista recebem a posição da opção (0, 1, 2…).

import processing

# 1. baixar uma vez (precisa de internet)
processing.run("osmnx_routing:download_network", {
    "PLACE": "Cabedelo, Paraíba, Brasil", "TYPE": 2,          # 2 = drive
    "OUTPUT": "/dados/cabedelo.gpkg"})

# 2. rota de carro, menor tempo estimado (roda localmente)
res = processing.run("osmnx_routing:shortest_path", {
    "NETWORK": "/dados/cabedelo.gpkg", "PROFILE": 0, "CRITERION": 1,
    "ORIGIN": "-34.8410,-7.0323 [EPSG:4326]",
    "DESTINATION": "-34.8417,-7.0371 [EPSG:4326]",
    "OUTPUT": "TEMPORARY_OUTPUT"})
print(res["DISTANCE_KM"], res["TIME_MIN"])

# 3. isócronas a pé de uma camada de pontos, uma por ponto
processing.runAndLoadResults("osmnx_routing:isochrones", {
    "NETWORK": "/dados/cabedelo.gpkg", "PROFILE": 1,          # 1 = pedestre
    "POINTS": "/dados/escolas.gpkg", "ID_FIELD": "nome", "SEPARATE": True,
    "MINUTES": "5, 10, 15", "OUTPUT": "TEMPORARY_OUTPUT", "ROADS": "TEMPORARY_OUTPUT"})

Como funciona

Pressupostos que mudam o resultado

Conhecer estas escolhas ajuda a julgar se um resultado é razoável.

Ligação dos pontos à rede

Cada ponto é ligado ao nó mais próximo da rede, medido num SRC métrico local. Para carro, só concorrem os nós do maior componente fortemente conexo — nós a partir dos quais se chega a qualquer outro e se volta, respeitando a mão das ruas —, de modo que sempre existe rota. Para pedestre, usa-se o maior componente conexo. Por isso, um ponto numa rua isolada é ligado ao nó mais próximo da rede principal, que pode estar a alguma distância. Pontos a mais de 5 km de qualquer nó candidato são recusados (rotas) ou ignorados (isócronas).

Distância ou tempo

Menor distância soma o comprimento dos trechos; mais rápido soma o travel_time. A rota mais rápida é a de menor tempo estimado, não uma garantia da viagem real mais curta. Para pedestre a velocidade é constante, então os dois critérios dão o mesmo caminho.

Velocidades

travel_time = comprimento ÷ velocidade. A velocidade é a etiqueta maxspeed do OSM quando existe; senão, um padrão por tipo de via (motorway 100, primary 60, secondary 50, tertiary 40, residential 30, service 20, living_street 10 km/h); os demais tipos usam a média das vias etiquetadas do mesmo tipo, ou 30 km/h. São padrões urbanos para trânsito livre.

Mão única

A camada arcs tem um registro por sentido de circulação: uma rua de mão dupla gera dois arcos; uma de mão única, um arco. O carro só usa arcos; o pedestre anda nos dois sentidos. A correção disso depende das etiquetas oneway do OpenStreetMap.

rua de mão dupla2 arcosrua de mão única1 arco

Ignorar mão única acrescenta os arcos inversos que faltam e os marca como wrong_way. Mostra o erro que um grafo não dirigido cometeria; o resultado não é uma rota para dirigir.

rotacontramãoorigemdestino

Dois mapas do mesmo trajeto: à esquerda a rota de carro segue a mão das ruas e é mais longa; à direita, ignorando-a, é mais curta mas usa um trecho na contramão, tracejado em preto
Carro, respeitando a mão — a rota fica mais longa.
Ignorando a mão única — mais curta, mas o trecho tracejado preto é feito na contramão.

Saindo ou chegando

Saindo dos pontos responde “até onde chego daqui em 10 minutos?”. Chegando aos pontos responde “de onde as pessoas chegam aqui em 10 minutos?”: o cálculo roda sobre o grafo invertido. Os dois só diferem para carro, por causa da mão única.

Uma isócrona por ponto ou cobertura combinada

Com uma isócrona por ponto, cada ponto tem seus próprios polígonos, que podem se sobrepor. A cobertura combinada parte de todos os pontos ao mesmo tempo: cada rua recebe o tempo do ponto que a alcança mais rápido pela rede (não o mais próximo em linha reta), e sai um polígono por tempo.

Isócronas a pé de 5, 10 e 15 minutos em torno de quatro pontos, cada um com seus polígonos, sobrepostos
Isócronas a pé (5, 10, 15 min) de quatro pontos de exemplo (pense em escolas), uma por ponto. perto longe

Métodos de polígono

Faixa ao redor das vias alcançadas: cada trecho alcançado recebe um buffer da largura da faixa; o último trecho de cada caminho é cortado em proporção ao tempo restante, supondo velocidade constante nele. O polígono acompanha a rede. Envoltória côncava: um contorno mais suave em torno dos nós alcançados e das pontas cortadas. É mais fácil de ler, mas o interior inclui lugares que a rede não alcança (quadras, água, áreas cercadas).

A mesma isócrona desenhada com os dois métodos: à esquerda faixas estreitas ao longo das ruas, à direita contornos côncavos mais suaves
Faixa ao redor das vias alcançadas — acompanha a rede.
Envoltória côncava — mais suave; nem todo o interior é alcançável.
Trechos de rua coloridos pelo tempo de chegada a pé, do azul (perto) ao vermelho (longe)
Vias alcançadas: tempo estimado de chegada a pé em cada trecho de rua, a partir de um ponto em Tambaú, à beira-mar. perto longe

Leitura e cache

O primeiro cálculo sobre um GeoPackage lê o arquivo e monta os grafos; os seguintes os reaproveitam enquanto o QGIS estiver aberto. Se o arquivo mudar no disco, ele é lido de novo. Só uma rede fica na memória por vez.

Glossário

OpenStreetMap (OSM)Base colaborativa de dados geográficos. A cobertura e o detalhe variam entre lugares e não são uniformemente completos nem atualizados.
OSMnxBiblioteca Python que o plugin usa para baixar redes do OSM e transformá-las em grafos.
Nominatim / OverpassServiços do OSM que encontram um lugar pelo nome (geocodificação) e devolvem os dados do mapa dentro de uma área.
GeoPackageArquivo único .gpkg que pode guardar várias camadas vetoriais e tabelas.
SRCSistema de referência de coordenadas: como as coordenadas de uma camada se relacionam com lugares na Terra. A rede é gravada em EPSG:4326 (longitude/latitude); as distâncias são medidas num SRC métrico local (UTM).
NóPonto da rede: um cruzamento ou o fim de uma rua.
Trecho (edge)Pedaço de rua entre dois nós, usado na exibição.
Arco dirigidoTrecho com um sentido de circulação. Uma rua de mão dupla são dois arcos; uma de mão única, um arco no sentido permitido.
Grafo dirigidoRede em que cada ligação tem um sentido; necessário para modelar a mão única.
Menor caminhoCaminho de menor custo total; o custo é a distância ou o tempo estimado.
Componente fortemente conexoMaior conjunto de nós em que cada nó alcança todos os outros seguindo o sentido dos arcos.
IsócronaÁrea estimada como alcançável dentro de um limite de tempo, pela rede e perfil escolhidos. O polígono é uma representação cartográfica.
Envoltória côncavaContorno que se ajusta a um conjunto de pontos mais que a envoltória convexa. Representa os dados; não comprova o acesso a todo lugar do interior.

Ajuda

Dúvidas e problemas comuns

Cada item traz a causa provável e o que fazer.

Os algoritmos estão desativados, ou “Bibliotecas Python ausentes”

Causa provável: O OSMnx (ou outra biblioteca) não é encontrado no Python do QGIS.

O que fazer: Siga os passos da Instalação, reinicie o QGIS e rode o código de verificação.

“Nenhum resultado para …” ou “sem polígono de limite”

Causa provável: O Nominatim não encontrou o lugar, ou o encontrou como ponto ou linha (uma rua, um ponto de interesse).

O que fazer: Escreva o nome como no OpenStreetMap, com estado e país, e use município, distrito ou bairro. Pesquisar o nome em openstreetmap.org mostra o que o Nominatim encontra.

O download falha ou dá tempo esgotado

Causa provável: A área é grande, os servidores do OSM estão ocupados, a conexão está lenta ou é preciso um proxy.

O que fazer: Tente mais tarde ou com um lugar menor; confira o proxy em Configurações → Opções → Rede. Não repita o pedido em sequência rápida.

“… km da malha viária”

Causa provável: O ponto está a mais de 5 km da rede: fora da área baixada, ou numa camada com o SRC errado.

O que fazer: Clique dentro da área do GeoPackage, confira o SRC da camada de pontos ou baixe um lugar maior.

“Origem e destino caem no mesmo nó da rede”

Causa provável: Os dois pontos se ligam ao mesmo nó (estão muito próximos ou ambos numa rua isolada).

O que fazer: Escolha pontos mais afastados.

A rota usa uma rua estranha ou começa longe do clique

Causa provável: O clique foi ligado a um nó da rede principal a alguma distância, ou as etiquetas de mão única faltam ou estão erradas no OSM.

O que fazer: Leia os avisos do log, observe a camada arcs perto do ponto e, se o dado estiver errado, considere corrigi-lo no OpenStreetMap e baixar de novo.

As isócronas a pé parecem pequenas demais

Causa provável: A rede foi baixada como drive e não tem calçadas nem caminhos.

O que fazer: Baixe o lugar de novo com walk ou all.

Salvei as camadas em outro GeoPackage

Causa provável: Salvar camadas temporárias pode perder o SRC e acrescentar um prefixo aos nomes.

O que fazer: Funciona: nomes com prefixo (patos_nodes…) são reconhecidos e camadas lon/lat sem SRC são tratadas como EPSG:4326 (o log avisa). Mantenha uma rede por GeoPackage.

Como relatar um problema. Abra uma issue com: a versão do plugin (Gerenciador de complementos), a versão do QGIS e o sistema operacional (Ajuda → Sobre), o lugar e o tipo de rede, e a mensagem completa do painel, da aba Log do diálogo ou de Exibir → Painéis → Mensagens de log.

Sobre o autor

Foto de Marcello Benigno

Marcello Benigno

Professor do Curso Superior de Tecnologia em Geoprocessamento do Instituto Federal da Paraíba (IFPB).

Marcello Benigno é mestre em Ciências Geodésicas e Tecnologias da Geoinformação pela UFPE e engenheiro civil pela UFCG. Atua há mais de 20 anos no ensino e no desenvolvimento de soluções geotecnológicas de código aberto.

Sua experiência inclui desenvolvimento Web GIS e automação espacial com Python — especialmente PyQGIS, OSMnx, NetworkX e Django —, frontend de mapas web com Leaflet e Vue.js, modelagem de bancos de dados geográficos e arquiteturas em ambiente Linux. Esse trabalho orienta o desenvolvimento de ferramentas que integram análise espacial e geoprocessamento ao ecossistema QGIS.