示例#1
0
 def test_get_border_dateline(self):
     dom = Domain('+proj=stere +datum=WGS84 +ellps=WGS84 +lat_0=0 +lon_0=-179 +no_defs',
                  '-te -1000000 -1000 1000000 1000 -ts 10 10')
     brd = dom.get_border()
     self.assertTrue(np.all(brd[0] > 0))
     brd = dom.get_border(fix_lon=False)
     self.assertTrue(brd[0].min() < 0)
示例#2
0
 def test_get_border_dateline(self):
     dom = Domain('+proj=stere +datum=WGS84 +ellps=WGS84 +lat_0=0 +lon_0=-179 +no_defs',
                  '-te -1000000 -1000 1000000 1000 -ts 10 10')
     brd = dom.get_border()
     self.assertTrue(np.all(brd[0] > 0))
     brd = dom.get_border(fix_lon=False)
     self.assertTrue(brd[0].min() < 0)
示例#3
0
 def test_reproject_gcps(self):
     ds = gdal.Open(self.test_file)
     d = Domain(ds=ds)
     d.reproject_gcps('+proj=stere +datum=WGS84 +ellps=WGS84 +lat_0=75 +lon_0=10 +no_defs')
     gcp = d.vrt.dataset.GetGCPs()[0]
     self.assertTrue(gcp.GCPX > 636161)
     self.assertTrue(gcp.GCPY < -288344)
示例#4
0
 def test_get_geolocation_grids_from_geolocationArray(self):
     lat, lon = np.mgrid[25:35:0.02, 70:72:0.004]
     d = Domain(lon=lon, lat=lat)
     lon, lat = d.get_geolocation_grids()
     self.assertEqual(type(lon), np.ndarray)
     self.assertEqual(type(lat), np.ndarray)
     self.assertEqual(lat.shape, (500, 500))
示例#5
0
 def test_get_geolocation_grids_from_GDAL_transformer(
         self, mock_transform_points):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     lon, lat = d.get_geolocation_grids()
     self.assertEqual(type(lon), np.ndarray)
     self.assertEqual(type(lat), np.ndarray)
     self.assertEqual(lat.shape, (500, 500))
示例#6
0
    def test_reproject_GCPs_auto(self):
        ds = gdal.Open(self.test_file)
        d = Domain(ds=ds)
        d.reproject_GCPs()

        gcpproj = NSR(d.vrt.dataset.GetGCPProjection())
        self.assertEqual(gcpproj.GetAttrValue("PROJECTION"), "Stereographic")
示例#7
0
 def test_get_geolocation_grids_from_geolocationArray(self):
     lat, lon = np.mgrid[25:35:0.02, 70:72:0.004]
     d = Domain(lon=lon, lat=lat)
     lon, lat = d.get_geolocation_grids()
     self.assertEqual(type(lon), np.ndarray)
     self.assertEqual(type(lat), np.ndarray)
     self.assertEqual(lat.shape, (500, 500))
示例#8
0
    def test_get_geolocation_grids(self):
        d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
        lon, lat = d.get_geolocation_grids()

        self.assertEqual(type(lon), np.ndarray)
        self.assertEqual(type(lat), np.ndarray)
        self.assertEqual(lat.shape, (500, 500))
示例#9
0
    def test_reproject_GCPs_auto(self):
        ds = gdal.Open(self.test_file)
        d = Domain(ds=ds)
        d.reproject_GCPs()

        gcpproj = NSR(d.vrt.dataset.GetGCPProjection())
        self.assertEqual(gcpproj.GetAttrValue('PROJECTION'), 'Stereographic')
示例#10
0
    def test_get_geolocation_grids(self):
        d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
        lon, lat = d.get_geolocation_grids()

        self.assertEqual(type(lon), np.ndarray)
        self.assertEqual(type(lat), np.ndarray)
        self.assertEqual(lat.shape, (500, 500))
示例#11
0
 def test_reproject_gcps(self):
     ds = gdal.Open(self.test_file)
     d = Domain(ds=ds)
     d.reproject_gcps('+proj=stere +datum=WGS84 +ellps=WGS84 +lat_0=75 +lon_0=10 +no_defs')
     gcp = d.vrt.dataset.GetGCPs()[0]
     self.assertTrue(gcp.GCPX > 636161)
     self.assertTrue(gcp.GCPY < -288344)
示例#12
0
 def test_write_domain_map__basemap_missing(self):
     plt.switch_backend('Agg')
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     border = d.get_border()
     tmpfilename = os.path.join(ntd.tmp_data_path, 'domain_write_map.png')
     with self.assertRaises(ImportError):
         write_domain_map(border, tmpfilename, labels=['Patch1'])
示例#13
0
 def test_write_map(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     tmpfilename = os.path.join(ntd.tmp_data_path, 'domain_write_map.png')
     d.write_map(tmpfilename)
     self.assertTrue(os.path.exists(tmpfilename))
     i = Image.open(tmpfilename)
     i.verify()
     self.assertEqual(i.info['dpi'], (50, 50))
示例#14
0
 def test_get_row_col_vector(self):
     test_1 = Domain._get_row_col_vector(250, 500)
     self.assertIsInstance(test_1, list)
     self.assertEqual(test_1, list(range(251)))
     self.assertEqual(len(test_1), 251)
     test_2 = Domain._get_row_col_vector(500, 10)
     self.assertEqual(test_2, list(range(0, 550, 50)))
     self.assertEqual(len(test_2), 10 + 1)
示例#15
0
 def test_get_row_col_vector(self):
     test_1 = Domain._get_row_col_vector(250, 500)
     self.assertIsInstance(test_1, list)
     self.assertEqual(test_1, list(range(251)))
     self.assertEqual(len(test_1), 251)
     test_2 = Domain._get_row_col_vector(500, 10)
     self.assertEqual(test_2, list(range(0, 550, 50)))
     self.assertEqual(len(test_2), 10 + 1)
示例#16
0
    def test_write_map_labels(self):
        d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
        tmpfilename = os.path.join(ntd.tmp_data_path, "domain_write_map_labels.png")
        d.write_map(tmpfilename, merLabels=[False, False, False, True], parLabels=[True, False, False, False])

        self.assertTrue(os.path.exists(tmpfilename))
        i = Image.open(tmpfilename)
        i.verify()
示例#17
0
    def test_transform_points_dstsrs(self):
        d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
        lon, lat = d.transform_points(
            [1, 2, 3], [1, 2, 3], dstSRS=NSR("+proj=stere +datum=WGS84 +ellps=WGS84 +lat_0=75 +lon_0=10 +no_defs")
        )

        self.assertEqual(type(lon), np.ndarray)
        self.assertEqual(type(lat), np.ndarray)
示例#18
0
    def test_get_border(self):
        d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
        lon, lat = d.get_border()

        self.assertEqual(type(lon), np.ndarray)
        self.assertEqual(type(lat), np.ndarray)
        self.assertEqual(len(lat), 44)
        self.assertEqual(lat[0], lat[-1])
        self.assertEqual(lon[0], lon[-1])
示例#19
0
 def test_get_pixelsize_meters(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     x, y = d.get_pixelsize_meters()
     self.assertEqual(int(x), 444)
     self.assertEqual(int(y), 723)
     d = Domain(ds=gdal.Open(self.test_file_projected))
     x, y = d.get_pixelsize_meters()
     self.assertEqual(int(x), 500)
     self.assertEqual(int(y), 500)
示例#20
0
 def test_transform_tr(self):
     result = Domain._transform_tr(4.0, 1.3, [0.015, 0.005])
     self.assertIsInstance(result, tuple)
     self.assertEquals(len(result), 4)
     map(lambda el: self.assertIsInstance(el, float), result)
     with self.assertRaises(ValueError) as param_err:
         Domain._transform_tr(4.0, 1.3, [5.0, 0.005])
         self.assertEqual(param_err.message,
                          '"-tr" is too large. width is 4.0, height is 1.3 ')
示例#21
0
    def test_get_border(self):
        d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
        lon, lat = d.get_border()

        self.assertEqual(type(lon), np.ndarray)
        self.assertEqual(type(lat), np.ndarray)
        self.assertEqual(len(lat), 44)
        self.assertEqual(lat[0], lat[-1])
        self.assertEqual(lon[0], lon[-1])
示例#22
0
 def test_transform_points_dstsrs(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     lon, lat = d.transform_points(
         [1, 2, 3], [1, 2, 3],
         dstSRS=NSR(
             '+proj=stere +datum=WGS84 +ellps=WGS84 +lat_0=75 +lon_0=10 +no_defs'
         ))
     self.assertEqual(type(lon), np.ndarray)
     self.assertEqual(type(lat), np.ndarray)
示例#23
0
 def test_get_geolocation_grids_from_GDAL_transformer(self, mock_transform_points):
     mock_transform_points.return_value=(
                   np.meshgrid(range(0,500),range(0,500))[0].flatten()*(35-25)/500.+25,
                   np.meshgrid(range(0,500),range(0,500))[1].flatten()*(70-72)/500.+72)
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     lon, lat = d.get_geolocation_grids()
     self.assertEqual(type(lon), np.ndarray)
     self.assertEqual(type(lat), np.ndarray)
     self.assertEqual(lat.shape, (500, 500))
示例#24
0
 def test_gen_regexp(self):
     test_1 = '(-te|-lle)(\\s+[-+]?\\d*[.\\d*]*)(\\s+[-+]?\\d*[.\\d*]*)(\\s+[-+]?' \
              '\\d*[.\\d*]*)(\\s+[-+]?\\d*[.\\d*]*)\\s?'
     result_1 = Domain._gen_regexp('te', 'lle', 4)
     self.assertIsInstance(result_1, str)
     self.assertEqual(result_1, test_1)
     test_2 = '(-ts|-tr)(\\s+[-+]?\\d*[.\\d*]*)(\\s+[-+]?\\d*[.\\d*]*)\\s?'
     result_2 = Domain._gen_regexp('ts', 'tr', 2)
     self.assertEqual(result_2, test_2)
示例#25
0
    def test_write_map_dpi100(self):
        d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
        tmpfilename = os.path.join(ntd.tmp_data_path, "domain_write_map_dpi100.png")
        d.write_map(tmpfilename, dpi=100)

        self.assertTrue(os.path.exists(tmpfilename))
        i = Image.open(tmpfilename)
        i.verify()
        self.assertEqual(i.info["dpi"], (100, 100))
示例#26
0
 def test_get_geolocation_grids_from_GDAL_transformer(self, mock_transform_points):
     mock_transform_points.return_value=(
                   np.meshgrid(range(0,500),range(0,500))[0].flatten()*(35-25)/500.+25,
                   np.meshgrid(range(0,500),range(0,500))[1].flatten()*(70-72)/500.+72)
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     lon, lat = d.get_geolocation_grids()
     self.assertEqual(type(lon), np.ndarray)
     self.assertEqual(type(lat), np.ndarray)
     self.assertEqual(lat.shape, (500, 500))
示例#27
0
 def test_gen_regexp(self):
     test_1 = '(-te|-lle)(\\s+[-+]?\\d*[.\\d*]*)(\\s+[-+]?\\d*[.\\d*]*)(\\s+[-+]?' \
              '\\d*[.\\d*]*)(\\s+[-+]?\\d*[.\\d*]*)\\s?'
     result_1 = Domain._gen_regexp('te', 'lle', 4)
     self.assertIsInstance(result_1, str)
     self.assertEqual(result_1, test_1)
     test_2 = '(-ts|-tr)(\\s+[-+]?\\d*[.\\d*]*)(\\s+[-+]?\\d*[.\\d*]*)\\s?'
     result_2 = Domain._gen_regexp('ts', 'tr', 2)
     self.assertEqual(result_2, test_2)
示例#28
0
 def test_transform_tr(self):
     result = Domain._transform_tr(4.0, 1.3, [0.015, 0.005])
     self.assertIsInstance(result, tuple)
     self.assertEquals(len(result), 4)
     map(lambda el: self.assertIsInstance(el, float), result)
     with self.assertRaises(ValueError) as param_err:
         Domain._transform_tr(4.0, 1.3, [5.0, 0.005])
         self.assertEqual(param_err.message,
                          '"-tr" is too large. width is 4.0, height is 1.3 ')
示例#29
0
 def test_write_map_labels(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     tmpfilename = os.path.join(ntd.tmp_data_path,
                                'domain_write_map_labels.png')
     d.write_map(tmpfilename,
                 merLabels=[False, False, False, True],
                 parLabels=[True, False, False, False])
     self.assertTrue(os.path.exists(tmpfilename))
     i = Image.open(tmpfilename)
     i.verify()
示例#30
0
 def test_get_min_max_lon_lat(self):
     dom = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = dom.get_min_max_lon_lat()
     self.assertIsInstance(result, tuple)
     self.assertEqual(len(result), 4)
     for el in result:
         self.assertIsInstance(el, float)
     self.assertLess(result[0], result[1])
     self.assertLess(result[2], result[3])
     self.assertEqual(result, (25.0, 34.980000000000004, 70.004000000000005, 72.0))
示例#31
0
 def test_write_domain_map(self):
     plt.switch_backend('Agg')
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     border = d.get_border()
     tmpfilename = os.path.join(ntd.tmp_data_path, 'domain_write_map.png')
     write_domain_map(border, tmpfilename, labels=['Patch1'])
     self.assertTrue(os.path.exists(tmpfilename))
     i = Image.open(tmpfilename)
     i.verify()
     self.assertEqual(i.info['dpi'], (50, 50))
示例#32
0
 def test_write_domain_map(self):
     plt.switch_backend('Agg')
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     border = d.get_border()
     tmpfilename = os.path.join(ntd.tmp_data_path, 'domain_write_map.png')
     write_domain_map(border, tmpfilename, labels=['Patch1'])
     self.assertTrue(os.path.exists(tmpfilename))
     i = Image.open(tmpfilename)
     i.verify()
     self.assertEqual(i.info['dpi'], (50, 50))
示例#33
0
 def test_get_min_max_lon_lat(self):
     dom = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = dom.get_min_max_lon_lat()
     self.assertIsInstance(result, tuple)
     self.assertEqual(len(result), 4)
     for el in result:
         self.assertIsInstance(el, float)
     self.assertLess(result[0], result[1])
     self.assertLess(result[2], result[3])
     self.assertEqual(result, (25.0, 34.980000000000004, 70.004000000000005, 72.0))
示例#34
0
    def test_repr(self):
        dom = Domain(4326, "-te 4.5 60 6 61 -ts 750 500")
        result = dom.__repr__()
        test = 'Domain:[750 x 500]\n----------------------------------------\nProjection:\nGEOGC' \
               'S["WGS 84",\n    DATUM["WGS_1984",\n        SPHEROID["WGS 84",6378137,298.257223' \
               '563]],\n    PRIMEM["Greenwich",0],\n    UNIT["degree",0.0174532925199433]]\n-----' \
               '-----------------------------------\nCorners (lon, lat):\n\t (  4.50,  61.00)  ' \
               '(  6.00,  61.00)\n\t (  4.50,  60.00)  (  6.00,  60.00)\n'

        self.assertIsInstance(result, str)
        self.assertEqual(result, test)
示例#35
0
 def test_write_domain_map_labels(self):
     plt.switch_backend('Agg')
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     border = d.get_border()
     tmpfilename = os.path.join(ntd.tmp_data_path,
                                'domain_write_map_labels.png')
     write_domain_map(border, tmpfilename,
                 mer_labels=[False, False, False, True],
                 par_labels=[True, False, False, False])
     self.assertTrue(os.path.exists(tmpfilename))
     i = Image.open(tmpfilename)
     i.verify()
示例#36
0
 def test_overlaps_contains(self):
     Bergen = Domain(4326, "-te 5 60 6 61 -ts 500 500")
     WestCoast = Domain(4326, "-te 1 58 6 64 -ts 500 500")
     Norway = Domain(4326, "-te 3 55 30 72 -ts 500 500")
     Paris = Domain(4326, "-te 2 48 3 49 -ts 500 500")
     self.assertTrue(Bergen.overlaps(Norway))
     self.assertTrue(Norway.contains(Bergen))
     self.assertFalse(Bergen.contains(Norway))
     self.assertTrue(Norway.overlaps(WestCoast))
     self.assertFalse(Norway.contains(WestCoast))
     self.assertFalse(Paris.overlaps(Norway))
     self.assertFalse(Paris.contains(Norway))
示例#37
0
 def test_convert_extentDic(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = d._convert_extentDic(NSR(4326), {
         'lle': [25.0, 70.0, 35.0, 72.0],
         'ts': [500.0, 500.0]
     })
     self.assertEqual(
         result, {
             'lle': [25.0, 70.0, 35.0, 72.0],
             'te': [25.0, 70.0, 35.0, 72.0],
             'ts': [500.0, 500.0]
         })
示例#38
0
 def test_write_domain_map_labels(self):
     plt.switch_backend('Agg')
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     border = d.get_border()
     tmpfilename = os.path.join(ntd.tmp_data_path,
                                'domain_write_map_labels.png')
     write_domain_map(border, tmpfilename,
                 mer_labels=[False, False, False, True],
                 par_labels=[True, False, False, False])
     self.assertTrue(os.path.exists(tmpfilename))
     i = Image.open(tmpfilename)
     i.verify()
示例#39
0
 def test_get_border_postgis(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = d.get_border_postgis()
     self.assertIsInstance(result, str)
     self.assertEquals(result, "PolygonFromText('POLYGON((25.0 72.0,26.0 72.0,27.0 72.0,28.0 "
                               "72.0,29.0 72.0,30.0 72.0,31.0 72.0,32.0 72.0,33.0 72.0,34.0 "
                               "72.0,35.0 72.0,35.0 72.0,35.0 71.8,35.0 71.6,35.0 71.4,35.0 "
                               "71.2,35.0 71.0,35.0 70.8,35.0 70.6,35.0 70.4,35.0 70.2,35.0 "
                               "70.0,35.0 70.0,34.0 70.0,33.0 70.0,32.0 70.0,31.0 70.0,30.0 "
                               "70.0,29.0 70.0,28.0 70.0,27.0 70.0,26.0 70.0,25.0 70.0,25.0 "
                               "70.0,25.0 70.2,25.0 70.4,25.0 70.6,25.0 70.8,25.0 71.0,25.0 "
                               "71.2,25.0 71.4,25.0 71.6,25.0 71.8,25.0 72.0))')")
示例#40
0
 def test_get_border_postgis(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = d.get_border_postgis()
     self.assertIsInstance(result, str)
     self.assertEquals(result, "PolygonFromText('POLYGON((25.0 72.0,26.0 72.0,27.0 72.0,28.0 "
                               "72.0,29.0 72.0,30.0 72.0,31.0 72.0,32.0 72.0,33.0 72.0,34.0 "
                               "72.0,35.0 72.0,35.0 72.0,35.0 71.8,35.0 71.6,35.0 71.4,35.0 "
                               "71.2,35.0 71.0,35.0 70.8,35.0 70.6,35.0 70.4,35.0 70.2,35.0 "
                               "70.0,35.0 70.0,34.0 70.0,33.0 70.0,32.0 70.0,31.0 70.0,30.0 "
                               "70.0,29.0 70.0,28.0 70.0,27.0 70.0,26.0 70.0,25.0 70.0,25.0 "
                               "70.0,25.0 70.2,25.0 70.4,25.0 70.6,25.0 70.8,25.0 71.0,25.0 "
                               "71.2,25.0 71.4,25.0 71.6,25.0 71.8,25.0 72.0))')")
示例#41
0
    def test_init_lonlat(self):
        lat, lon = np.mgrid[-90:90:0.5, -180:180:0.5]
        with warnings.catch_warnings(record=True) as recorded_warnings:
            d = Domain(lon=lon, lat=lat)

        nansat_warning_raised = False
        for rw in recorded_warnings:
            if rw.category == NansatFutureWarning:
                nansat_warning_raised = True
        self.assertTrue(nansat_warning_raised)

        self.assertEqual(type(d), Domain)
        self.assertEqual(d.shape(), lat.shape)
示例#42
0
    def test_init_lonlat(self):
        lat, lon = np.mgrid[-90:90:0.5, -180:180:0.5]
        with warnings.catch_warnings(record=True) as recorded_warnings:
            d = Domain(lon=lon, lat=lat)

        nansat_warning_raised = False
        for rw in recorded_warnings:
            if rw.category == NansatFutureWarning:
                nansat_warning_raised = True
        self.assertTrue(nansat_warning_raised)

        self.assertEqual(type(d), Domain)
        self.assertEqual(d.shape(), lat.shape)
示例#43
0
 def test_check_size(self):
     te_lle_example = '<-te x_min y_min x_max y_max> or <-lle min_lon min_lat max_lon max_lat>'
     tr_ts_example = '<-tr x_resolution y_resolution> or <-ts width height>'
     self.assertEqual(Domain._check_size(2, 2, ('-te', '-lle'), te_lle_example), None)
     with self.assertRaises(ValueError) as opt_err:
         Domain._check_size(1, 2, ('-ts', '-tr'), tr_ts_example)
         self.assertEqual(opt_err.args[0], '-ts and -tr requires exactly 2 parameters '
                                           '(1 given): <-tr x_resolution y_resolution> or '
                                           '<-ts width height>')
     with self.assertRaises(ValueError) as opt_err:
         Domain._check_size(2, 4, ('-te', '-lle'), te_lle_example)
         self.assertEqual(opt_err.args[0], '-te and -lle requires exactly 4 parameters '
                                           '(2 given): <-te x_min y_min x_max y_max> or <-lle'
                                           ' min_lon min_lat max_lon max_lat>')
示例#44
0
 def test_check_size(self):
     te_lle_example = '<-te x_min y_min x_max y_max> or <-lle min_lon min_lat max_lon max_lat>'
     tr_ts_example = '<-tr x_resolution y_resolution> or <-ts width height>'
     self.assertEqual(Domain._check_size(2, 2, ('-te', '-lle'), te_lle_example), None)
     with self.assertRaises(ValueError) as opt_err:
         Domain._check_size(1, 2, ('-ts', '-tr'), tr_ts_example)
         self.assertEqual(opt_err.args[0], '-ts and -tr requires exactly 2 parameters '
                                           '(1 given): <-tr x_resolution y_resolution> or '
                                           '<-ts width height>')
     with self.assertRaises(ValueError) as opt_err:
         Domain._check_size(2, 4, ('-te', '-lle'), te_lle_example)
         self.assertEqual(opt_err.args[0], '-te and -lle requires exactly 4 parameters '
                                           '(2 given): <-te x_min y_min x_max y_max> or <-lle'
                                           ' min_lon min_lat max_lon max_lat>')
示例#45
0
 def test_validate_ts_tr(self):
     input_1 = [100, 200]
     input_2 = ([0, 0], [0, 50], [10, 0], [-1, 10], [10, -100], [-100, -100])
     input_3 = [10]
     self.assertEqual(Domain._validate_ts_tr(input_1), None)
     for inp in input_2:
         with self.assertRaises(ValueError) as opt_err:
             Domain._validate_ts_tr(inp)
             self.assertEqual(opt_err.args[0], 'Resolution or width and height must be bigger '
                                               'than 0: <-tr x_resolution y_resolution> or '
                                               '<-ts width height>')
     with self.assertRaises(ValueError) as opt_err:
         Domain._validate_ts_tr(input_3)
         self.assertEqual(opt_err.args[0], '-ts and -tr requires exactly 2 parameters '
                                           '(1 given): <-tr x_resolution y_resolution> or '
                                           '<-ts width height>')
示例#46
0
 def test_validate_te_lle(self):
     input_1 = [5., 60., 6., 61.]
     input_2 = ([5., 60., 5., 61.], [5., 60., 4., 61.], [5., 60., 6., 59.])
     input_3 = [60., 5., 61.]
     self.assertEqual(Domain._validate_te_lle(input_1), None)
     for inp in input_2:
         with self.assertRaises(ValueError) as opt_err:
             Domain._validate_te_lle(inp)
             self.assertEqual(opt_err.message, 'Min cannot be bigger than max: '
                                               '<-te x_min y_min x_max y_max> or '
                                               '<-lle min_lon min_lat max_lon max_lat>')
     with self.assertRaises(ValueError) as opt_err:
         Domain._validate_te_lle(input_3)
         self.assertEqual(opt_err.args[0], '-te and -lle requires exactly 4 parameters '
                                           '(3 given): <-te x_min y_min x_max y_max> or <-lle'
                                           ' min_lon min_lat max_lon max_lat>')
示例#47
0
 def test_repr(self, mock_get_corners):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = d.__repr__()
     test = ('Domain:[500 x 500]\n'
             '----------------------------------------\n'
             'Projection(dataset):\nGEOGCS["WGS 84",\n'
             '    DATUM["WGS_1984",\n'
             '        SPHEROID["WGS 84",6378137,298.257223563]],\n'
             '    PRIMEM["Greenwich",0],\n'
             '    UNIT["degree",0.0174532925199433]]\n'
             '----------------------------------------\n'
             'Corners (lon, lat):\n'
             '\t ( 25.00,  72.00)  ( 35.00,  72.00)\n'
             '\t ( 25.00,  70.00)  ( 35.00,  70.00)\n' )
     self.assertIsInstance(result, str)
     self.assertEquals(result, test)
示例#48
0
 def test_repr(self, mock_get_corners):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = d.__repr__()
     test = ('Domain:[500 x 500]\n'
             '----------------------------------------\n'
             'Projection(dataset):\nGEOGCS["WGS 84",\n'
             '    DATUM["WGS_1984",\n'
             '        SPHEROID["WGS 84",6378137,298.257223563]],\n'
             '    PRIMEM["Greenwich",0],\n'
             '    UNIT["degree",0.0174532925199433]]\n'
             '----------------------------------------\n'
             'Corners (lon, lat):\n'
             '\t ( 25.00,  72.00)  ( 35.00,  72.00)\n'
             '\t ( 25.00,  70.00)  ( 35.00,  70.00)\n')
     self.assertIsInstance(result, str)
     self.assertEquals(result, test)
示例#49
0
 def test_validate_te_lle(self):
     input_1 = [5., 60., 6., 61.]
     input_2 = ([5., 60., 5., 61.], [5., 60., 4., 61.], [5., 60., 6., 59.])
     input_3 = [60., 5., 61.]
     self.assertEqual(Domain._validate_te_lle(input_1), None)
     for inp in input_2:
         with self.assertRaises(ValueError) as opt_err:
             Domain._validate_te_lle(inp)
             self.assertEqual(opt_err.message, 'Min cannot be bigger than max: '
                                               '<-te x_min y_min x_max y_max> or '
                                               '<-lle min_lon min_lat max_lon max_lat>')
     with self.assertRaises(ValueError) as opt_err:
         Domain._validate_te_lle(input_3)
         self.assertEqual(opt_err.args[0], '-te and -lle requires exactly 4 parameters '
                                           '(3 given): <-te x_min y_min x_max y_max> or <-lle'
                                           ' min_lon min_lat max_lon max_lat>')
示例#50
0
 def test_validate_ts_tr(self):
     input_1 = [100, 200]
     input_2 = ([0, 0], [0, 50], [10, 0], [-1, 10], [10, -100], [-100, -100])
     input_3 = [10]
     self.assertEqual(Domain._validate_ts_tr(input_1), None)
     for inp in input_2:
         with self.assertRaises(ValueError) as opt_err:
             Domain._validate_ts_tr(inp)
             self.assertEqual(opt_err.args[0], 'Resolution or width and height must be bigger '
                                               'than 0: <-tr x_resolution y_resolution> or '
                                               '<-ts width height>')
     with self.assertRaises(ValueError) as opt_err:
         Domain._validate_ts_tr(input_3)
         self.assertEqual(opt_err.args[0], '-ts and -tr requires exactly 2 parameters '
                                           '(1 given): <-tr x_resolution y_resolution> or '
                                           '<-ts width height>')
示例#51
0
 def test_dont_init_from_invalid_combination(self):
     self.assertRaises(ValueError, Domain)
     self.assertRaises(ValueError, Domain, None)
     with self.assertRaises(ValueError):
         Domain(ds=gdal.Open(self.test_file),
                srs="+proj=latlong +datum=WGS84 +ellps=WGS84 +no_defs",
                ext="-te 25 70 35 72 -ts 500 500")
示例#52
0
 def test_border_geojson(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     expected_geojson = '{ "type": "Polygon", "coordinates": [ [ [ 25.0, 72.0 ],' \
                        ' [ 26.0, 72.0 ], [ 27.0, 72.0 ], [ 28.0, 72.0 ], [ 29.0, 72.0 ], ' \
                        '[ 30.0, 72.0 ], [ 31.0, 72.0 ], [ 32.0, 72.0 ], [ 33.0, 72.0 ],' \
                        ' [ 34.0, 72.0 ], [ 35.0, 72.0 ], [ 35.0, 72.0 ], [ 35.0, 71.8 ], ' \
                        '[ 35.0, 71.6 ], [ 35.0, 71.4 ], [ 35.0, 71.2 ], [ 35.0, 71.0 ],' \
                        ' [ 35.0, 70.8 ], [ 35.0, 70.6 ], [ 35.0, 70.4 ], [ 35.0, 70.2 ], ' \
                        '[ 35.0, 70.0 ], [ 35.0, 70.0 ], [ 34.0, 70.0 ], [ 33.0, 70.0 ], ' \
                        '[ 32.0, 70.0 ], [ 31.0, 70.0 ], [ 30.0, 70.0 ], [ 29.0, 70.0 ], ' \
                        '[ 28.0, 70.0 ], [ 27.0, 70.0 ], [ 26.0, 70.0 ], [ 25.0, 70.0 ], ' \
                        '[ 25.0, 70.0 ], [ 25.0, 70.2 ], [ 25.0, 70.4 ], [ 25.0, 70.6 ],' \
                        ' [ 25.0, 70.8 ], [ 25.0, 71.0 ], [ 25.0, 71.2 ], [ 25.0, 71.4 ], ' \
                        '[ 25.0, 71.6 ], [ 25.0, 71.8 ], [ 25.0, 72.0 ] ] ] }'
     border_geojson = d.get_border_geojson()
     self.assertIsInstance(border_geojson, str)
     self.assertEqual(border_geojson, expected_geojson)
示例#53
0
 def test_border_geojson(self):
     d = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     expected_geojson = '{ "type": "Polygon", "coordinates": [ [ [ 25.0, 72.0 ],' \
                        ' [ 26.0, 72.0 ], [ 27.0, 72.0 ], [ 28.0, 72.0 ], [ 29.0, 72.0 ], ' \
                        '[ 30.0, 72.0 ], [ 31.0, 72.0 ], [ 32.0, 72.0 ], [ 33.0, 72.0 ],' \
                        ' [ 34.0, 72.0 ], [ 35.0, 72.0 ], [ 35.0, 72.0 ], [ 35.0, 71.8 ], ' \
                        '[ 35.0, 71.6 ], [ 35.0, 71.4 ], [ 35.0, 71.2 ], [ 35.0, 71.0 ],' \
                        ' [ 35.0, 70.8 ], [ 35.0, 70.6 ], [ 35.0, 70.4 ], [ 35.0, 70.2 ], ' \
                        '[ 35.0, 70.0 ], [ 35.0, 70.0 ], [ 34.0, 70.0 ], [ 33.0, 70.0 ], ' \
                        '[ 32.0, 70.0 ], [ 31.0, 70.0 ], [ 30.0, 70.0 ], [ 29.0, 70.0 ], ' \
                        '[ 28.0, 70.0 ], [ 27.0, 70.0 ], [ 26.0, 70.0 ], [ 25.0, 70.0 ], ' \
                        '[ 25.0, 70.0 ], [ 25.0, 70.2 ], [ 25.0, 70.4 ], [ 25.0, 70.6 ],' \
                        ' [ 25.0, 70.8 ], [ 25.0, 71.0 ], [ 25.0, 71.2 ], [ 25.0, 71.4 ], ' \
                        '[ 25.0, 71.6 ], [ 25.0, 71.8 ], [ 25.0, 72.0 ] ] ] }'
     border_geojson = d.get_border_geojson()
     self.assertIsInstance(border_geojson, str)
     self.assertEqual(border_geojson, expected_geojson)
示例#54
0
    def test_create_extent_dict(self):
        test = ('-te 5 60 6 61.1 -ts 500 500',
                '-te -92.08 26.85 -92.00 26.91 -ts 200 200',
                '-te 5 60 6 61.1',
                '-te 5 60 6 61.1 -te 5 60 6 61.1')
        output_1 = {'te': [5., 60., 6., 61.1], 'ts': [500, 500]}
        output_2 = {'te': [-92.08, 26.85, -92.00, 26.91], 'ts': [200, 200]}
        result_1 = Domain._create_extent_dict(test[0])
        self.assertIsInstance(result_1, dict)
        self.assertEqual(len(list(result_1.keys())), 2)
        self.assertEqual(result_1, output_1)
        result_2 = Domain._create_extent_dict(test[1])
        self.assertEquals(result_2, output_2)
        with self.assertRaises(ValueError) as opt_err:
            Domain._create_extent_dict(test[2])
            self.assertEquals(opt_err.args[0], '<extent_dict> must contains exactly 2 parameters ')
        self.assertEqual(result_2, output_2)

        try:
            test = Domain._create_extent_dict(test[2])
        except ValueError as opt_err:
            self.assertEqual(opt_err.args[0], '<extent_dict> must contains exactly 2 parameters '
                                               '("-te" or "-lle") and ("-ts" or "-tr")')
        with self.assertRaises(ValueError) as opt_err:
            Domain._create_extent_dict(test[3])
            self.assertEquals(opt_err.args[0], '<extent_dict> must contains exactly 2 parameters '
                                               '("-te" or "-lle") and ("-ts" or "-tr")')
示例#55
0
    def test_create_extent_dict(self):
        test = ('-te 5 60 6 61.1 -ts 500 500',
                '-te -92.08 26.85 -92.00 26.91 -ts 200 200', '-te 5 60 6 61.1',
                '-te 5 60 6 61.1 -te 5 60 6 61.1')
        output_1 = {'te': [5., 60., 6., 61.1], 'ts': [500, 500]}
        output_2 = {'te': [-92.08, 26.85, -92.00, 26.91], 'ts': [200, 200]}
        result_1 = Domain._create_extent_dict(test[0])
        self.assertIsInstance(result_1, dict)
        self.assertEqual(len(list(result_1.keys())), 2)
        self.assertEqual(result_1, output_1)
        result_2 = Domain._create_extent_dict(test[1])
        self.assertEquals(result_2, output_2)
        with self.assertRaises(ValueError) as opt_err:
            Domain._create_extent_dict(test[2])
            self.assertEquals(
                opt_err.args[0],
                '<extent_dict> must contains exactly 2 parameters ')
        self.assertEqual(result_2, output_2)

        try:
            test = Domain._create_extent_dict(test[2])
        except ValueError as opt_err:
            self.assertEqual(
                opt_err.args[0],
                '<extent_dict> must contains exactly 2 parameters '
                '("-te" or "-lle") and ("-ts" or "-tr")')
        with self.assertRaises(ValueError) as opt_err:
            Domain._create_extent_dict(test[3])
            self.assertEquals(
                opt_err.args[0],
                '<extent_dict> must contains exactly 2 parameters '
                '("-te" or "-lle") and ("-ts" or "-tr")')
示例#56
0
    def test_add_to_dict(self):
        input_1 = ['-te', '5', '60', '6', '61.1']
        output_1 = {'te': [5., 60., 6., 61.1]}
        key_1, extent_1 = Domain._add_to_dict(dict(), input_1)
        self.assertIsInstance(extent_1, dict)
        self.assertIsInstance(key_1, str)
        self.assertEqual(key_1, input_1[0].replace('-', ''))
        self.assertEqual(len(extent_1), 1)
        self.assertIsInstance(list(extent_1.values()), list)

        for el in list(extent_1.values())[0]:
            self.assertIsInstance(el, float)

        self.assertEqual(extent_1, output_1)
        input_2 = ['-te', '5', 'str', '6', '61']
        with self.assertRaises(ValueError) as opt_err:
            key_2, extent_2 = Domain._add_to_dict(dict(), input_2)
            self.assertEqual(opt_err.args[0], 'Input values must be int or float')
示例#57
0
    def test_add_to_dict(self):
        input_1 = ['-te', '5', '60', '6', '61.1']
        output_1 = {'te': [5., 60., 6., 61.1]}
        key_1, extent_1 = Domain._add_to_dict(dict(), input_1)
        self.assertIsInstance(extent_1, dict)
        self.assertIsInstance(key_1, str)
        self.assertEqual(key_1, input_1[0].replace('-', ''))
        self.assertEqual(len(extent_1), 1)
        self.assertIsInstance(list(extent_1.values()), list)

        for el in list(extent_1.values())[0]:
            self.assertIsInstance(el, float)

        self.assertEqual(extent_1, output_1)
        input_2 = ['-te', '5', 'str', '6', '61']
        with self.assertRaises(ValueError) as opt_err:
            key_2, extent_2 = Domain._add_to_dict(dict(), input_2)
            self.assertEqual(opt_err.args[0], 'Input values must be int or float')
示例#58
0
 def test_get_border(self):
     dom = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = dom.get_border(n_points=10)
     lat, lon = result
     self.assertEqual(type(lat), np.ndarray)
     self.assertEqual(type(lon), np.ndarray)
     self.assertIsInstance(result, tuple)
     self.assertEqual(len(result), 2)
     test_x = [25., 26., 27., 28., 29., 30., 31., 32., 33., 34., 35.,
               35., 35., 35., 35., 35., 35., 35., 35., 35., 35., 35.,
               35., 34., 33., 32., 31., 30., 29., 28., 27., 26., 25.,
               25., 25., 25., 25., 25., 25., 25., 25., 25., 25., 25.]
     test_y = [72., 72., 72., 72., 72., 72., 72., 72.,  72.,
                72. ,  72. ,  72. ,  71.8,  71.6,  71.4,  71.2,  71. ,  70.8,
                70.6,  70.4,  70.2,  70. ,  70. ,  70. ,  70. ,  70. ,  70. ,
                70. ,  70. ,  70. ,  70. ,  70. ,  70. ,  70. ,  70.2,  70.4,
                70.6,  70.8,  71. ,  71.2,  71.4,  71.6,  71.8,  72.]
     self.assertEqual(list(lat), test_x)
     self.assertEqual(list(lon), test_y)
示例#59
0
 def test_contains(self):
     Bergen = Domain(4326, EXTENT_BERGEN)
     WestCoast = Domain(4326, EXTENT_WESTCOAST)
     Norway = Domain(4326, EXTENT_NORWAY)
     Paris = Domain(4326, EXTENT_PARIS)
     self.assertTrue(Norway.contains(Bergen))
     self.assertFalse(Bergen.contains(Norway))
     self.assertFalse(Norway.contains(WestCoast))
     self.assertFalse(Paris.contains(Norway))
示例#60
0
 def test_get_geotransform(self):
     input_1 = {'te': [25.0, 70.0, 35.0, 72.0], 'ts': [500.0, 500.0]}
     test_1 = ([25.0, 0.02, 0.0, 72.0, 0.0, -0.004], 500, 500)
     result = Domain._get_geotransform(input_1)
     self.assertIsInstance(result, tuple)
     self.assertEqual(len(result), 3)
     self.assertIsInstance(result[0], list)
     self.assertEqual(len(result[0]), 6)
     for el in result[0]:
         self.assertIsInstance(el, float)
     self.assertIsInstance(result[1], int)
     self.assertIsInstance(result[2], int)
     self.assertEqual(result, test_1)