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)
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)
def test_set_raster_pnt_pass(self): """Test set_raster_from_pnt_bounds from point borders""" centr = Centroids() left, bottom, right, top = 5, 0, 10, 10 centr.set_raster_from_pnt_bounds((left, bottom, right, top), 0.2) self.assertEqual(centr.meta['crs'], DEF_CRS) self.assertEqual(centr.meta['width'], 26) self.assertEqual(centr.meta['height'], 51) self.assertAlmostEqual(centr.meta['transform'][0], 0.2) self.assertAlmostEqual(centr.meta['transform'][1], 0.0) self.assertAlmostEqual(centr.meta['transform'][2], 5 - 0.2 / 2) self.assertAlmostEqual(centr.meta['transform'][3], 0.0) self.assertAlmostEqual(centr.meta['transform'][4], -0.2) self.assertAlmostEqual(centr.meta['transform'][5], 10 + 0.2 / 2) self.assertTrue('lat' in centr.__dict__.keys()) self.assertTrue('lon' in centr.__dict__.keys())
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])
def _centroids_creation(firms, res_data, centr_res_factor): """ Get centroids from the firms dataset and refactor them. Parameters: firms (DataFrame): dataset obtained from FIRMS data res_data (float): FIRMS instrument resolution in degrees centr_res_factor (float): the factor applied to voluntarly decrease/increase the centroids resolution Returns: centroids (Centroids) """ centroids = Centroids() centroids.set_raster_from_pnt_bounds((firms['longitude'].min(), \ firms['latitude'].min(), firms['longitude'].max(), \ firms['latitude'].max()), res=res_data/centr_res_factor) centroids.set_meta_to_lat_lon() centroids.set_area_approx() centroids.set_on_land() centroids.empty_geometry_points() return centroids