SIG-Bus
Plugin QGIS para leitura de GTFS, integração de demanda de passageiros e geração de relatórios por linha.
O Problema
O QGIS não possui suporte nativo para o formato GTFS além da leitura básica de geometrias. Para um engenheiro de transportes analisar a rede de ônibus de Belo Horizonte — cruzando geometria de rotas, horários e demanda de passageiros — o processo era inteiramente manual: importar arquivos separados, construir junções e tratar inconsistências entre os identificadores de linhas do sistema de bilhetagem e os do feed GTFS.
Os dados de demanda, publicados pela PBH no portal de dados abertos, chegam em CSV com coordenadas e códigos de linha próprios. Sem uma ferramenta dedicada, a combinação desses dados com o GTFS exigia conhecimento avançado em SIG e programação — uma barreira alta para quem precisava apenas gerar análises operacionais de linha.
A Solução — Evolução do Projeto
Início da pesquisa como iniciação científica no CEFET-MG (aplicação ao edital em 2019), com foco no desenvolvimento de ferramentas de análise de transporte público baseadas em dados abertos.
Estruturação do código como plugin PyQGIS, com interface gráfica em Qt Designer. Implementação do leitor GTFS nativo (adaptado do CTU GeoForAll Lab sob GPL v2+), sem dependências externas além do próprio QGIS.
Apresentação do projeto na Semana de Ciência e Tecnologia do CEFET-MG, com demonstração da integração GTFS + demanda e geração dos mapas de carga por linha.
Adição de categorização automática dos trechos por cluster de demanda com estilos graduados, e geração de relatório PDF com dois mapas — carga acumulada e agrupamento por cluster — sobrepostos à geometria da rota.
Funcionalidades Principais
Importação e validação de GTFS: O plugin lê feeds GTFS diretamente de arquivos ZIP, valida a integridade dos dados e gera calendários sintéticos quando o feed não inclui o arquivo `calendar.txt`. Os dados são convertidos para GeoPackage com camadas espaciais indexadas para consulta eficiente.
Integração de demanda por parada: Carrega o CSV de embarques da BHTrans e vincula os pontos de demanda às paradas GTFS por junção espacial, restrita ao padrão de serviço dominante de cada linha para evitar associações incorretas com rotas paralelas próximas.
Horários por parada (horarios_paradas): Ao filtrar uma linha, o plugin gera automaticamente uma camada de pontos com os horários de todas as viagens da rota selecionada — `arrival_time`, `departure_time`, `stop_sequence`, `trip_id`, `shape_id` e `direction_id` para cada parada. A camada é construída por junção direta no banco GeoPackage e permite visualizar a distribuição dos serviços ao longo do dia.
Alocação de demanda por trecho (tramos_demanda): Gera uma camada de linhas com a carga acumulada de passageiros e a contagem de viagens por trecho, para o período horário selecionado. A carga segue o princípio de conservação de fluxo, produzindo um limite superior da ocupação real — adequado para comparação relativa entre trechos e períodos.
Análise horária: Toda a análise pode ser restrita a um intervalo horário específico (0h a 23h) ou executada para o dia completo, com seleção da forma de rota dominante quando uma linha opera múltiplas variantes geométricas.
Relatório PDF com clusterização: A versão atual gera um relatório com dois mapas — carga acumulada e agrupamento dos trechos por cluster de demanda — com estilos graduados aplicados automaticamente ao final do processamento.
Stack Tecnológica
Python PyQGIS GDAL GeoPackage / SQLite Qt Designer
Impacto
O plugin elimina a etapa manual de integração entre dados de rede (GTFS) e dados de demanda (bilhetagem), permitindo que engenheiros e pesquisadores de transportes passem diretamente à análise operacional. Aplicado à rede de ônibus de Belo Horizonte, o SIG-Bus viabiliza estudos de carga por linha, identificação de trechos críticos e análise da distribuição horária de passageiros — tudo dentro do ambiente QGIS, sem dependências externas.