Commit f6b6b0c0 authored by jlaura's avatar jlaura
Browse files

Merge pull request #62 from jlaura/master

Fixes fromfilelist for non cube formats
parents a8acf81e 6701c373
Loading
Loading
Loading
Loading
+27 −13
Original line number Diff line number Diff line
import json
import warnings

import pvl
import os
@@ -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

@@ -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
@@ -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

+1 −3
Original line number Diff line number Diff line
@@ -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
@@ -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):
+2 −2
Original line number Diff line number Diff line
@@ -65,7 +65,7 @@ class TestCandidateGraph(unittest.TestCase):
    def tearDown(self):
        pass

'''

class TestFromList(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
@@ -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