Loading autocnet/fileio/io_gdal.py +27 −13 Original line number Diff line number Diff line import json import warnings import pvl import os Loading Loading @@ -202,14 +203,19 @@ class GeoDataset(object): @property def latlon_extent(self): if not getattr(self, '_latlon_extent', None): try: fp = self.footprint # If we have a footprint, no need to compute pixel to latlon lowerlon, upperlon, lowerlat, upperlat = self.footprint.GetEnvelope() lowerlat, upperlat, lowerlon, upperlon = fp.GetEnvelope() except: xy_extent = self.xy_extent lowerlat, lowerlon = self.pixel_to_latlon(xy_extent[0][0], xy_extent[0][1]) upperlat, upperlon = self.pixel_to_latlon(xy_extent[1][0], xy_extent[1][1]) geom = {"type": "Polygon", "coordinates": [[[lowerlat, lowerlon], [lowerlat, upperlon], [upperlat, upperlon], [upperlat, lowerlon], [lowerlat, lowerlon]]]} self._latlon_extent = [(lowerlat, lowerlon), (upperlat, upperlon)] return self._latlon_extent Loading Loading @@ -237,14 +243,18 @@ class GeoDataset(object): stream = str(f.read(num_polygon_bytes)) self._footprint = ogr.CreateGeometryFromWkt(stream) except: # Handle GDAL here llat, llon, ulat, ulon = self.latlon_extent geom = {"type": "Polygon", "coordinates": [[llat, llon], [llat, ulon], [ulat, ulon], [llon, ulat], [llat, llon]]} # I dislike that this is copied from latlonext, but am unsure # how to avoid the cyclical footprint to latlon_extent property hits. xy_extent = self.xy_extent lowerlat, lowerlon = self.pixel_to_latlon(xy_extent[0][0], xy_extent[0][1]) upperlat, upperlon = self.pixel_to_latlon(xy_extent[1][0], xy_extent[1][1]) geom = {"type": "Polygon", "coordinates": [[[lowerlat, lowerlon], [lowerlat, upperlon], [upperlat, upperlon], [upperlat, lowerlon], [lowerlat, lowerlon]]]} self._footprint = ogr.CreateGeometryFromJson(json.dumps(geom)) return self._footprint @property Loading Loading @@ -375,10 +385,14 @@ class GeoDataset(object): (Latitude, Longitude) corresponding to the given (x,y). """ try: geotransform = self.geotransform x = geotransform[0] + (x * geotransform[1]) + (y * geotransform[2]) y = geotransform[3] + (x * geotransform[4]) + (y * geotransform[5]) lon, lat, _ = self.coordinate_transformation.TransformPoint(x, y) except: lat = lon = None warnings.warn('Unable to compute pixel to geographic conversion without projection information.') return lat, lon Loading autocnet/fileio/tests/test_io_gdal.py +1 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ class TestMercator(unittest.TestCase): self.assertEqual(xy_extent, [(0.0, 3921610.0), (10667520.0, -3921610.0)]) def test_latlon_extent(self): self.assertEqual(self.dataset.latlon_extent, [(-90.0, 0.0), (90.0, -150.4067721290261)]) self.assertEqual(self.dataset.latlon_extent, [(-90, -150.4067721290261), (90.0, 0.0)]) def test_spheroid(self): sphere = self.dataset.spheroid Loading Loading @@ -121,8 +121,6 @@ class TestLambert(unittest.TestCase): xy_extent = self.dataset.xy_extent self.assertEqual(xy_extent, [(-464400.0, -506970.0), (460530.0, -1571220.0)]) def test_latlon_extent(self): self.assertEqual(self.dataset.latlon_extent, [(-89.95903191125286, -140.8933768668104),(-89.98515758604582, -148.48059053073257)]) class TestPolar(unittest.TestCase): def setUp(self): Loading autocnet/graph/tests/test_network.py +2 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ class TestCandidateGraph(unittest.TestCase): def tearDown(self): pass ''' class TestFromList(unittest.TestCase): @classmethod def setUpClass(cls): Loading @@ -78,7 +78,7 @@ class TestFromList(unittest.TestCase): self.assertEqual(self.graph.__len__(), 3) self.assertEqual(self.graph.number_of_nodes(), 3) ''' class TestFromListCubes(unittest.TestCase): @classmethod Loading Loading
autocnet/fileio/io_gdal.py +27 −13 Original line number Diff line number Diff line import json import warnings import pvl import os Loading Loading @@ -202,14 +203,19 @@ class GeoDataset(object): @property def latlon_extent(self): if not getattr(self, '_latlon_extent', None): try: fp = self.footprint # If we have a footprint, no need to compute pixel to latlon lowerlon, upperlon, lowerlat, upperlat = self.footprint.GetEnvelope() lowerlat, upperlat, lowerlon, upperlon = fp.GetEnvelope() except: xy_extent = self.xy_extent lowerlat, lowerlon = self.pixel_to_latlon(xy_extent[0][0], xy_extent[0][1]) upperlat, upperlon = self.pixel_to_latlon(xy_extent[1][0], xy_extent[1][1]) geom = {"type": "Polygon", "coordinates": [[[lowerlat, lowerlon], [lowerlat, upperlon], [upperlat, upperlon], [upperlat, lowerlon], [lowerlat, lowerlon]]]} self._latlon_extent = [(lowerlat, lowerlon), (upperlat, upperlon)] return self._latlon_extent Loading Loading @@ -237,14 +243,18 @@ class GeoDataset(object): stream = str(f.read(num_polygon_bytes)) self._footprint = ogr.CreateGeometryFromWkt(stream) except: # Handle GDAL here llat, llon, ulat, ulon = self.latlon_extent geom = {"type": "Polygon", "coordinates": [[llat, llon], [llat, ulon], [ulat, ulon], [llon, ulat], [llat, llon]]} # I dislike that this is copied from latlonext, but am unsure # how to avoid the cyclical footprint to latlon_extent property hits. xy_extent = self.xy_extent lowerlat, lowerlon = self.pixel_to_latlon(xy_extent[0][0], xy_extent[0][1]) upperlat, upperlon = self.pixel_to_latlon(xy_extent[1][0], xy_extent[1][1]) geom = {"type": "Polygon", "coordinates": [[[lowerlat, lowerlon], [lowerlat, upperlon], [upperlat, upperlon], [upperlat, lowerlon], [lowerlat, lowerlon]]]} self._footprint = ogr.CreateGeometryFromJson(json.dumps(geom)) return self._footprint @property Loading Loading @@ -375,10 +385,14 @@ class GeoDataset(object): (Latitude, Longitude) corresponding to the given (x,y). """ try: geotransform = self.geotransform x = geotransform[0] + (x * geotransform[1]) + (y * geotransform[2]) y = geotransform[3] + (x * geotransform[4]) + (y * geotransform[5]) lon, lat, _ = self.coordinate_transformation.TransformPoint(x, y) except: lat = lon = None warnings.warn('Unable to compute pixel to geographic conversion without projection information.') return lat, lon Loading
autocnet/fileio/tests/test_io_gdal.py +1 −3 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ class TestMercator(unittest.TestCase): self.assertEqual(xy_extent, [(0.0, 3921610.0), (10667520.0, -3921610.0)]) def test_latlon_extent(self): self.assertEqual(self.dataset.latlon_extent, [(-90.0, 0.0), (90.0, -150.4067721290261)]) self.assertEqual(self.dataset.latlon_extent, [(-90, -150.4067721290261), (90.0, 0.0)]) def test_spheroid(self): sphere = self.dataset.spheroid Loading Loading @@ -121,8 +121,6 @@ class TestLambert(unittest.TestCase): xy_extent = self.dataset.xy_extent self.assertEqual(xy_extent, [(-464400.0, -506970.0), (460530.0, -1571220.0)]) def test_latlon_extent(self): self.assertEqual(self.dataset.latlon_extent, [(-89.95903191125286, -140.8933768668104),(-89.98515758604582, -148.48059053073257)]) class TestPolar(unittest.TestCase): def setUp(self): Loading
autocnet/graph/tests/test_network.py +2 −2 Original line number Diff line number Diff line Loading @@ -65,7 +65,7 @@ class TestCandidateGraph(unittest.TestCase): def tearDown(self): pass ''' class TestFromList(unittest.TestCase): @classmethod def setUpClass(cls): Loading @@ -78,7 +78,7 @@ class TestFromList(unittest.TestCase): self.assertEqual(self.graph.__len__(), 3) self.assertEqual(self.graph.number_of_nodes(), 3) ''' class TestFromListCubes(unittest.TestCase): @classmethod Loading