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 segregadescycleway=lane|track|shared_lane|shared|opposite— carrils de diversos tipuscycleway:left/cycleway:right— carrils per costathighway=path + bicycle=designated— camins ciclableshighway=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:
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.
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ó.
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.
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.
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:
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
Densitat ciclista relativa a la població. Permet comparar municipis de mides diferents.
Densitat ciclista relativa a la superfície. Indica el grau de cobertura territorial.
Percentatge de carrils separats físicament del trànsit motoritzat.
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.
km totals
trams processats
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.