mirror of
https://github.com/flobz/psa_car_controller.git
synced 2026-08-21 17:06:18 +00:00
56 lines
1.8 KiB
Python
56 lines
1.8 KiB
Python
from typing import List
|
|
|
|
from dateutil.tz import tzlocal
|
|
from geojson import Feature, Point, FeatureCollection, MultiLineString
|
|
from geojson import dumps as geo_dumps
|
|
|
|
|
|
class Points():
|
|
def __init__(self, latitude, longitude):
|
|
self.latitude = latitude
|
|
self.longitude = longitude
|
|
|
|
def list(self):
|
|
return self.latitude, self.longitude
|
|
|
|
|
|
class Trips(list):
|
|
def __init__(self, *args):
|
|
list.__init__(self, *args)
|
|
|
|
def to_geo_json(self):
|
|
feature_collection = FeatureCollection(self)
|
|
return feature_collection
|
|
|
|
|
|
class Trip:
|
|
def __init__(self):
|
|
self.start_at = None
|
|
self.end_at = None
|
|
self.positions: List[Points] = []
|
|
self.speed_average = None
|
|
self.consumption = None
|
|
self.consumption_km = None
|
|
self.distance = None
|
|
self.duration = None
|
|
|
|
def add_points(self, longitude, latitude):
|
|
self.positions.append(Points(longitude, latitude))
|
|
|
|
def get_consumption(self):
|
|
return {
|
|
'date': self.start_at,
|
|
'consumption': self.consumption_km,
|
|
}
|
|
|
|
def to_geojson(self):
|
|
multi_line_string = MultiLineString(tuple(map(list, self.positions)))
|
|
return Feature(geometry=multi_line_string, properties={"start_at": self.start_at, "end_at": self.end_at,
|
|
"average speed": self.speed_average,
|
|
"average consumption": self.consumption_km})
|
|
|
|
def get_info(self):
|
|
res = {"start_at": self.start_at.astimezone(None).strftime("%x %X"), "end_at": self.end_at.astimezone(None).strftime("%x %X"), "duration": self.duration*60,
|
|
"speed_average": self.speed_average, "consumption_km": self.consumption_km, "distance": self.distance}
|
|
return res
|