Esempio n. 1
0
    def test_write_read_raster_h5(self):
        """Write and read hdf5 format"""
        file_name = str(DATA_DIR.joinpath('test_centr.h5'))

        centr = Centroids()
        xf_lat, xo_lon, d_lat, d_lon, n_lat, n_lon = 10, 5, -0.5, 0.2, 20, 25
        centr.set_raster_from_pix_bounds(xf_lat, xo_lon, d_lat, d_lon, n_lat,
                                         n_lon)
        centr.write_hdf5(file_name)

        centr_read = Centroids()
        centr_read.read_hdf5(file_name)
        self.assertTrue(centr_read.meta)
        self.assertFalse(centr_read.lat.size)
        self.assertFalse(centr_read.lon.size)
        self.assertEqual(centr_read.meta['width'], centr.meta['width'])
        self.assertEqual(centr_read.meta['height'], centr.meta['height'])
        self.assertAlmostEqual(centr_read.meta['transform'].a,
                               centr.meta['transform'].a)
        self.assertAlmostEqual(centr_read.meta['transform'].b,
                               centr.meta['transform'].b)
        self.assertAlmostEqual(centr_read.meta['transform'].c,
                               centr.meta['transform'].c)
        self.assertAlmostEqual(centr_read.meta['transform'].d,
                               centr.meta['transform'].d)
        self.assertAlmostEqual(centr_read.meta['transform'].e,
                               centr.meta['transform'].e)
        self.assertAlmostEqual(centr_read.meta['transform'].f,
                               centr.meta['transform'].f)
        self.assertTrue(
            u_coord.equal_crs(centr_read.meta['crs'], centr.meta['crs']))
    def test_union(self):
        cent1 = Centroids()
        cent1.lat, cent1.lon = np.array([0, 1]), np.array([0, -1])
        cent1.on_land = np.array([True, True])

        cent2 = Centroids()
        cent2.lat, cent2.lon = np.array([2, 3]), np.array([-2, 3])
        cent2.on_land = np.array([False, False])

        cent3 = Centroids()
        cent3.lat, cent3.lon = np.array([-1, -2]), np.array([1, 2])

        cent = cent1.union(cent2)
        np.testing.assert_array_equal(cent.lat, [0, 1, 2, 3])
        np.testing.assert_array_equal(cent.lon, [0, -1, -2, 3])
        np.testing.assert_array_equal(cent.on_land, [True, True, False, False])

        cent = cent1.union(cent1, cent2)
        np.testing.assert_array_equal(cent.lat, [0, 1, 2, 3])
        np.testing.assert_array_equal(cent.lon, [0, -1, -2, 3])
        np.testing.assert_array_equal(cent.on_land, [True, True, False, False])

        cent = Centroids().union(cent1)
        np.testing.assert_array_equal(cent.lat, [0, 1])
        np.testing.assert_array_equal(cent.lon, [0, -1])
        np.testing.assert_array_equal(cent.on_land, [True, True])

        cent = cent1.union(cent1)
        np.testing.assert_array_equal(cent.lat, [0, 1])
        np.testing.assert_array_equal(cent.lon, [0, -1])
        np.testing.assert_array_equal(cent.on_land, [True, True])

        cent = Centroids().union(cent1, cent2, cent3)
        np.testing.assert_array_equal(cent.lat, [0, 1, 2, 3, -1, -2])
        np.testing.assert_array_equal(cent.lon, [0, -1, -2, 3, 1, 2])
Esempio n. 3
0
    def _centroids_from_nc(file_name):
        """ Construct Centroids from the grid described by 'latitude' and
        'longitude' variables in a netCDF file.
        """
        LOGGER.info('Constructing centroids from %s', file_name)
        cent = Centroids()
        ncdf = xr.open_dataset(file_name)
        if hasattr(ncdf, 'latitude'):
            lats = ncdf.latitude.data
            lons = ncdf.longitude.data
        elif hasattr(ncdf, 'lat'):
            lats = ncdf.lat.data
            lons = ncdf.lon.data
        elif hasattr(ncdf, 'lat_1'):
            lats = ncdf.lat_1.data
            lons = ncdf.lon_1.data
        else:
            raise AttributeError('netcdf file has no field named latitude or '
                                 'other know abrivation for coordinates.')
        ncdf.close()

        lats, lons = np.array(
            [np.repeat(lats, len(lons)),
             np.tile(lons, len(lats))])
        cent = Centroids()
        cent.set_lat_lon(lats, lons)
        cent.set_area_pixel()
        cent.set_on_land()

        return cent
    def test_append_all_pass(self):
        """Test _append_all function."""
        haz_1 = Hazard('TC')
        haz_1.tag.file_name = 'file1.mat'
        haz_1.tag.description = 'Description 1'
        haz_1.centroids = Centroids()
        haz_1.centroids.set_lat_lon(np.array([1, 3, 5]), np.array([2, 4, 6]))
        haz_1.event_id = np.array([1])
        haz_1.event_name = ['ev1']
        haz_1.date = np.array([1])
        haz_1.orig = np.array([True])
        haz_1.frequency = np.array([1.0])
        haz_1.fraction = sparse.csr_matrix([[0.02, 0.03, 0.04]])
        haz_1.intensity = sparse.csr_matrix([[0.2, 0.3, 0.4]])
        haz_1.units = 'm/s'

        haz_2 = Hazard('TC')
        haz_2.tag.file_name = 'file2.mat'
        haz_2.tag.description = 'Description 2'
        haz_2.centroids = Centroids()
        haz_2.centroids.set_lat_lon(np.array([1, 3, 5]), np.array([2, 4, 6]))
        haz_2.event_id = np.array([1])
        haz_2.event_name = ['ev2']
        haz_2.date = np.array([2])
        haz_2.orig = np.array([False])
        haz_2.frequency = np.array([1.0])
        haz_2.fraction = sparse.csr_matrix([[1.02, 1.03, 1.04]])
        haz_2.intensity = sparse.csr_matrix([[1.2, 1.3, 1.4]])
        haz_2.units = 'm/s'

        haz = Hazard('TC')
        haz._append_all([haz_1, haz_2])


        hres_frac = sparse.csr_matrix([[0.02, 0.03, 0.04], \
                                        [1.02, 1.03, 1.04]])
        hres_inten = sparse.csr_matrix([[0.2, 0.3, 0.4], \
                                       [1.2, 1.3, 1.4]])

        self.assertTrue(sparse.isspmatrix_csr(haz.intensity))
        self.assertTrue(
            np.array_equal(haz.intensity.todense(), hres_inten.todense()))
        self.assertTrue(sparse.isspmatrix_csr(haz.fraction))
        self.assertTrue(
            np.array_equal(haz.fraction.todense(), hres_frac.todense()))
        self.assertEqual(haz.units, haz_2.units)
        self.assertTrue(np.array_equal(haz.frequency, np.array([1.0, 1.0])))
        self.assertTrue(np.array_equal(haz.orig, np.array([True, False])))
        self.assertTrue(np.array_equal(haz.date, np.array([1, 2])))
        self.assertTrue(np.array_equal(haz.event_id, np.array([1, 2])))
        self.assertTrue(haz.event_name, ['ev1', 'ev2'])
        self.assertTrue(
            np.array_equal(haz.centroids.coord, haz_1.centroids.coord))
        self.assertTrue(
            np.array_equal(haz.centroids.coord, haz_2.centroids.coord))
        self.assertTrue(haz.tag, 'file_1.mat + file_2.mat')
        self.assertTrue(haz.tag, 'Description 1 + Description 2')
Esempio n. 5
0
 def test_equal_pass(self):
     """Test equal"""
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr_bis = Centroids()
     centr_bis.set_lat_lon(np.array([1, 2, 3]), np.array([4, 5, 6]))
     self.assertFalse(centr.equal(centr_bis))
     self.assertFalse(centr_bis.equal(centr))
     self.assertTrue(centr_bis.equal(centr_bis))
     self.assertTrue(centr.equal(centr))
Esempio n. 6
0
 def test_equal_pass(self):
     """Test equal"""
     centr_ras = Centroids()
     centr_ras.set_raster_file(HAZ_DEMO_FL, window=Window(0, 0, 50, 60))
     centr_bis = Centroids()
     centr_bis.set_raster_file(HAZ_DEMO_FL, window=Window(51, 61, 10, 10))
     self.assertFalse(centr_ras.equal(centr_bis))
     self.assertFalse(centr_bis.equal(centr_ras))
     self.assertTrue(centr_ras.equal(centr_ras))
     self.assertTrue(centr_bis.equal(centr_bis))
Esempio n. 7
0
    def __init__(self, haz_type):
        """Initialize values.

        Parameters:
            haz_type (str, optional): acronym of the hazard type (e.g. 'TC').

        Examples:
            Fill hazard values by hand:

            >>> haz = Hazard('TC')
            >>> haz.intensity = sparse.csr_matrix(np.zeros((2, 2)))
            >>> ...

            Take hazard values from file:

            >>> haz = Hazard('TC', HAZ_DEMO_MAT)
            >>> haz.read_mat(HAZ_DEMO_MAT, 'demo')

        """
        self.tag = TagHazard()
        self.tag.haz_type = haz_type
        self.units = ''
        self.centroids = Centroids()
        # following values are defined for each event
        self.event_id = np.array([], int)
        self.frequency = np.array([], float)
        self.event_name = list()
        self.date = np.array([], int)
        self.orig = np.array([], bool)
        # following values are defined for each event and centroid
        self.intensity = sparse.csr_matrix(np.empty(
            (0, 0)))  # events x centroids
        self.fraction = sparse.csr_matrix(np.empty(
            (0, 0)))  # events x centroids
Esempio n. 8
0
    def test_mat_global_pass(self):
        """Test read GLB_CENTROIDS_MAT"""
        centroids = Centroids()
        centroids.read_mat(GLB_CENTROIDS_MAT)

        self.assertEqual(centroids.region_id[1062443], 35)
        self.assertEqual(centroids.region_id[170825], 28)
Esempio n. 9
0
    def test_centroids_att_two_pass(self):
        """ Test set all attributes centroids """
        centr_bang = Centroids()
        centr_bang.set_raster_from_pnt_bounds((89, 21.5, 90, 23), 0.01)
        _set_centroids_att(centr_bang,
                           dist_coast_decay=True,
                           dem_product='SRTM3',
                           as_pixel=True)
        self.assertEqual(centr_bang.dist_coast.size, centr_bang.size)
        self.assertEqual(centr_bang.elevation.size, centr_bang.size)
        self.assertAlmostEqual(centr_bang.elevation.max(), 22.743055555555557)

        centr_bang.elevation = np.array([])
        centr_bang.dist_coast = np.array([])
        _set_centroids_att(centr_bang,
                           dist_coast_decay=True,
                           dem_product='SRTM3',
                           as_pixel=False)
        self.assertEqual(centr_bang.dist_coast.size, centr_bang.size)
        self.assertEqual(centr_bang.elevation.size, centr_bang.size)
        self.assertAlmostEqual(centr_bang.elevation.max(), 28.0)

        centr_bang.set_meta_to_lat_lon()
        centr_bang.meta = dict()
        centr_bang.elevation = np.array([])
        centr_bang.dist_coast = np.array([])
        _set_centroids_att(centr_bang,
                           dist_coast_decay=True,
                           dem_product='SRTM3')
        self.assertEqual(centr_bang.dist_coast.size, centr_bang.size)
        self.assertEqual(centr_bang.elevation.size, centr_bang.size)
        self.assertAlmostEqual(centr_bang.elevation.max(), 28.0)
Esempio n. 10
0
    def test_write_read_points_h5(self):
        file_name = str(DATA_DIR.joinpath('test_centr.h5'))

        centr = Centroids()
        centr = Centroids()
        centr.set_lat_lon(VEC_LAT, VEC_LON)
        centr.write_hdf5(file_name)

        centr_read = Centroids()
        centr_read.read_hdf5(file_name)
        self.assertFalse(centr_read.meta)
        self.assertTrue(centr_read.lat.size)
        self.assertTrue(centr_read.lon.size)
        self.assertTrue(np.allclose(centr_read.lat, centr.lat))
        self.assertTrue(np.allclose(centr_read.lon, centr.lon))
        self.assertTrue(u_coord.equal_crs(centr_read.crs, centr.crs))
Esempio n. 11
0
 def test_area_approx(self):
     """Test set_area_approx"""
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr.geometry.crs = {'init': 'epsg:4326'}
     with self.assertRaises(ValueError):
         centr.set_area_approx()
Esempio n. 12
0
 def test_centroids_att_one_pass(self):
     """ Test set one attribute centroids """
     centr_bang = Centroids()
     centr_bang.set_raster_from_pnt_bounds((89, 21.5, 90, 23), 0.01)
     _set_centroids_att(centr_bang, dist_coast_decay=False, dem_product='SRTM3')
     self.assertEqual(centr_bang.dist_coast.size, 0)
     self.assertEqual(centr_bang.elevation.size, centr_bang.size)
Esempio n. 13
0
    def test_set_vector_file_wrong_fail(self):
        """Test set_vector_file with wrong centroids"""
        shp_file = shapereader.natural_earth(resolution='110m',
                                             category='cultural',
                                             name='populated_places_simple')
        centr = Centroids()
        inten = centr.set_vector_file(shp_file, ['pop_min', 'pop_max'])

        self.assertEqual(CRS.from_user_input(centr.geometry.crs),
                         CRS.from_epsg(u_coord.NE_EPSG))
        self.assertEqual(centr.geometry.size, centr.lat.size)
        self.assertEqual(CRS.from_user_input(centr.geometry.crs),
                         CRS.from_epsg(u_coord.NE_EPSG))
        self.assertAlmostEqual(centr.lon[0], 12.453386544971766)
        self.assertAlmostEqual(centr.lon[-1], 114.18306345846304)
        self.assertAlmostEqual(centr.lat[0], 41.903282179960115)
        self.assertAlmostEqual(centr.lat[-1], 22.30692675357551)

        self.assertEqual(inten.shape, (2, 243))
        # population min
        self.assertEqual(inten[0, 0], 832)
        self.assertEqual(inten[0, -1], 4551579)
        # population max
        self.assertEqual(inten[1, 0], 832)
        self.assertEqual(inten[1, -1], 7206000)

        shp_file = shapereader.natural_earth(resolution='10m',
                                             category='cultural',
                                             name='populated_places_simple')
        with self.assertRaises(ValueError):
            centr.set_vector_file(shp_file, ['pop_min', 'pop_max'])
Esempio n. 14
0
 def test_append_diff_pass(self):
     """ Append raster """
     centr_ras = Centroids()
     centr_ras.set_raster_file(HAZ_DEMO_FL, window= Window(0, 0, 50, 60))
     centr_bis = Centroids()
     centr_bis.set_raster_file(HAZ_DEMO_FL, window= Window(51, 61, 10, 10))
     centr_bis.append(centr_ras)
     self.assertAlmostEqual(centr_bis.meta['crs'], DEF_CRS)
     self.assertAlmostEqual(centr_bis.meta['transform'].c, -69.33714959699981)
     self.assertAlmostEqual(centr_bis.meta['transform'].a, 0.009000000000000341)
     self.assertAlmostEqual(centr_bis.meta['transform'].b, 0.0)
     self.assertAlmostEqual(centr_bis.meta['transform'].f, 10.42822096697894)
     self.assertAlmostEqual(centr_bis.meta['transform'].d, 0.0)
     self.assertAlmostEqual(centr_bis.meta['transform'].e, -0.009000000000000341)
     self.assertEqual(centr_bis.meta['height'], 71)
     self.assertEqual(centr_bis.meta['width'], 61)
Esempio n. 15
0
 def test_on_land(self):
     """ Test set_on_land """
     centr_ras = Centroids()
     centr_ras.set_raster_file(HAZ_DEMO_FL, window= Window(0, 0, 50, 60))
     centr_ras.set_on_land()
     centr_ras.check()
     self.assertTrue(np.array_equal(centr_ras.on_land, np.ones(60 * 50, bool)))
Esempio n. 16
0
 def test_region_id_pass(self):
     """ Test set_dist_coast """
     centr_ras = Centroids()
     centr_ras.set_raster_file(HAZ_DEMO_FL, window= Window(0, 0, 50, 60))
     centr_ras.set_region_id()
     self.assertEqual(centr_ras.region_id.size, centr_ras.size)
     self.assertTrue(np.array_equal(np.unique(centr_ras.region_id), np.array([862])))
Esempio n. 17
0
 def test_region_id_pass(self):
     """Test set_region_id"""
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr.geometry.crs = {'init': 'epsg:4326'}
     centr.set_region_id()
     self.assertEqual(np.count_nonzero(centr.region_id), 6)
     self.assertEqual(centr.region_id[0], 52)  # 052 for barbados
Esempio n. 18
0
 def test_dist_coast_pass(self):
     """Test set_dist_coast"""
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr.geometry.crs = {'init': 'epsg:4326'}
     centr.set_dist_coast()
     self.assertAlmostEqual(2594.2070842031694, centr.dist_coast[1])
     self.assertAlmostEqual(166295.87602398323, centr.dist_coast[-2])
Esempio n. 19
0
    def _centroids_from_nc(file_name):
        """Construct Centroids from the grid described by 'latitude' and
        'longitude' variables in a netCDF file.
        """
        LOGGER.info('Constructing centroids from %s', file_name)
        cent = Centroids()
        ncdf = xr.open_dataset(file_name)
        create_meshgrid = True
        if hasattr(ncdf, 'latitude'):
            lats = ncdf.latitude.data
            lons = ncdf.longitude.data
        elif hasattr(ncdf, 'lat'):
            lats = ncdf.lat.data
            lons = ncdf.lon.data
        elif hasattr(ncdf, 'lat_1'):
            if len(ncdf.lon_1.shape)>1 & \
                (ncdf.lon_1.shape == ncdf.lat_1.shape) \
                :
                lats = ncdf.lat_1.data.flatten()
                lons = ncdf.lon_1.data.flatten()
                create_meshgrid = False
            else:
                lats = ncdf.lat_1.data
                lons = ncdf.lon_1.data
        elif hasattr(ncdf, 'clat'):
            lats = ncdf.clat.data
            lons = ncdf.clon.data
            if ncdf.clat.attrs['units'] == 'radian':
                lats = np.rad2deg(lats)
                lons = np.rad2deg(lons)
            create_meshgrid = False
        else:
            raise AttributeError('netcdf file has no field named latitude or '
                                 'other know abrivation for coordinates.')
        ncdf.close()

        if create_meshgrid:
            lats, lons = np.array(
                [np.repeat(lats, len(lons)),
                 np.tile(lons, len(lats))])
        cent = Centroids()
        cent.set_lat_lon(lats, lons)
        cent.set_area_pixel()
        cent.set_on_land()

        return cent
 def test_dist_coast_pass(self):
     """ Test set_dist_coast """
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr.geometry.crs = {'init':'epsg:4326'}
     centr.set_dist_coast()
     self.assertAlmostEqual(5.798819757520 * 1000, centr.dist_coast[1])
     self.assertAlmostEqual(166.3650542203 * 1000, centr.dist_coast[-2])
    def test_union_meta(self):
        cent1 = Centroids()
        cent1.set_raster_from_pnt_bounds((-1, -1, 0, 0), res=1)

        cent2 = Centroids()
        cent2.set_raster_from_pnt_bounds((0, 0, 1, 1), res=1)

        cent3 = Centroids()
        cent3.lat, cent3.lon = np.array([1]), np.array([1])

        cent = cent1.union(cent2)
        np.testing.assert_array_equal(cent.lat, [0, 0, -1, -1, 1, 1, 0])
        np.testing.assert_array_equal(cent.lon, [-1, 0, -1, 0, 0, 1, 1])

        cent = cent3.union(cent1)
        np.testing.assert_array_equal(cent.lat, [1, 0, 0, -1, -1])
        np.testing.assert_array_equal(cent.lon, [1, -1, 0, -1, 0])
Esempio n. 22
0
 def test_dist_coast_pass(self):
     """Test set_region_id"""
     centr_ras = Centroids()
     centr_ras.set_raster_file(HAZ_DEMO_FL, window=Window(0, 0, 50, 60))
     centr_ras.set_dist_coast()
     centr_ras.check()
     self.assertTrue(abs(centr_ras.dist_coast[0] - 117000) < 1000)
     self.assertTrue(abs(centr_ras.dist_coast[-1] - 104000) < 1000)
Esempio n. 23
0
    def test_same_events_append(self):
        """Append hazard with same events (and diff centroids).
        Events are appended with all new centroids columns. """
        haz1 = dummy_hazard()
        haz2 = Hazard('TC')
        haz2.tag.file_name = 'file2.mat'
        haz2.tag.description = 'Description 2'
        haz2.centroids = Centroids()
        haz2.centroids.set_lat_lon(np.array([7, 9, 11]), np.array([8, 10, 12]))

        haz2.event_id = haz1.event_id
        haz2.event_name = haz1.event_name.copy()
        haz2.frequency = haz1.frequency
        haz2.date = haz1.date
        haz2.fraction = sparse.csr_matrix([[0.22, 0.32, 0.44], \
                                           [0.11, 0.11, 0.11], \
                                           [0.32, 0.11, 0.99], \
                                           [0.32, 0.22, 0.88]])
        haz2.intensity = sparse.csr_matrix([[0.22, 3.33, 6.44], \
                                            [1.11, 0.11, 1.11], \
                                            [8.33, 4.11, 4.4], \
                                            [9.33, 9.22, 1.77]])
        haz2.units = 'm/s'

        haz1.append(haz2)

        # expected values
        haz1_ori = dummy_hazard()
        res_inten = sparse.lil_matrix(np.zeros((8, 6)))
        res_inten[0:4, 0:3] = haz1_ori.intensity
        res_inten[4:, 3:] = haz2.intensity

        res_frac = sparse.lil_matrix(np.zeros((8, 6)))
        res_frac[0:4, 0:3] = haz1_ori.fraction
        res_frac[4:, 3:] = haz2.fraction

        self.assertTrue(np.array_equal(res_inten.todense(),
                                       haz1.intensity.todense()))
        self.assertTrue(sparse.isspmatrix_csr(haz1.intensity))
        self.assertTrue(np.array_equal(res_frac.todense(), \
                                       haz1.fraction.todense()))
        self.assertTrue(sparse.isspmatrix_csr(haz1.fraction))
        self.assertEqual(haz1.event_name,
                         haz1_ori.event_name + haz2.event_name)
        self.assertTrue(np.array_equal(haz1.date,
                                       np.append(haz1_ori.date, haz2.date)))
        self.assertTrue(np.array_equal(haz1.orig,
                                       np.append(haz1_ori.orig, haz2.orig)))
        self.assertTrue(np.array_equal(haz1.event_id, np.arange(1,9)))
        self.assertTrue(np.array_equal(haz1.frequency,
                                       np.append(haz1_ori.frequency, haz2.frequency)))
        self.assertEqual(haz1_ori.units, haz1.units)

        self.assertEqual(haz1.tag.file_name, \
                         [haz1_ori.tag.file_name, haz2.tag.file_name])
        self.assertEqual(haz1.tag.haz_type, haz1_ori.tag.haz_type)
        self.assertEqual(haz1.tag.description, \
                         [haz1_ori.tag.description, haz2.tag.description])
Esempio n. 24
0
    def test_mat_global_pass(self):
        """ Test read GLB_CENTROIDS_MAT """
        centroids = Centroids()
        centroids.read_mat(GLB_CENTROIDS_MAT)

        self.assertEqual(centroids.region_id[1062443], 35)
        self.assertEqual(centroids.region_id[170825], 28)
        self.assertAlmostEqual(centroids.dist_coast[9], 21.366461094662913)
        self.assertAlmostEqual(centroids.dist_coast[1568370], 36.76908653021)
 def test_ne_crs_xy_pass(self):
     """ Test _ne_crs_xy """
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     lon, lat = centr._ne_crs_xy()
     self.assertAlmostEqual(4.51072194, lon[0])
     self.assertAlmostEqual(0.00011838, lat[0])
     self.assertAlmostEqual(4.5107354, lon[-1])
     self.assertAlmostEqual(0.0001297, lat[-1])
Esempio n. 26
0
 def test_area_pass(self):
     """ Test set_area """
     centr_ras = Centroids()
     centr_ras.set_raster_file(HAZ_DEMO_FL, window= Window(0, 0, 50, 60))
     centr_ras.meta['crs'] = {'proj':'cea'}
     centr_ras.set_area_pixel()
     centr_ras.check()
     self.assertTrue(np.allclose(centr_ras.area_pixel,
                                 np.ones(60*50)*0.009000000000000341*0.009000000000000341))
Esempio n. 27
0
 def test_get_pixel_polygons_pass(self):
     """Test calc_pixels_polygons"""
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr.geometry.crs = {'init': 'epsg:4326'}
     poly = centr.calc_pixels_polygons()
     self.assertIsInstance(poly[0], Polygon)
     self.assertTrue(np.allclose(poly.centroid[:].y.values, centr.lat))
     self.assertTrue(np.allclose(poly.centroid[:].x.values, centr.lon))
Esempio n. 28
0
 def test_append_pass(self):
     """Append points"""
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr_bis = Centroids()
     centr_bis.set_lat_lon(np.array([1, 2, 3]), np.array([4, 5, 6]))
     with self.assertRaises(ValueError):
         centr_bis.append(centr)
     centr.geometry.crs = {'init': 'epsg:4326'}
     centr_bis.append(centr)
     self.assertAlmostEqual(centr_bis.lat[0], 1)
     self.assertAlmostEqual(centr_bis.lat[1], 2)
     self.assertAlmostEqual(centr_bis.lat[2], 3)
     self.assertAlmostEqual(centr_bis.lon[0], 4)
     self.assertAlmostEqual(centr_bis.lon[1], 5)
     self.assertAlmostEqual(centr_bis.lon[2], 6)
     self.assertTrue(np.array_equal(centr_bis.lat[3:], centr.lat))
     self.assertTrue(np.array_equal(centr_bis.lon[3:], centr.lon))
Esempio n. 29
0
    def test_centroids_check_pass(self):
        """Test vector data in Centroids"""
        data_vec = TestVector.data_vector()
        centr = Centroids()
        centr.lat, centr.lon, centr.geometry = data_vec
        centr.check()

        self.assertEqual(centr.crs, data_vec[2].crs)
        self.assertIsInstance(centr.total_bounds, tuple)
        for i in range(4):
            self.assertEqual(centr.total_bounds[i],
                             data_vec[2].total_bounds[i])

        self.assertIsInstance(centr.lat, np.ndarray)
        self.assertIsInstance(centr.lon, np.ndarray)
        self.assertIsInstance(centr.coord, np.ndarray)
        self.assertTrue(np.array_equal(centr.lat, VEC_LAT))
        self.assertTrue(np.array_equal(centr.lon, VEC_LON))
        self.assertTrue(
            np.array_equal(centr.coord,
                           np.array([VEC_LAT, VEC_LON]).transpose()))
        self.assertEqual(centr.size, VEC_LON.size)

        centr.area_pixel = np.array([1])
        with self.assertRaises(ValueError):
            centr.check()

        centr.area_pixel = np.array([])
        centr.dist_coast = np.array([1])
        with self.assertRaises(ValueError):
            centr.check()

        centr.dist_coast = np.array([])
        centr.on_land = np.array([1])
        with self.assertRaises(ValueError):
            centr.check()

        centr.on_land = np.array([])
        centr.region_id = np.array([1])
        with self.assertRaises(ValueError):
            centr.check()

        centr.region_id = np.array([])
        centr.lat = np.array([1])
        with self.assertRaises(ValueError):
            centr.check()

        centr.lat = np.array([])
        centr.lon = np.array([1])
        with self.assertRaises(ValueError):
            centr.check()

        centr.lon = np.array([])
        centr.geometry = gpd.GeoSeries(np.ones(1))
        with self.assertRaises(ValueError):
            centr.check()
Esempio n. 30
0
 def test_on_land(self):
     """Test set_on_land"""
     centr = Centroids()
     centr.lat, centr.lon, centr.geometry = self.data_vector()
     centr.geometry.crs = {'init': 'epsg:4326'}
     centr.set_on_land()
     centr.set_region_id()
     centr.region_id[centr.region_id > 0] = 1
     self.assertTrue(
         np.array_equal(centr.on_land.astype(int), centr.region_id))