Salta al contingut principal
Metodologia

Com ho fem

D'on surten les dades, com calculem les distàncies i com assignem cada tram al seu municipi.

Fonts de dades

OpenStreetMap

La font principal de dades. OpenStreetMap (OSM) és un mapa col·laboratiu del món, editat per milers de voluntaris. Consultem les dades via l'Overpass API.

Busquem vies amb aquestes etiquetes:

  • highway=cycleway — vies ciclistes segregades
  • cycleway=lane|track|shared_lane|shared|opposite — carrils de diversos tipus
  • cycleway:left / cycleway:right — carrils per costat
  • highway=path + bicycle=designated — camins ciclables
  • highway=proposed + proposed=cycleway — projectats

Wikidata

Obtenim la població i la superfície de cada municipi des de Wikidata via consultes SPARQL. Això ens permet calcular indicadors relatius com els km de carril bici per 1.000 habitants o per km².

Open Data BCN i AMB

Complementem les dades OSM amb fonts GeoJSON de l'Open Data de Barcelona i de l'Àrea Metropolitana de Barcelona (AMB) per al mapa interactiu.

El procés de càrrega

L'ETL (Extract, Transform, Load) s'executa setmanalment amb un script Python que processa les dades en diversos passos:

01

Descàrrega de municipis

Obtenim la llista dels 947 municipis de Catalunya des d'Overpass (relacions amb admin_level=8), incloent codis INE, coordenades centrals i pertinença a comarca i província.

02

Població i superfície

Consultem Wikidata amb SPARQL per obtenir la població i àrea de cada municipi, usant el codi INE com a clau de vinculació.

03

Descàrrega de carrils bici

Descarreguem les dades d'OSM per les 4 províncies catalanes (Barcelona, Girona, Lleida, Tarragona) per separat. El resultat es deduplicar per ID de via, eliminant duplicats entre províncies.

04

Límits municipals

Descarreguem les geometries dels límits de cada municipi i construïm polígons correctes amb Shapely, encadenant les vies dels límits pels seus extrems per formar anells tancats.

05

Processament i assignació

Per a cada via, calculem la longitud, classifiquem el tipus de carril i assignem el municipi corresponent. Finalment, agreguem estadístiques per municipi i comarca.

Com calculem les distàncies

Cada via a OpenStreetMap és una seqüència de nodes (punts amb latitud i longitud). Per calcular la longitud total d'una via, sumem la distància entre cada parella de nodes consecutius usant la fórmula de Haversine.

Fórmula de Haversine

Calcula la distància del cercle màxim entre dos punts sobre una esfera, tenint en compte la curvatura de la Terra:

a = sin²(Δlat/2) + cos(lat₁) · cos(lat₂) · sin²(Δlon/2)
d = 2R · atan2(√a, √(1-a))

On R = 6.371 km (radi de la Terra). Precisió: < 0,5% per a les distàncies típiques dels trams de carril bici.

Descartem trams de menys de 5 metres (errors de mapatge) i de més de 50 km (dades sospitoses). Per a vies de més de 500 metres, usem el centroide geomètric de la línia en lloc del punt mig per índex.

Assignació a municipis

Cada tram de carril bici s'assigna al municipi on es troba el seu punt central. El procés usa dues estratègies:

1. Point-in-polygon amb índex espacial

Construïm un STRtree (índex espacial R-tree) amb els polígons dels 947 municipis. Per a cada tram, primer filtrem els candidats per bounding box i després comprovem la contenció exacta amb l'algorisme de ray casting.

2. Fallback: centroide ponderat

Si cap polígon conté el punt (casos de frontera), busquem el municipi més proper per distància al centroide, ponderant per la superfície del municipi: els municipis grans tenen una zona de captació proporcionalment major.

Classificació dels carrils

Tipus Etiquetes OSM Segregat
Via ciclista segregada highway=cycleway
Pista ciclable cycleway=track
Carril bici pintat cycleway=lane
Carril compartit cycleway=shared_lane
Camí ciclable highway=path + bicycle=designated
Contracorrent cycleway=opposite
Projectat highway=proposed o cycleway=proposed

L'etiqueta segregated=yes marca un tram com a físicament separat del trànsit, independentment del tipus.

Carril compartit: comptabilitzat a part

Els carrils compartits (shared_lane) són carrers amb pictogrames de bici pintats on les bicicletes comparteixen el carril amb el trànsit motoritzat. No es compten dins el total de km de carril bici, ja que no representen infraestructura ciclista dedicada. Es mostren per separat a totes les pàgines.

Indicadors calculats

km per 1.000 habitants (km_total / poblacio) × 1.000

Densitat ciclista relativa a la població. Permet comparar municipis de mides diferents.

km per km² km_total / superficie_km2

Densitat ciclista relativa a la superfície. Indica el grau de cobertura territorial.

% segregat (km_segregat / km_total) × 100

Percentatge de carrils separats físicament del trànsit motoritzat.

% il·luminat (km_lit / km_total) × 100

Percentatge de carrils amb il·luminació, segons l'etiqueta lit=yes d'OSM.

Freqüència d'actualització

Les dades s'actualitzen setmanalment. L'ETL descarrega les dades d'OSM per les quatre províncies, recalcula totes les longituts i estadístiques, i actualitza la base de dades.

2.051 km

km totals

15.209

trams processats

947

municipis

Última actualització: 24/03/2026 06:15

Codi obert

Tant l'ETL com el web són codi obert. Les dades processades es publiquen sota llicència ODbL (la mateixa que OpenStreetMap).

Si trobes errors a les dades o vols contribuir, envia'ns un missatge o edita directament les dades a OpenStreetMap — els canvis es reflectiran a la propera actualització setmanal.