Zum Hauptinhalt springen

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

EigenschaftTransportModeDistanceGFMTransportDecisionGFM
Läuft aufFoodProductFlowNode, FlowNodeKnoten mit transport-Attribut
AbhängigkeitenOriginGFM, MatchProductNameGFM, UnitWeightConversionGFM, ConservationGFMTransportModeDistanceGFM
SchlüsseleingabeUrsprungsort, ZielortTransportentfernungen, Produktverderblichkeit
AusgabeEntfernungen und CO2-Werte pro TransportmodusOptimaler Transportmodus, Beförderungsflussknoten
Externe APIEcoTransitKeine

Wann sie laufen

TransportModeDistanceGFM wird ausgelöst, wenn:

  1. Ein FoodProductFlowNode einen gültigen Ursprungsort hat
  2. Der übergeordnete Knoten einen gültigen Zielort hat
  3. Das Produkt nicht als Unterteilung markiert ist
  4. Kein Transportmodus bereits angegeben ist

TransportDecisionGFM wird ausgelöst, wenn:

  1. Transportentfernungen vom TransportModeDistanceGFM berechnet wurden
  2. Mindestens eine gültige Transportentfernung existiert (ungleich null)
  3. 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

ModusEcoTransit-CodeReisegeschwindigkeitLadezeitPreis pro kmLadepreis
Straßeroad45 km/h3 Stunden$0,0497/km$84,62
Seesea26 km/h48 Stunden$0,0062/km$119,66
Luftair500 km/h6 Stunden$0,0062/km$2.085,00
Schienerail40 km/h24 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:

  1. GADM Level 1-2 (Land/Region): Verwendet Zentroidkoordinaten für EcoTransit-Abfragen
  2. GADM Level 3+ (Detailliert): Fällt auf Level-2-Elternregionszentroid zurück
  3. 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:

ModusVor-/Nachlauf-SkalierungsfaktorBeschreibung
See0,29042sqrt(Fläche)/2,43
Luft0,11782sqrt(Fläche)/5,99
Straße (gleiche Region)0,56905Fü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:

  1. Nach Verderblichkeit filtern: Modi ausschließen, bei denen Reisezeit die Produktlagerzeit überschreitet
  2. Gesamtkosten berechnen: Entfernungskosten und Ladekosten für jeden Modus summieren
  3. 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örderungEntfernung (km)CO2 (t/t)
Vorlauf (Argentinien-Zentroid zum Hafen)666,020,0952
Hauptlauf (Argentinien-Hafen zu Portugal-Hafen)11.428,680,1202
Nachlauf (Portugal-Hafen zu Deutschland-Zentroid)2.569,740,1908
Gesamt14.664,440,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:

  1. 50km Offset zu Ursprungs- und Zielkoordinaten hinzufügen
  2. Straßentransportmodus erzwingen
  3. 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

ModusVorlaufHauptlaufNachlaufGesamtentfernungGesamt-CO2
Straße0 km1.284,3 km0 km1.284,3 km0,1156 t
See312,4 km2.156,7 km428,6 km2.897,7 km0,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

  1. Transportaktivitätsknoten erstellt
  2. Hauptlauf-Flussknoten: 1.284,3 km Straßentransport
  3. Kraftstoffverbrauchsknoten: 0,1156 t CO2eq
  4. 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

  1. EcoTransit World. Environmental methodology and data update. https://www.ecotransit.org/

  2. 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/

  3. Clean Cargo Working Group. Container shipping methodology for calculating emissions. https://www.smartfreightcentre.org/en/our-programs/clean-cargo-1/

  4. 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.

  5. GADM Database. Global Administrative Areas. https://gadm.org/

  6. FAO. Food and Agriculture Organization trade statistics. https://www.fao.org/faostat/