project/analysis/util/geo.py

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)