Motivation
Emissions reporting is the dominant commercial driver in this space (EU ETS, FuelEU Maritime, GLEC). The commercial Searoutes API leads with exactly two things we could offer in open source:
- ECA/SECA distance — how much of the route is inside an emission-control area (drives fuel-type/cost).
- CO₂e estimate — emissions for the voyage.
No open-source library does either today. Our architecture is already the right shape: the segment-vs-bbox intersection we use for passage detection extends naturally to zone-distance.
Proposal
Phase 1 — ECA/SECA distance:
route.properties.ecaKm // km of the route inside ECA/SECA zones
Add ECA/SECA zone polygons; sum the route length that falls inside them (reuse/extend the segment-intersection logic).
Phase 2 — CO₂e (opt-in):
seaRoute(o, d, { vesselClass: 'panamax', speedKnots: 14, emissions: true });
// → route.properties.co2eTonnes (rough, distance × class emission factor)
Document clearly as an estimate (distance × vessel-class factor), not a certified figure. GLEC recommends inflating shortest-distance by ~15% for real-world deviations — surface that as an option/note.
Notes
Motivation
Emissions reporting is the dominant commercial driver in this space (EU ETS, FuelEU Maritime, GLEC). The commercial Searoutes API leads with exactly two things we could offer in open source:
No open-source library does either today. Our architecture is already the right shape: the segment-vs-bbox intersection we use for passage detection extends naturally to zone-distance.
Proposal
Phase 1 — ECA/SECA distance:
Add ECA/SECA zone polygons; sum the route length that falls inside them (reuse/extend the segment-intersection logic).
Phase 2 — CO₂e (opt-in):
Document clearly as an estimate (distance × vessel-class factor), not a certified figure. GLEC recommends inflating shortest-distance by ~15% for real-world deviations — surface that as an option/note.
Notes