diff --git a/ogn/gateway/process.py b/ogn/gateway/process.py index d50554d..4366730 100644 --- a/ogn/gateway/process.py +++ b/ogn/gateway/process.py @@ -1,5 +1,7 @@ import logging +from mgrs import MGRS + from ogn.commands.dbutils import session from ogn.model import AircraftBeacon, ReceiverBeacon, Location from ogn.parser import parse, ParseError @@ -7,11 +9,13 @@ from datetime import datetime, timedelta logger = logging.getLogger(__name__) +myMGRS = MGRS() def replace_lonlat_with_wkt(message): location = Location(message['longitude'], message['latitude']) message['location_wkt'] = location.to_wkt() + message['location_mgrs'] = myMGRS.toMGRS(message['latitude'], message['longitude']) del message['latitude'] del message['longitude'] return message diff --git a/ogn/model/aircraft_beacon.py b/ogn/model/aircraft_beacon.py index 0929193..8e0c7de 100644 --- a/ogn/model/aircraft_beacon.py +++ b/ogn/model/aircraft_beacon.py @@ -40,6 +40,7 @@ class AircraftBeacon(Beacon): # Calculated values distance = Column(Float) + location_mgrs = Column(String(15), index=True) # Relations receiver_id = Column(Integer, ForeignKey('receiver.id', ondelete='SET NULL')) diff --git a/ogn/model/beacon.py b/ogn/model/beacon.py index d36dbe5..6ac44f7 100644 --- a/ogn/model/beacon.py +++ b/ogn/model/beacon.py @@ -28,6 +28,8 @@ class Beacon(AbstractConcreteBase, Base): beacon_type = None aprs_type = None + location_mgrs = None + @property def location(self): if self.location_wkt is None: diff --git a/setup.py b/setup.py index 79be068..75a313c 100644 --- a/setup.py +++ b/setup.py @@ -41,7 +41,8 @@ setup( 'geoalchemy2==0.4.0', 'shapely>=1.5.17,<1.6', 'ogn-client==0.8.0', - 'psycopg2==2.7.3.2' + 'psycopg2==2.7.3.2', + 'mgrs==1.3.5' ], extras_require={ 'dev': [