Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
 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)