From 6834673e28d394c5bdd352824e3650869c12b576 Mon Sep 17 00:00:00 2001 From: Christian Jacobs Date: Wed, 28 Mar 2018 18:31:43 +0100 Subject: [PATCH] Add option to return a 6-character Maidenhead locator. --- pyqso/world_map.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/pyqso/world_map.py b/pyqso/world_map.py index f04a09a..7c88f88 100644 --- a/pyqso/world_map.py +++ b/pyqso/world_map.py @@ -82,12 +82,13 @@ class Maidenhead: self.lower = "abcdefghijklmnopqrstuvwx" return - def ll2gs(self, latitude, longitude): + def ll2gs(self, latitude, longitude, subsquare=False): """ Convert latitude-longitude coordinates to a Maidenhead grid square locator. This is based on the code by Walter Underwood, K6WRU (https://ham.stackexchange.com/questions/221/how-can-one-convert-from-lat-long-to-grid-square). :arg float latitude: The latitude. :arg float longitude: The longitude. + :arg bool subsquare: Option to include the subsquare (thereby obtaining a 6-character Maidenhead locator). :rtype: str :returns: The Maidenhead grid square locator. """ @@ -99,7 +100,14 @@ class Maidenhead: square_latitude = int(adjusted_latitude % 10) square_longitude = int((adjusted_longitude/2) % 10) - return ("%s"*4) % (field_longitude, field_latitude, square_longitude, square_latitude) + if(subsquare): + adjusted_latitude_remainder = (adjusted_latitude - int(adjusted_latitude)) * 60 + adjusted_longitude_remainder = ((adjusted_longitude) - int(adjusted_longitude/2)*2) * 60 + subsquare_latitude = self.lower[int(adjusted_latitude_remainder/2.5)] + subsquare_longitude = self.lower[int(adjusted_longitude_remainder/5)] + return ("%s"*6) % (field_longitude, field_latitude, square_longitude, square_latitude, subsquare_longitude, subsquare_latitude) + else: + return ("%s"*4) % (field_longitude, field_latitude, square_longitude, square_latitude) def gs2ll(self, grid_square): """ Convert a Maidenhead grid square locator to latitude-longitude coordinates.