diff --git a/README.md b/README.md index e0cd9e7..5c0912e 100644 --- a/README.md +++ b/README.md @@ -124,8 +124,7 @@ available commands: show Show a logbook for . [stats] - create_flights Create Flights. - create_stats Create DeviceStats, ReceiverStats and RelationStats. + create Create DeviceStats, ReceiverStats and RelationStats. update_devices Update devices with data from stats. update_receivers Update receivers with data from stats. ``` diff --git a/ogn/commands/stats.py b/ogn/commands/stats.py index 950083e..42b4c6d 100644 --- a/ogn/commands/stats.py +++ b/ogn/commands/stats.py @@ -12,7 +12,7 @@ manager = Manager() @manager.command -def create_stats(start=None, end=None): +def create(start=None, end=None): """Create DeviceStats, ReceiverStats and RelationStats.""" days = get_database_days(start, end) @@ -41,74 +41,3 @@ def update_devices(): result = update_devices_command(session=session) print(result) - - -@manager.command -def create_flights(start=None, end=None): - """Create Flights.""" - - days = get_database_days(start, end) - - pbar = tqdm(days) - for single_date in pbar: - pbar.set_description(datetime.strftime(single_date, '%Y-%m-%d')) - result = _create_flights2d(session=session, date=single_date) - - -def _create_flights2d(session=None, date=None): - SQL = """ - INSERT INTO flights2d - ( - date, - device_id, - path - ) - SELECT sq5.date, - sq5.device_id, - st_collect(sq5.linestring ORDER BY sq5.part) multilinestring - FROM ( - SELECT sq4.timestamp::date AS date, - sq4.device_id, - sq4.part, - st_makeline(sq4.location ORDER BY sq4.timestamp) linestring - FROM ( - SELECT sq3.timestamp, - sq3.location, - sq3.device_id, - sum(sq3.ping) OVER (partition BY sq3.timestamp::date, sq3.device_id ORDER BY sq3.timestamp) part - FROM ( - SELECT sq2.t1 AS timestamp, - sq2.l1 AS location, - sq2.d1 device_id, - CASE - WHEN sq2.t1 - sq2.t2 < interval'100s' - AND st_distancesphere(sq2.l1, sq2.l2) < 1000 THEN 0 - ELSE 1 - END AS ping - FROM ( - SELECT sq.timestamp t1, - lag(sq.timestamp) OVER (partition BY sq.timestamp::date, sq.device_id ORDER BY sq.timestamp) t2, - sq.location l1, - lag(sq.location) OVER (partition BY sq.timestamp::date, sq.device_id ORDER BY sq.timestamp) l2, - sq.device_id d1, - lag(sq.device_id) OVER (partition BY sq.timestamp::date, sq.device_id ORDER BY sq.timestamp) d2 - FROM ( - SELECT timestamp, - device_id, - location, - row_number() OVER (partition BY timestamp::date, device_id, timestamp ORDER BY error_count) message_number - FROM aircraft_beacons - WHERE timestamp::date = '{}' ) sq - WHERE sq.message_number = 1 ) sq2 ) sq3 ) sq4 - GROUP BY sq4.timestamp::date, - sq4.device_id, - sq4.part ) sq5 - GROUP BY sq5.date, - sq5.device_id - ON CONFLICT DO NOTHING; - """ - - result = session.execute(SQL.format(date.strftime("%Y-%m-%d"))) - insert_counter = result.rowcount - session.commit() - return "Inserted {} Flights for {}".format(insert_counter, date.strftime("%Y-%m-%d"))