O DNIT (Departamento Nacional de Infraestrutura de Transportes) é responsável pela implementação da política de infraestrutura do sistema federal de viação, incluindo rodovias e ferrovias federais. O DNIT disponibiliza dados sobre:
SNV (Sistema Nacional de Viação) — mapeamento de todas as rodovias federais e estaduais planejadas (última atualização: fevereiro de 2026)
Condições das rodovias — estado de conservação, tipo de superfície (pavimentada, não pavimentada)
Extensão da malha — quilometragem por rodovia, UF e tipo
Obras — projetos de construção, manutenção e restauração
Pesagem e tráfego — postos de pesagem, contagens de tráfego contínuo, estudos de origem-destino
Hidrovias — dados da malha hidroviária federal
Os dados geoespaciais da malha rodoviária são disponibilizados em formatos SHP, GeoJSON, CSV e KML, acessíveis via portal de dados abertos e via VGEO (Visualizador de Informações Geográficas).
Em desenvolvimento: O DNIT está implementando uma arquitetura de APIs REST (Portaria 595/2024), com previsão de disponibilidade progressiva a partir de 2026.
import geopandas as gpd# Após download do shapefile do SNV via VGEO ou Portal de Dados Abertosgdf = gpd.read_file("snv_rodovias_federais.shp")print(f"Total de trechos: {len(gdf):,}")print(f"Colunas: {list(gdf.columns)}")print(f"CRS: {gdf.crs}")# Extensão total por tipo de superfícieextensao = gdf.groupby("SUPERFICIE")["EXTENSAO_KM"].sum()print("\nExtensão por tipo de superfície (km):")print(extensao)# Extensão por UFpor_uf = gdf.groupby("UF")["EXTENSAO_KM"].sum().sort_values(ascending=False)print("\nExtensão da malha federal por UF (top 10):")print(por_uf.head(10))
import geopandas as gpdimport matplotlib.pyplot as pltgdf = gpd.read_file("snv_rodovias_federais.shp")# Colorir por tipo de superfíciefig, ax = plt.subplots(figsize=(12, 14))cores = {"Pavimentada": "gray", "Não Pavimentada": "brown", "Planejada": "lightblue"}for tipo, cor in cores.items(): subset = gdf[gdf["SUPERFICIE"] == tipo] if not subset.empty: subset.plot(ax=ax, linewidth=0.5, color=cor, label=tipo)ax.set_title("Malha Rodoviária Federal — SNV/DNIT")ax.legend()ax.set_axis_off()plt.tight_layout()plt.savefig("malha_rodoviaria.png", dpi=150)print("Mapa salvo em malha_rodoviaria.png")
import pandas as pd# O SNV também é disponibilizado em Exceldf = pd.read_excel("snv_completo.xlsx", dtype=str)print(f"Total de trechos: {len(df):,}")print(f"Colunas: {list(df.columns)}")# Resumo por rodoviadf["EXTENSAO_KM"] = pd.to_numeric(df["EXTENSAO_KM"], errors="coerce")por_rodovia = df.groupby("BR")["EXTENSAO_KM"].sum().sort_values(ascending=False)print("\nRodovias mais extensas:")print(por_rodovia.head(10))