def test_modis(self): h5f = h5py.File(FILENAME_DATA, 'r') lon1 = to_da(h5f['lon_1km']) lat1 = to_da(h5f['lat_1km']) satz1 = to_da(h5f['satz_1km']) lon250 = to_da(h5f['lon_250m']) lon500 = to_da(h5f['lon_500m']) lat250 = to_da(h5f['lat_250m']) lat500 = to_da(h5f['lat_500m']) lons, lats = modis_1km_to_250m(lon1, lat1, satz1) self.assertTrue(np.allclose(lon250, lons, atol=1e-2)) self.assertTrue(np.allclose(lat250, lats, atol=1e-2)) lons, lats = modis_1km_to_500m(lon1, lat1, satz1) self.assertTrue(np.allclose(lon500, lons, atol=1e-2)) self.assertTrue(np.allclose(lat500, lats, atol=1e-2)) lat5 = lat1[2::5, 2::5] lon5 = lon1[2::5, 2::5] satz5 = satz1[2::5, 2::5] lons, lats = modis_5km_to_1km(lon5, lat5, satz5) self.assertTrue(np.allclose(lon1, lons, atol=1e-2)) self.assertTrue(np.allclose(lat1, lats, atol=1e-2)) # 5km to 500m lons, lats = modis_5km_to_500m(lon5, lat5, satz5) self.assertEqual(lon500.shape, lons.shape) self.assertEqual(lat500.shape, lats.shape) # self.assertTrue(np.allclose(lon500, lons, atol=1e-2)) # self.assertTrue(np.allclose(lat500, lats, atol=1e-2)) # 5km to 250m lons, lats = modis_5km_to_250m(lon5, lat5, satz5) self.assertEqual(lon250.shape, lons.shape) self.assertEqual(lat250.shape, lats.shape) # self.assertTrue(np.allclose(lon250, lons, atol=1e-2)) # self.assertTrue(np.allclose(lat250, lats, atol=1e-2)) # Test level 2 lat5 = lat1[2::5, 2:-5:5] lon5 = lon1[2::5, 2:-5:5] satz5 = satz1[2::5, 2:-5:5] lons, lats = modis_5km_to_1km(lon5, lat5, satz5) self.assertTrue(np.allclose(lon1, lons, atol=1e-2)) self.assertTrue(np.allclose(lat1, lats, atol=1e-2)) # Test nans issue (#19) satz1 = to_da(abs(np.linspace(-65.4, 65.4, 1354)).repeat(20).reshape(-1, 20).T) lons, lats = modis_1km_to_500m(lon1, lat1, satz1) self.assertFalse(np.any(np.isnan(lons.compute()))) self.assertFalse(np.any(np.isnan(lats.compute())))
def test_modis(self): h5f = h5py.File(FILENAME_DATA, 'r') lon1 = to_da(h5f['lon_1km']) lat1 = to_da(h5f['lat_1km']) satz1 = to_da(h5f['satz_1km']) lon250 = to_da(h5f['lon_250m']) lon500 = to_da(h5f['lon_500m']) lat250 = to_da(h5f['lat_250m']) lat500 = to_da(h5f['lat_500m']) lons, lats = modis_1km_to_250m(lon1, lat1, satz1) self.assertTrue(np.allclose(lon250, lons, atol=1e-2)) self.assertTrue(np.allclose(lat250, lats, atol=1e-2)) lons, lats = modis_1km_to_500m(lon1, lat1, satz1) self.assertTrue(np.allclose(lon500, lons, atol=1e-2)) self.assertTrue(np.allclose(lat500, lats, atol=1e-2)) lat5 = lat1[2::5, 2::5] lon5 = lon1[2::5, 2::5] satz5 = satz1[2::5, 2::5] lons, lats = modis_5km_to_1km(lon5, lat5, satz5) self.assertTrue(np.allclose(lon1, lons, atol=1e-2)) self.assertTrue(np.allclose(lat1, lats, atol=1e-2))
def test_modis(self): h5f = h5py.File(FILENAME_DATA, 'r') lon1 = to_da(h5f['lon_1km']) lat1 = to_da(h5f['lat_1km']) satz1 = to_da(h5f['satz_1km']) lon250 = to_da(h5f['lon_250m']) lon500 = to_da(h5f['lon_500m']) lat250 = to_da(h5f['lat_250m']) lat500 = to_da(h5f['lat_500m']) lons, lats = modis_1km_to_250m(lon1, lat1, satz1) self.assertTrue(np.allclose(lon250, lons, atol=1e-2)) self.assertTrue(np.allclose(lat250, lats, atol=1e-2)) lons, lats = modis_1km_to_500m(lon1, lat1, satz1) self.assertTrue(np.allclose(lon500, lons, atol=1e-2)) self.assertTrue(np.allclose(lat500, lats, atol=1e-2)) lat5 = lat1[2::5, 2::5] lon5 = lon1[2::5, 2::5] satz5 = satz1[2::5, 2::5] lons, lats = modis_5km_to_1km(lon5, lat5, satz5) self.assertTrue(np.allclose(lon1, lons, atol=1e-2)) self.assertTrue(np.allclose(lat1, lats, atol=1e-2)) # Test level 2 lat5 = lat1[2::5, 2:-5:5] lon5 = lon1[2::5, 2:-5:5] satz5 = satz1[2::5, 2:-5:5] lons, lats = modis_5km_to_1km(lon5, lat5, satz5) self.assertTrue(np.allclose(lon1, lons, atol=1e-2)) self.assertTrue(np.allclose(lat1, lats, atol=1e-2))
def test_poles_datum(self): import xarray as xr h5f = h5py.File(FILENAME_DATA, 'r') orig_lon = to_da(h5f['lon_1km']) lon1 = orig_lon + 180 lon1 = xr.where(lon1 > 180, lon1 - 360, lon1) lat1 = to_da(h5f['lat_1km']) satz1 = to_da(h5f['satz_1km']) lat5 = lat1[2::5, 2::5] lon5 = lon1[2::5, 2::5] satz5 = satz1[2::5, 2::5] lons, lats = modis_5km_to_1km(lon5, lat5, satz5) lons = lons + 180 lons = xr.where(lons > 180, lons - 360, lons) self.assertTrue(np.allclose(orig_lon, lons, atol=1e-2)) self.assertTrue(np.allclose(lat1, lats, atol=1e-2))