I am performing an analysis using Python where I am trying to assign emissions properties of flights to individual cells in a 4x5 degree coordinate grid proportional to the length of the segment inside each grid cell.
My first pass at a solution using geopandas is something like:
flights['flight_length'] = flights['geometry'].length
intersection = gpd.overlay(flights, grid, how='intersection')
intersection['segment_length'] = intersection['geometry'].length
intersection['segment_emissions'] = intersection['emissions'] * (intersection['segment_length']/intersection['flight_length'])
However, the flight paths I have are line strings with only a start and end point and since shapely is only capable of working in Cartesian coordinates, the straight line between those points is not geodesic. I am looking for a method to intersect a geodesic line with a grid on the surface of the earth. Is there a projection that preserves the distance and intersection qualities that are important for this calculation? Or is there some other tool that is better suited to this problem?
Exact precision is not important here, so spherical approximations are acceptable. I also do not need the absolute segment length, just the relative length is needed.