kopia lustrzana https://github.com/glidernet/ogn-python
Refactoring
rodzic
3b074ff0b1
commit
a76bcc1750
|
@ -1,16 +1,12 @@
|
|||
from ogn.commands.dbutils import engine, session
|
||||
from ogn.model import Base, AddressOrigin, AircraftBeacon, ReceiverBeacon, Device, Receiver
|
||||
from ogn.utils import get_airports, open_file
|
||||
from ogn.collect.database import update_device_infos
|
||||
from ogn.gateway.process import message_to_beacon
|
||||
|
||||
from sqlalchemy import insert, distinct
|
||||
from sqlalchemy.sql import null
|
||||
|
||||
import os
|
||||
|
||||
|
||||
from manager import Manager
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.gateway.process import message_to_beacon
|
||||
from ogn.model import AircraftBeacon, ReceiverBeacon
|
||||
from ogn.utils import open_file
|
||||
|
||||
|
||||
manager = Manager()
|
||||
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
from manager import Manager
|
||||
from ogn.collect.database import update_device_infos
|
||||
from ogn.commands.dbutils import engine, session
|
||||
from ogn.model import Base, AddressOrigin, AircraftBeacon, ReceiverBeacon, Device, Receiver
|
||||
from ogn.utils import get_airports, open_file
|
||||
from ogn.collect.database import update_device_infos
|
||||
|
||||
from ogn.utils import get_airports
|
||||
from sqlalchemy import insert, distinct
|
||||
from sqlalchemy.sql import null
|
||||
|
||||
from manager import Manager
|
||||
|
||||
manager = Manager()
|
||||
|
||||
ALEMBIC_CONFIG_FILE = "alembic.ini"
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
import os
|
||||
import importlib
|
||||
import os
|
||||
|
||||
from sqlalchemy import create_engine
|
||||
from sqlalchemy.orm import sessionmaker
|
||||
|
|
|
@ -1,18 +1,12 @@
|
|||
from sqlalchemy.sql import func
|
||||
from sqlalchemy import and_, or_
|
||||
from sqlalchemy.orm import aliased
|
||||
|
||||
from ogn.model import AircraftBeacon, Device
|
||||
|
||||
from ogn.commands.dbutils import session
|
||||
|
||||
from aerofiles.igc import Writer
|
||||
|
||||
import datetime
|
||||
import re
|
||||
|
||||
|
||||
from aerofiles.igc import Writer
|
||||
from manager import Manager
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.model import AircraftBeacon, Device
|
||||
|
||||
|
||||
manager = Manager()
|
||||
|
||||
|
||||
|
@ -34,7 +28,7 @@ def write(address, date):
|
|||
.first()
|
||||
|
||||
if (device_id is None):
|
||||
print ("Device with address '{}' not found.".format(address))
|
||||
print("Device with address '{}' not found.".format(address))
|
||||
return
|
||||
|
||||
with open('sample.igc', 'wb') as fp:
|
||||
|
|
|
@ -2,17 +2,16 @@
|
|||
|
||||
from datetime import timedelta, datetime
|
||||
|
||||
from sqlalchemy.sql import func
|
||||
from manager import Manager
|
||||
from ogn.collect.logbook import compute_logbook_entries
|
||||
from ogn.collect.takeoff_landing import compute_takeoff_and_landing
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.model import Device, DeviceInfo, TakeoffLanding, Airport, Logbook
|
||||
from sqlalchemy import and_, or_
|
||||
from sqlalchemy.orm import aliased
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
from ogn.model import Device, DeviceInfo, TakeoffLanding, Airport, Logbook
|
||||
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.collect.takeoff_landing import compute_takeoff_and_landing
|
||||
from ogn.collect.logbook import compute_logbook_entries
|
||||
|
||||
from manager import Manager
|
||||
manager = Manager()
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
from ogn.model import Airport
|
||||
from ogn.commands.dbutils import session
|
||||
|
||||
from manager import Manager
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.model import Airport
|
||||
from sqlalchemy import and_, between
|
||||
|
||||
|
||||
manager = Manager()
|
||||
|
||||
|
||||
|
|
|
@ -1,9 +1,10 @@
|
|||
from manager import Manager
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.model import AddressOrigin
|
||||
from ogn.model.device_info import DeviceInfo
|
||||
from sqlalchemy import func, and_, true, false
|
||||
|
||||
from manager import Manager
|
||||
from ogn.model.device_info import DeviceInfo
|
||||
|
||||
manager = Manager()
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
from manager import Manager
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.model import Device, AircraftType
|
||||
from sqlalchemy import func
|
||||
|
||||
from manager import Manager
|
||||
|
||||
manager = Manager()
|
||||
|
||||
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
from datetime import datetime, timedelta
|
||||
from sqlalchemy.sql import func
|
||||
from sqlalchemy import distinct, and_
|
||||
|
||||
from ogn.model import ReceiverBeacon, Receiver
|
||||
from ogn.commands.dbutils import session
|
||||
|
||||
from manager import Manager
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.model import ReceiverBeacon, Receiver
|
||||
from sqlalchemy import distinct, and_
|
||||
from sqlalchemy.sql import func
|
||||
|
||||
|
||||
manager = Manager()
|
||||
|
||||
receiver_beacons_per_day = 24 * 60 / 5
|
||||
|
|
|
@ -1,13 +1,9 @@
|
|||
import logging
|
||||
|
||||
from ogn.client import AprsClient
|
||||
from ogn.gateway.process import process_beacon, message_to_beacon
|
||||
from datetime import datetime
|
||||
from manager import Manager
|
||||
from ogn.model import AircraftBeacon, ReceiverBeacon
|
||||
from ogn.client import AprsClient
|
||||
from ogn.gateway.process import process_beacon
|
||||
|
||||
from ogn.utils import open_file
|
||||
import os
|
||||
|
||||
manager = Manager()
|
||||
|
||||
|
|
|
@ -1,7 +1,9 @@
|
|||
import logging
|
||||
|
||||
from ogn.commands.dbutils import session
|
||||
from ogn.model import AircraftBeacon, ReceiverBeacon, Location
|
||||
from ogn.parser import parse_aprs, parse_ogn_receiver_beacon, parse_ogn_aircraft_beacon, ParseError
|
||||
from ogn.parser import parse, ParseError
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
@ -19,33 +21,16 @@ def message_to_beacon(raw_message, reference_date):
|
|||
|
||||
if raw_message[0] != '#':
|
||||
try:
|
||||
message = parse_aprs(raw_message, reference_date)
|
||||
# symboltable / symbolcodes used by OGN:
|
||||
# I&: used as receiver
|
||||
# /X: helicopter_rotorcraft
|
||||
# /': glider_or_motorglider
|
||||
# \^: powered_aircraft
|
||||
# /g: para_glider
|
||||
# /O: ?
|
||||
# /^: ?
|
||||
# \n: ?
|
||||
# /z: ?
|
||||
# /o: ?
|
||||
if 'symboltable' not in message and 'symbolcode' not in message:
|
||||
# we have a receiver_beacon (status message)
|
||||
message.update(parse_ogn_receiver_beacon(message['comment']))
|
||||
beacon = ReceiverBeacon(**message)
|
||||
elif message['symboltable'] == "I" and message['symbolcode'] == '&':
|
||||
# ... we have a receiver_beacon
|
||||
if message['comment']:
|
||||
message.update(parse_ogn_receiver_beacon(message['comment']))
|
||||
message = parse(raw_message, reference_date)
|
||||
if message['aprs_type'] == 'position':
|
||||
message = replace_lonlat_with_wkt(message)
|
||||
|
||||
if message['beacon_type'] == 'aircraft_beacon':
|
||||
beacon = AircraftBeacon(**message)
|
||||
elif message['beacon_type'] == 'receiver_beacon':
|
||||
beacon = ReceiverBeacon(**message)
|
||||
else:
|
||||
# ... we have a aircraft_beacon
|
||||
message.update(parse_ogn_aircraft_beacon(message['comment']))
|
||||
message = replace_lonlat_with_wkt(message)
|
||||
beacon = AircraftBeacon(**message)
|
||||
print("Whoops: what is this: {}".format(message))
|
||||
except ParseError as e:
|
||||
logger.error('Received message: {}'.format(raw_message))
|
||||
logger.error('Drop packet, {}'.format(e.message))
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from geoalchemy2.types import Geometry
|
||||
from sqlalchemy import Column, String, Integer, Float, SmallInteger
|
||||
from sqlalchemy.orm import relationship
|
||||
from geoalchemy2.types import Geometry
|
||||
|
||||
from .base import Base
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from geoalchemy2.shape import to_shape
|
||||
from geoalchemy2.types import Geometry
|
||||
from sqlalchemy import Column, String, Integer, Float, DateTime
|
||||
from sqlalchemy.ext.declarative import AbstractConcreteBase
|
||||
from geoalchemy2.types import Geometry
|
||||
from geoalchemy2.shape import to_shape
|
||||
|
||||
from .base import Base
|
||||
from .geo import Location
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
from sqlalchemy import Integer, DateTime, Column, ForeignKey, case, null
|
||||
from sqlalchemy.ext.hybrid import hybrid_property
|
||||
from sqlalchemy.orm import relationship
|
||||
|
||||
from .base import Base
|
||||
from sqlalchemy.ext.hybrid import hybrid_property
|
||||
|
||||
|
||||
class Logbook(Base):
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
from geoalchemy2.shape import to_shape
|
||||
from geoalchemy2.types import Geometry
|
||||
from sqlalchemy import Column, String, Integer, DateTime
|
||||
from sqlalchemy.orm import relationship
|
||||
from geoalchemy2.types import Geometry
|
||||
from geoalchemy2.shape import to_shape
|
||||
|
||||
from .base import Base
|
||||
from .geo import Location
|
||||
|
|
17
ogn/utils.py
17
ogn/utils.py
|
@ -1,16 +1,15 @@
|
|||
import requests
|
||||
import csv
|
||||
import gzip
|
||||
from io import StringIO
|
||||
|
||||
from aerofiles.seeyou import Reader
|
||||
from geopy.exc import GeopyError
|
||||
from geopy.geocoders import Nominatim
|
||||
from ogn.parser.utils import feet2m
|
||||
import requests
|
||||
|
||||
from .model import AddressOrigin, DeviceInfo, Airport, Location
|
||||
|
||||
from geopy.geocoders import Nominatim
|
||||
from geopy.exc import GeopyError
|
||||
|
||||
from aerofiles.seeyou import Reader
|
||||
from ogn.parser.utils import feet2m
|
||||
|
||||
import gzip
|
||||
|
||||
DDB_URL = "http://ddb.glidernet.org/download/?t=1"
|
||||
|
||||
|
@ -108,7 +107,7 @@ def get_airports(cupfile):
|
|||
|
||||
def open_file(filename):
|
||||
"""Opens a regular or unzipped textfile for reading."""
|
||||
f = open(filename,'rb')
|
||||
f = open(filename, 'rb')
|
||||
a = f.read(2)
|
||||
f.close()
|
||||
if (a == b'\x1f\x8b'):
|
||||
|
|
Ładowanie…
Reference in New Issue