def test_assign_pass(self): """Check that attribute `assigned` is correctly set.""" np_rand = np.random.RandomState(123456789) haz = Hazard('FL') haz.set_raster([HAZ_DEMO_FL], window=Window(10, 20, 50, 60)) haz.raster_to_vector() ncentroids = haz.centroids.size exp = Exposures() exp.gdf.crs = haz.centroids.crs # some are matching exactly, some are geographically close exp.gdf['longitude'] = np.concatenate([ haz.centroids.lon, haz.centroids.lon + 0.001 * (-0.5 + np_rand.rand(ncentroids)) ]) exp.gdf['latitude'] = np.concatenate([ haz.centroids.lat, haz.centroids.lat + 0.001 * (-0.5 + np_rand.rand(ncentroids)) ]) expected_result = np.concatenate( [np.arange(ncentroids), np.arange(ncentroids)]) # make sure that it works for both float32 and float64 for test_dtype in [np.float64, np.float32]: haz.centroids.lat = haz.centroids.lat.astype(test_dtype) haz.centroids.lon = haz.centroids.lon.astype(test_dtype) exp.assign_centroids(haz) self.assertEqual(exp.gdf.shape[0], len(exp.gdf[INDICATOR_CENTR + 'FL'])) np.testing.assert_array_equal( exp.gdf[INDICATOR_CENTR + 'FL'].values, expected_result)
def test_assign_large_hazard_subset_pass(self): """Test assign_centroids with raster hazard""" exp = Exposures() exp.set_from_raster(HAZ_DEMO_FL, window=Window(10, 20, 50, 60)) exp.gdf.latitude[[0, 1]] = exp.gdf.latitude[[1, 0]] exp.gdf.longitude[[0, 1]] = exp.gdf.longitude[[1, 0]] exp.check() haz = Hazard('FL') haz.set_raster([HAZ_DEMO_FL]) haz.raster_to_vector() exp.assign_centroids(haz) assigned_centroids = haz.centroids.select( sel_cen=exp.gdf[INDICATOR_CENTR + 'FL'].values) np.testing.assert_array_equal(assigned_centroids.lat, exp.gdf.latitude) np.testing.assert_array_equal(assigned_centroids.lon, exp.gdf.longitude)