Exemple #1
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)
Exemple #2
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))
Exemple #3
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))
Exemple #4
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'])
Exemple #5
0
 def test_overlaps(self, get_border_geometry):
     other_domain = MagicMock()
     d = Domain()
     d.overlaps(other_domain)
     d.get_border_geometry.assert_called_once()
     d.get_border_geometry().Overlaps.assert_called_once_with(
         other_domain.get_border_geometry())
Exemple #6
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))
Exemple #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))
Exemple #8
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')
Exemple #9
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")
Exemple #10
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)
Exemple #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)
Exemple #12
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))
Exemple #13
0
 def test_intersects(self, get_border_geometry):
     other_domain = MagicMock()
     d = Domain()
     d.intersects(other_domain)
     d.get_border_geometry.assert_called_once()
     d.get_border_geometry().Intersects.assert_called_once_with(
         other_domain.get_border_geometry())
Exemple #14
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))
Exemple #15
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)
Exemple #16
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))
Exemple #17
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])
Exemple #18
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))
 def test_issue_189(self):
     fn = '/mnt/10.11.12.232/sat_downloads_asar/level-0/2010-01/descending/VV/gsar_rvl/RVL_ASA_WS_20100110211812087.gsar'
     if doppler_installed:
         n = Doppler(fn)
         xlon, xlat = n.get_corners()
         d = Domain(
             NSR(3857), '-lle %f %f %f %f -tr 1000 1000' %
             (xlon.min(), xlat.min(), xlon.max(), xlat.max()))
         n.reproject(d, eResampleAlg=1, tps=True)
         inci = n['incidence_angle']
Exemple #20
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))
Exemple #21
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()
Exemple #22
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)
Exemple #23
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()
Exemple #24
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]
         })
Exemple #25
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))')")
Exemple #26
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)
Exemple #27
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)
Exemple #28
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)
Exemple #29
0
 def test_get_border(self):
     dom = Domain(4326, "-te 25 70 35 72 -ts 500 500")
     result = dom.get_border(nPoints=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)
def plot_s1a_example(fsize='small'):
    test_data.get_sentinel1a(fsize=fsize)
    #w = SARWind(test_data.sentinel1a[fsize])
    w = BayesianWind(test_data.sentinel1a[fsize])
    cc = w.get_corners()
    lonmin = np.int(np.floor(np.min(cc[0])*100))/100.
    lonmax = np.int(np.ceil(np.max(cc[0])*100))/100.
    latmin = np.int(np.floor(np.min(cc[1])*100))/100.
    latmax = np.int(np.ceil(np.max(cc[1])*100))/100.
    w.reproject( Domain(NSR().wkt, ext='-lle %s %s %s %s -ts %s %s' %(lonmin,
        latmin, lonmax, latmax, (lonmax-lonmin)*110., (latmax-latmin)*110.) ) )
    #u = w['U']
    #v = w['V']
    windspeed = w['bspeed_modcmod']
    winddir = w['bdir_modcmod']
    u = -windspeed*np.sin((180.0 - winddir)*np.pi/180.0)
    v = windspeed*np.cos((180.0 - winddir)*np.pi/180.0)
    nmap = Nansatmap(w, resolution='h')
    nmap.pcolormesh(np.hypot(u,v), vmax=18)
    nmap.add_colorbar(fontsize=8)
    nmap.quiver(u, v, step=20)#, scale=1, width=0.001)
    nmap.draw_continents()
    nmap.drawgrid()
    #nmap.drawmeridians(np.arange(lonmin, lonmax, 5), labels=[False, False,
    #    True, False])
    #nmap.drawparallels(np.arange(latmin, latmax, 3), labels=[True, False,
    #    False, False])

    # set size of the figure (inches)
    #nmap.fig.set_figheight(20)
    #nmap.fig.set_figwidth(15)

    # save figure to a PNG file
    nmap.draw_continents()
    #plt.suptitle(
    #    'High resolution\nwind speed and direction\nfrom Sentinel-1A and ' \
    #        'NCEP\n%s' %w.time_coverage_start.isoformat(),
    #    fontsize=8
    #)

    #nmap.fig.savefig('s1a_wind_%s.png'%fsize, dpi=150, bbox_inches='tight')
    nmap.fig.savefig('s1a_bwind_%s.png'%fsize, dpi=150, bbox_inches='tight')