Add CO2 emission calculations for train and ferry journeys

- Add CO2 calculation for train legs using 0.037 kg CO2e per passenger per km
- Add CO2 calculation for ferry journeys using 0.02254 kg CO2e per passenger per km
- Both calculations use standard emission factors from UK government sources (DEFRA/DECC)
- CO2 values are automatically included in trip totals via existing total_co2_kg() method

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Edward Betts 2025-07-15 15:50:32 +02:00
parent 791759b322
commit 5a15f48f50

View file

@ -50,8 +50,14 @@ def load_trains(
if route_distances:
travel.add_leg_route_distance(leg, route_distances)
# Calculate CO2 emissions for train leg (0.037 kg CO2e per passenger per km)
if "distance" in leg:
leg["co2_kg"] = leg["distance"] * 0.037
if all("distance" in leg for leg in train["legs"]):
train["distance"] = sum(leg["distance"] for leg in train["legs"])
# Calculate total CO2 for entire train journey
train["co2_kg"] = sum(leg["co2_kg"] for leg in train["legs"])
return trains
@ -73,6 +79,10 @@ def load_ferries(
if route_distances:
travel.add_leg_route_distance(item, route_distances)
# Calculate CO2 emissions for ferry (0.02254 kg CO2e per passenger per km)
if "distance" in item:
item["co2_kg"] = item["distance"] * 0.02254
geojson = from_terminal["routes"].get(item["to"])
if geojson:
item["geojson_filename"] = geojson