Transport GFMs
Die Transport Gap Filling Modules berechnen Treibhausgasemissionen aus dem Transport von Lebensmittelprodukten vom Ursprung zum Ziel. Diese beiden Module arbeiten zusammen: transportation_mode_distance_gfm berechnet Entfernungen und Routenoptionen, während transportation_decision_gfm den optimalen Transportmodus auswählt und Emissionsflüsse generiert.
Kurzreferenz
| Eigenschaft | TransportModeDistanceGFM | TransportDecisionGFM |
|---|---|---|
| Läuft auf | FoodProductFlowNode, FlowNode | Knoten mit transport-Attribut |
| Abhängigkeiten | OriginGFM, MatchProductNameGFM, UnitWeightConversionGFM, ConservationGFM | TransportModeDistanceGFM |
| Schlüsseleingabe | Ursprungsort, Zielort | Transportentfernungen, Produktverderblichkeit |
| Ausgabe | Entfernungen und CO2-Werte pro Transportmodus | Optimaler Transportmodus, Beförderungsflussknoten |
| Externe API | EcoTransit | Keine |
Wann sie laufen
TransportModeDistanceGFM wird ausgelöst, wenn:
- Ein
FoodProductFlowNodeeinen gültigen Ursprungsort hat - Der übergeordnete Knoten einen gültigen Zielort hat
- Das Produkt nicht als Unterteilung markiert ist
- Kein Transportmodus bereits angegeben ist
TransportDecisionGFM wird ausgelöst, wenn:
- Transportentfernungen vom TransportModeDistanceGFM berechnet wurden
- Mindestens eine gültige Transportentfernung existiert (ungleich null)
- Der Knoten einen Kindknoten für vortransportiertes Produkt hat
Schlüsselausgabe
Die Module fügen mehrere Komponenten zum Berechnungsgraph hinzu:
- Vorlauf: Straßentransport vom Ursprung zum Abgangshafen/-flughafen
- Hauptlauf: Primärtransport über gewählten Modus (Straße, See, Luft, Schiene)
- Nachlauf: Straßentransport vom Ankunftshafen/-flughafen zum Ziel
- Kühlung/Einfrieren: Zusätzliche Emissionen für temperaturkontrollierten Transport
- Infrastruktur: Transportinfrastruktur-Emissionen pro Tonnenkilometer
Wissenschaftliche Methodik
Das Transportmodell berechnet Emissionen mit einem dreistufigen Beförderungsansatz unter Verwendung von EcoTransit für Routenplanung und Emissionsfaktoren.
Transportmodus-Optionen
| Modus | EcoTransit-Code | Reisegeschwindigkeit | Ladezeit | Preis pro km | Ladepreis |
|---|---|---|---|---|---|
| Straße | road | 45 km/h | 3 Stunden | $0,0497/km | $84,62 |
| See | sea | 26 km/h | 48 Stunden | $0,0062/km | $119,66 |
| Luft | air | 500 km/h | 6 Stunden | $0,0062/km | $2.085,00 |
| Schiene | rail | 40 km/h | 24 Stunden | $0,0186/km | $99,58 |
Entfernungsberechnungsmethodik
Das Transportmodell verwendet einen hierarchischen Ansatz zur Entfernungsberechnung:
EcoTransit-Integration
Für jeden Transportmodus fragt das System EcoTransit unter Verwendung der CCWG-Tradelane-Methodik (Clean Cargo Working Group) ab:
ECOTRANSIT_CALCULATION_METHOD = "ccwg-tradelane"
ECOTRANSIT_CALCULATION_YEAR = 2024
Anfrageparameter:
- Abgangskoordinaten (Ursprungszentroid oder präziser Standort)
- Zielkoordinaten (Zielzentroid oder präziser Standort)
- Transportmodus (Straße, See, Luft, Schiene)
- Ladungsgewicht: 1 Tonne (Emissionen normalisiert pro Tonne)
Standortauflösung mit GADM
Standorte werden mithilfe der GADM (Global Administrative Areas Database) aufgelöst:
- GADM Level 1-2 (Land/Region): Verwendet Zentroidkoordinaten für EcoTransit-Abfragen
- GADM Level 3+ (Detailliert): Fällt auf Level-2-Elternregionszentroid zurück
- Caching-Strategie: Region-zu-Region-Ergebnisse werden gecacht; Land-zu-Land dient als Fallback
# Cache-Schlüsselformat
request_key = f"{start_location_gadm_term.xid}_{end_location_gadm_term.xid}_{mode.value}"
Vor-/Nachlauf-Entfernungsschätzung
Für See- und Lufttransport werden Vor- und Nachlauf-Entfernungen (Straßentransport zu/von Häfen) geschätzt mit:
# Für Transport innerhalb derselben Region (Ursprung und Ziel in gleicher GADM-Region)
estimated_distance = ribbon_factor * direct_distance
# Für verschiedene Regionen
estimated_distance = max(
sqrt(region_area_km2) * scaling_factor, # Flächenbasierte Schätzung
distance_from_centroid_to_port # Zentroidbasierte Schätzung
) * ribbon_factor
Skalierungsfaktoren nach Transportmodus:
| Modus | Vor-/Nachlauf-Skalierungsfaktor | Beschreibung |
|---|---|---|
| See | 0,29042 | sqrt(Fläche)/2,43 |
| Luft | 0,11782 | sqrt(Fläche)/5,99 |
| Straße (gleiche Region) | 0,56905 | Für Lokaltransport |
Ribbon-Faktor (Umweg-Index):
Der Ribbon-Faktor von 1,417 wandelt Luftlinienentfernungen in realistische Straßenentfernungen um, basierend auf Forschung von Ballou et al. (2002).
CO2-Emissionsberechnung
CO2-Emissionen werden direkt aus EcoTransit-Antworten in Tonnen CO2eq pro Tonne Ladung extrahiert:
# Für jedes Beförderungssegment
co2_value = section["emissions"]["co2Equivalents"][mode]["_value_1"]
distance = section["emissions"]["distances"][mode]["tankToWheel"]
# Vor-/Nachlauf-CO2 wird basierend auf geschätzter Entfernung skaliert
scaled_co2 = ecotransit_co2 * (estimated_distance / ecotransit_distance)
Transportmodus-Auswahl
Das TransportDecisionGFM wählt den optimalen Modus durch:
- Nach Verderblichkeit filtern: Modi ausschließen, bei denen Reisezeit die Produktlagerzeit überschreitet
- Gesamtkosten berechnen: Entfernungskosten und Ladekosten für jeden Modus summieren
- Günstigsten wählen: Modus mit niedrigsten Gesamtkosten wählen
# Gesamtreisezeit-Berechnung
travel_time = distance / travel_speed + loading_time
# Gesamtkosten-Berechnung
total_cost = (distance_price * distance) + loading_price
Verderblichkeitsbeschränkungen
Produkte mit Lagerzeit-Beschränkungen (gekühlt, gefroren) werden auf Modi gefiltert, die innerhalb des Lagerfensters liefern können:
# Prüfen, ob Modus qualifiziert
storage_time_hours = product.storage_time * time_conversion_factor
if travel_time < storage_time_hours:
qualifying_modes.append(mode)
Wenn kein Modus die Lagerbeschränkung erfüllt, wird der schnellste Modus als Fallback gewählt.
Implementierungsdetails
Standard-Transportentfernungen
Wenn Herkunft nicht bestimmt werden kann (unbekannter Produktions-FAO-Code), werden Standardentfernungen basierend auf Argentinien nach Deutschland über Portugal verwendet:
| Beförderung | Entfernung (km) | CO2 (t/t) |
|---|---|---|
| Vorlauf (Argentinien-Zentroid zum Hafen) | 666,02 | 0,0952 |
| Hauptlauf (Argentinien-Hafen zu Portugal-Hafen) | 11.428,68 | 0,1202 |
| Nachlauf (Portugal-Hafen zu Deutschland-Zentroid) | 2.569,74 | 0,1908 |
| Gesamt | 14.664,44 | 0,4062 |
Nicht-Lebensmittel-Produkt-Behandlung
Nicht-Lebensmittel-Produkte (identifiziert durch FoodEx2-Begriffe EAT-0002 und EAT-0000) werden von Transportberechnungen ausgeschlossen.
Transport am gleichen Standort
Wenn Ursprung und Ziel die gleiche GADM-Region sind:
- 50km Offset zu Ursprungs- und Zielkoordinaten hinzufügen
- Straßentransportmodus erzwingen
- Entfernung mit Ribbon-Faktor berechnen
if start_location_gadm_term == end_location_gadm_term:
start_location = add_offset_to_endpoint(start_lon, start_lat, -50_000)
end_location = add_offset_to_endpoint(end_lon, end_lat, 50_000)
pre_defined_mode = ServiceTransportModeEnum.GROUND
Graph-Mutationen
Das TransportDecisionGFM erstellt die folgende Graph-Struktur:
FoodProductFlowNode (Zutat)
|
+-- FoodProcessingActivityNode (Transportaktivität)
|
+-- FoodProductFlowNode (vortransportiertes Produkt)
| |
| +-- [ursprüngliche Kindknoten]
|
+-- PracticeFlowNode (Vorlauf)
| +-- TransportActivityNode
| +-- FlowNode (Kraftstoffverbrauch)
| +-- PracticeFlowNode (Infrastruktur)
|
+-- PracticeFlowNode (Hauptlauf)
| +-- TransportActivityNode
| +-- FlowNode (Kraftstoffverbrauch)
| +-- PracticeFlowNode (Infrastruktur)
|
+-- PracticeFlowNode (Nachlauf)
| +-- TransportActivityNode
| +-- FlowNode (Kraftstoffverbrauch)
| +-- PracticeFlowNode (Infrastruktur)
|
+-- PracticeFlowNode (Kühlung/Einfrieren) [optional]
Kühlung und Einfrieren während Transport
Für Produkte, die als gekühlt (J0131) oder gefroren (J0136) gekennzeichnet sind, werden zusätzliche Kühlemissionen hinzugefügt:
# Reisezeit für gewählten Modus berechnen
travel_time_hours = total_distance / travel_speed + loading_time
# Kühl-/Gefrierflussknoten mit kg*Stunden-Menge erstellen
cooling_flow_node.amount = travel_time_hours # in kg*Stunden-Einheit
Berechnungsbeispiel
Szenario: 1 kg Orangen aus Spanien (Valencia) in die Schweiz (Zürich)
Schritt 1: Standorte auflösen
- Ursprung: Spanien, Region Valencia (GADM: ES.17_1)
- Zentroid: -0,4, 39,5
- Ziel: Schweiz, Zürich (GADM: CH.26_1)
- Zentroid: 8,5, 47,4
Schritt 2: EcoTransit abfragen
Abfragen für Straße, See und Luft:
Straßen-Antwort:
{
"mainhaul": {
"road": [
{"distance": 1284.3, "co2eq_value": 0.1156}
]
}
}
See-Antwort:
{
"mainhaul": {
"sea": [
{"distance": 2156.7, "co2eq_value": 0.0345}
]
},
"preCarriage": {"road": [{"distance": 312.4, "co2eq_value": 0.0281}]},
"postCarriage": {"road": [{"distance": 428.6, "co2eq_value": 0.0386}]}
}
Schritt 3: Transportoptionen berechnen
| Modus | Vorlauf | Hauptlauf | Nachlauf | Gesamtentfernung | Gesamt-CO2 |
|---|---|---|---|---|---|
| Straße | 0 km | 1.284,3 km | 0 km | 1.284,3 km | 0,1156 t |
| See | 312,4 km | 2.156,7 km | 428,6 km | 2.897,7 km | 0,1012 t |
Schritt 4: Kosten berechnen
Straße:
Kosten = (1284,3 * 0,0497) + 84,62 = $148,45
See:
Vorlauf: (312,4 * 0,0497) + 84,62 = $100,14
Hauptlauf: (2156,7 * 0,0062) + 119,66 = $133,03
Nachlauf: (428,6 * 0,0497) + 84,62 = $105,92
Gesamt: $339,09
Schritt 5: Modus auswählen
Straße wird als günstigste praktikable Option gewählt ($148,45 vs $339,09).
Schritt 6: Graph-Knoten erstellen
- Transportaktivitätsknoten erstellt
- Hauptlauf-Flussknoten: 1.284,3 km Straßentransport
- Kraftstoffverbrauchsknoten: 0,1156 t CO2eq
- Infrastrukturknoten: 1,0 Tonnenkilometer
Endausgabe
Das Modul fügt Emissionen von 0,1156 kg CO2eq pro kg Orangen für Transport hinzu.
Bekannte Einschränkungen
Geografische Abdeckung
- Hängt von EcoTransit-Routendatenbank-Abdeckung ab
- Einige abgelegene Standorte haben möglicherweise keine gültigen Routen
- Seerouten erfordern gültige Hafenverbindungen
Modusabdeckung
- Schiene: Derzeit funktional, aber im Kostenmodell weniger priorisiert
- Binnenwasserstraßen: In EcoTransit verfügbar, aber noch nicht implementiert
- Fähre: Als Straßentransport behandelt (keine Unterscheidung)
Modellannahmen
- Transportdatum nicht angegeben, um zeitliche Variationen in Emissionsfaktoren zu vermeiden
- Ladefaktor bei 60% angenommen (EcoTransit-Standard)
- Alle Vor-/Nachläufe als Straßentransport angenommen
- Gleiche Infrastrukturmischung global verwendet
Verderblichkeitsbeschränkungen
- Gilt nur, wenn Lagerzeit-Tag am Produkt vorhanden ist
- Schnellster Modus als Fallback gewählt, wenn kein Modus Beschränkungen erfüllt
- Kann zu Lufttransport für hochverderbliche Artikel führen
Datenaktualität
- EcoTransit-Emissionsfaktoren werden jährlich aktualisiert
- GADM-Grenzen spiegeln möglicherweise nicht neueste administrative Änderungen wider
- Transportpreise im Kostenmodell spiegeln möglicherweise nicht aktuelle Marktraten wider
Referenzen
-
EcoTransit World. Environmental methodology and data update. https://www.ecotransit.org/
-
Smart Freight Centre (2019). Global Logistics Emissions Council Framework for Logistics Emissions Accounting and Reporting. https://www.smartfreightcentre.org/en/our-programs/global-logistics-emissions-council/
-
Clean Cargo Working Group. Container shipping methodology for calculating emissions. https://www.smartfreightcentre.org/en/our-programs/clean-cargo-1/
-
Ballou, R.H., Rahardja, H., & Sakai, N. (2002). Selected country circuity factors for road travel distance estimation. Transportation Research Part A, 36(9), 843-848.
-
GADM Database. Global Administrative Areas. https://gadm.org/
-
FAO. Food and Agriculture Organization trade statistics. https://www.fao.org/faostat/