def test_cut_country_brb_2km_pass(self): """Test _resample_land function with fake Barbados.""" country_iso = 'BRB' for cntry in list(SHP_FILE.records()): if cntry.attributes['ADM0_A3'] == country_iso: geom = cntry.geometry nightlight = np.ones((500, 1000)) nightlight[275:281, 333:334] = 0.4 nightlight[275:281, 334:336] = 0.5 nightlight = sparse.csr_matrix(nightlight) coord_nl = np.empty((2, 2)) coord_nl[0, :] = [NOAA_BORDER[1] + NOAA_RESOLUTION_DEG, 0.2805444221776838] coord_nl[1, :] = [NOAA_BORDER[0] + NOAA_RESOLUTION_DEG, 0.3603520186853473] res_fact = 2.0 nightlight_reg, lat_reg, lon_reg, on_land = _cut_country(geom, nightlight, coord_nl) nightlight_res, lat_res, lon_res = _resample_land(geom, nightlight_reg, lat_reg, lon_reg, res_fact, on_land) lat_ref = np.array([ [12.9996827, 12.9996827, 12.9996827, 12.9996827, 12.9996827, 12.9996827], [13.11190047, 13.11190047, 13.11190047, 13.11190047, 13.11190047, 13.11190047], [13.22411824, 13.22411824, 13.22411824, 13.22411824, 13.22411824, 13.22411824], [13.33633601, 13.33633601, 13.33633601, 13.33633601, 13.33633601, 13.33633601], [13.44855377, 13.44855377, 13.44855377, 13.44855377, 13.44855377, 13.44855377], [13.56077154, 13.56077154, 13.56077154, 13.56077154, 13.56077154, 13.56077154] ]) lon_ref = np.array([ [-59.99444444, -59.85030364, -59.70616283, -59.56202202, -59.41788121, -59.27374041], [-59.99444444, -59.85030364, -59.70616283, -59.56202202, -59.41788121, -59.27374041], [-59.99444444, -59.85030364, -59.70616283, -59.56202202, -59.41788121, -59.27374041], [-59.99444444, -59.85030364, -59.70616283, -59.56202202, -59.41788121, -59.27374041], [-59.99444444, -59.85030364, -59.70616283, -59.56202202, -59.41788121, -59.27374041], [-59.99444444, -59.85030364, -59.70616283, -59.56202202, -59.41788121, -59.27374041] ]) on_ref = np.array([ [False, False, False, False, False, False], [False, False, False, True, False, False], [False, False, False, True, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False], [False, False, False, False, False, False] ]) self.assertTrue(np.allclose(lat_ref[on_ref], lat_res)) self.assertTrue(np.allclose(lon_ref[on_ref], lon_res)) self.assertAlmostEqual(nightlight_res[0], 0.1683201638775818) self.assertAlmostEqual(nightlight_res[1], 0.33167983612241814)
def test_cut_country_brb_1km_pass(self): """ Test _cut_country function with fake Barbados.""" country_iso = 'BRB' for cntry in list(SHP_FILE.records()): if cntry.attributes['ADM0_A3'] == country_iso: geom = cntry.geometry nightlight = sparse.lil.lil_matrix(np.ones((500, 1000))) nightlight[275:281, 333:334] = 0.4 nightlight[275:281, 334:336] = 0.5 nightlight = nightlight.tocsr() coord_nl = np.empty((2, 2)) coord_nl[0, :] = [ NOAA_BORDER[1] + NOAA_RESOLUTION_DEG, 0.2805444221776838 ] coord_nl[1, :] = [ NOAA_BORDER[0] + NOAA_RESOLUTION_DEG, 0.3603520186853473 ] nightlight_reg, lat_reg, lon_reg, on_land = _cut_country( geom, nightlight, coord_nl) lat_ref = np.array([[12.9996827, 12.9996827, 12.9996827], [13.28022712, 13.28022712, 13.28022712], [13.56077154, 13.56077154, 13.56077154]]) lon_ref = np.array([[-59.99444444, -59.63409243, -59.27374041], [-59.99444444, -59.63409243, -59.27374041], [-59.99444444, -59.63409243, -59.27374041]]) on_ref = np.array([[False, False, False], [False, True, False], [False, False, False]]) in_lat = (278, 280) in_lon = (333, 335) nightlight_ref = nightlight[in_lat[0]:in_lat[1] + 1, in_lon[0]:in_lon[1] + 1].todense() nightlight_ref[np.logical_not(on_ref)] = 0.0 self.assertTrue(np.allclose(lat_ref, lat_reg)) self.assertTrue(np.allclose(lon_ref, lon_reg)) self.assertTrue(np.allclose(on_ref, on_land)) self.assertTrue(np.allclose(nightlight_ref, nightlight_reg))