25 lines
549 B
Python
25 lines
549 B
Python
import json
|
|
|
|
import pyproj
|
|
from shapely.geometry import LineString
|
|
from shapely.ops import transform
|
|
from functools import partial
|
|
|
|
from analysis.util import json_path
|
|
|
|
|
|
def distance(track):
|
|
project = partial(
|
|
pyproj.transform,
|
|
pyproj.Proj(init='EPSG:4326'),
|
|
pyproj.Proj(init='EPSG:32633'))
|
|
return transform(project, track).length
|
|
|
|
|
|
def json_to_track(geojson, path):
|
|
return LineString(json_path(json.loads(geojson), path))
|
|
|
|
|
|
def calc_distance(geojson: str, path="coordinates"):
|
|
track = json_to_track(geojson, path)
|
|
return distance(track) |