From 5a15f48f50d1774c2d67f0447a60e7e98fc1a827 Mon Sep 17 00:00:00 2001 From: Edward Betts Date: Tue, 15 Jul 2025 15:50:32 +0200 Subject: [PATCH] Add CO2 emission calculations for train and ferry journeys MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- agenda/trip.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/agenda/trip.py b/agenda/trip.py index 90e9997..b1cf69f 100644 --- a/agenda/trip.py +++ b/agenda/trip.py @@ -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