From e921334b145ac19cd7b044c0c6f1bab9e5388e8a Mon Sep 17 00:00:00 2001 From: Chris Pham Date: Sat, 24 Feb 2018 13:11:07 -0800 Subject: [PATCH] Fit PEP and created Overlay class --- .../Framework/MapSystems/RoverMap.py | 60 ++++++++++++++++--- .../MapSystems/RoverMapCoordinator.py | 19 +++--- 2 files changed, 63 insertions(+), 16 deletions(-) diff --git a/software/ground_station/Framework/MapSystems/RoverMap.py b/software/ground_station/Framework/MapSystems/RoverMap.py index 7c98dea..68dd045 100644 --- a/software/ground_station/Framework/MapSystems/RoverMap.py +++ b/software/ground_station/Framework/MapSystems/RoverMap.py @@ -152,8 +152,8 @@ class GMapsStitcher(object): returns FLOAT(degrees) """ # Magic Lines, no idea - degrees = self.helper.pixels_to_degrees((iterator - self.num_tiles / 2) - * _TILESIZE, self.zoom) + degrees = self.helper.pixels_to_degrees( + (iterator - self.num_tiles / 2) * _TILESIZE, self.zoom) return math.degrees((lon_pixels + degrees - _EARTHPIX) / _PIXRAD) def _pixels_to_lat(self, iterator, lat_pixels): @@ -166,9 +166,9 @@ class GMapsStitcher(object): # Magic Lines return math.degrees(math.pi / 2 - 2 * math.atan(math.exp(((lat_pixels + self.helper.pixels_to_degrees( - (iterator - self.num_tiles / 2) - * _TILESIZE, self.zoom)) - - _EARTHPIX) / _PIXRAD))) + (iterator - self.num_tiles / + 2) * _TILESIZE, self.zoom)) - + _EARTHPIX) / _PIXRAD))) def fetch_tiles(self): """ @@ -230,7 +230,8 @@ class GMapsStitcher(object): """ new_value = self.left_x - diff - if not new_value > 0 and (new_value < self.big_image.size[0] - self.width): + if ((not new_value > 0) and + (new_value < self.big_image.size[0] - self.width)): return self.left_x else: return new_value @@ -241,7 +242,8 @@ class GMapsStitcher(object): """ new_value = self.upper_y - diff - if not new_value > 0 and (new_value < self.big_image.size[1] - self.height): + if ((not new_value > 0) and + (new_value < self.big_image.size[1] - self.height)): return self.upper_y else: return new_value @@ -332,3 +334,47 @@ class GMapsStitcher(object): def connect_signals_and_slots(self): pass + + +class OverlayImage(object): + def __init__(self, lat, long, northwest, southeast, width, height): + self.northwest = northwest + self.southeast = southeast + self.latitude = lat + self.longitude = long + self.width = width + self.height = height + self.big_image = None + self.display_image = None + + def _get_cartesian(self, lat, lon): + """ + Helper for getting the x, y given lat and lon + + returns INT, INT (x, y) + """ + viewport_lat_nw, viewport_lon_nw = self.northwest + viewport_lat_se, viewport_lon_se = self.southeast + # print "Lat:", viewport_lat_nw, viewport_lat_se + # print "Lon:", viewport_lon_nw, viewport_lon_se + + viewport_lat_diff = viewport_lat_nw - viewport_lat_se + viewport_lon_diff = viewport_lon_se - viewport_lon_nw + + # print viewport_lon_diff, viewport_lat_diff + + bigimage_width = self.width + bigimage_height = self.height + + pixel_per_lat = bigimage_height / viewport_lat_diff + pixel_per_lon = bigimage_width / viewport_lon_diff + # print "Pixel per:", pixel_per_lat, pixel_per_lon + + new_lat_gps_range_percentage = (viewport_lat_nw - lat) + new_lon_gps_range_percentage = (lon - viewport_lon_nw) + # print lon, viewport_lon_se + + x = new_lon_gps_range_percentage * pixel_per_lon + y = new_lat_gps_range_percentage * pixel_per_lat + + return int(x), int(y) diff --git a/software/ground_station/Framework/MapSystems/RoverMapCoordinator.py b/software/ground_station/Framework/MapSystems/RoverMapCoordinator.py index c9ca192..e2686a8 100644 --- a/software/ground_station/Framework/MapSystems/RoverMapCoordinator.py +++ b/software/ground_station/Framework/MapSystems/RoverMapCoordinator.py @@ -43,7 +43,7 @@ class RoverMapCoordinator(QtCore.QThread): def run(self): self.logger.debug("Starting Map Coordinator Thread") - + while self.run_thread_flag: if self.setup_map_flag: self._map_setup() @@ -55,7 +55,7 @@ class RoverMapCoordinator(QtCore.QThread): self.logger.debug("Stopping Map Coordinator Thread") def _setup_map_threads(self): - self.google_maps_object = RoverMap.GMapsStitcher(1280, + self.google_maps_object = RoverMap.GMapsStitcher(1280, 720, 44.567161, -123.278432, @@ -64,19 +64,20 @@ class RoverMapCoordinator(QtCore.QThread): None, 20) def _map_setup(self): - self.google_maps_object = RoverMap.GMapsStitcher(1280, + self.google_maps_object = RoverMap.GMapsStitcher(1280, 720, 44.567161, -123.278432, 18, 'terrain', None, 20) + def _get_map_image(self): - self.map_image = self.google_maps_object.display_image - # get overlay here - qim = ImageQt(self.map_image) - self.map_pixmap = QtGui.QPixmap.fromImage(qim) - self.pixmap_ready_signal.emit() + self.map_image = self.google_maps_object.display_image + # get overlay here + qim = ImageQt(self.map_image) + self.map_pixmap = QtGui.QPixmap.fromImage(qim) + self.pixmap_ready_signal.emit() def connect_signals_and_slots(self): self.pixmap_ready_signal.connect(self.pixmap_ready__slot) @@ -84,7 +85,7 @@ class RoverMapCoordinator(QtCore.QThread): def on_kill_threads_requested_slot(self): self.run_thread_flag = False - def setup_signals(self, start_signal, signals_and_slots_signal, + def setup_signals(self, start_signal, signals_and_slots_signal, kill_signal): start_signal.connect(self.start) signals_and_slots_signal.connect(self.connect_signals_and_slots)