def test_subset(self): """See if simple operations work well""" import shapely.geometry as shpg g = Grid(nxny=(3, 3), dxdy=(1, 1), x0y0=(0, 0), proj=wgs84) d = GeoDataset(g) self.assertTrue(isinstance(d, GeoDataset)) self.assertEqual(g, d.grid) d.set_subset(corners=([0, 0], [2, 2]), crs=wgs84) self.assertEqual(g, d.grid) d.set_subset() self.assertEqual(g, d.grid) d.set_subset(margin=-1) lon, lat = d.grid.ll_coordinates self.assertEqual(lon, 1) self.assertEqual(lat, 1) d.set_subset(corners=([0.1, 0.1], [1.9, 1.9]), crs=wgs84) self.assertEqual(g, d.grid) d.set_subset(corners=([0.51, 0.51], [1.9, 1.9]), crs=wgs84) self.assertNotEqual(g, d.grid) gm = Grid(nxny=(1, 1), dxdy=(1, 1), x0y0=(1, 1), proj=wgs84) d.set_subset(corners=([1, 1], [1, 1]), crs=wgs84) self.assertEqual(gm, d.grid) d.set_subset() d.set_roi() d.set_roi(corners=([1, 1], [1, 1]), crs=wgs84) d.set_subset(toroi=True) self.assertEqual(gm, d.grid) gm = Grid(nxny=(1, 1), dxdy=(1, 1), x0y0=(2, 2), proj=wgs84) d.set_subset(corners=([2, 2], [2, 2]), crs=wgs84) self.assertEqual(gm, d.grid) with warnings.catch_warnings(record=True) as w: # Cause all warnings to always be triggered. warnings.simplefilter("always") # Trigger a warning. d.set_subset(corners=([-4, -4], [5, 5]), crs=wgs84) self.assertEqual(g, d.grid) # Verify some things assert len(w) >= 2 self.assertRaises(RuntimeError, d.set_subset, corners=([-1, -1], [-1, -1])) self.assertRaises(RuntimeError, d.set_subset, corners=([5, 5], [5, 5])) shpf = get_demo_file('Hintereisferner.shp') reff = get_demo_file('hef_roi.tif') d = GeoTiff(reff) d.set_roi(shape=shpf) ref = d.get_vardata() # same errors as IDL: ENVI is just wrong self.assertTrue(np.sum(ref != d.roi) < 9) g = Grid(nxny=(3, 3), dxdy=(1, 1), x0y0=(0, 0), proj=wgs84, pixel_ref='corner') p = shpg.Polygon([(1.5, 1.), (2., 1.5), (1.5, 2.), (1., 1.5)]) roi = g.region_of_interest(geometry=p) np.testing.assert_array_equal([[0, 0, 0], [0, 1, 0], [0, 0, 0]], roi) d = GeoDataset(g) d.set_roi(corners=([1.1, 1.1], [1.9, 1.9])) d.set_subset(toroi=True) np.testing.assert_array_equal([[1]], d.roi) d.set_subset() np.testing.assert_array_equal([[0, 0, 0], [0, 1, 0], [0, 0, 0]], d.roi) d.set_roi() np.testing.assert_array_equal([[0, 0, 0], [0, 0, 0], [0, 0, 0]], d.roi) # Raises self.assertRaises(RuntimeError, d.set_subset, toroi=True)
def test_subset(self): """See if simple operations work well""" g = Grid(nxny=(3, 3), dxdy=(1, 1), ll_corner=(0, 0), proj=wgs84) d = GeoDataset(g) self.assertTrue(isinstance(d, GeoDataset)) self.assertEqual(g, d.grid) d.set_subset(corners=([0, 0], [2, 2]), crs=wgs84) self.assertEqual(g, d.grid) d.set_subset() self.assertEqual(g, d.grid) d.set_subset(margin=-1) lon, lat = d.grid.ll_coordinates self.assertEqual(lon, 1) self.assertEqual(lat, 1) d.set_subset(corners=([0.1, 0.1], [1.9, 1.9]), crs=wgs84) self.assertEqual(g, d.grid) d.set_subset(corners=([0.51, 0.51], [1.9, 1.9]), crs=wgs84) self.assertNotEqual(g, d.grid) gm = Grid(nxny=(1, 1), dxdy=(1, 1), ll_corner=(1, 1), proj=wgs84) d.set_subset(corners=([1, 1], [1, 1]), crs=wgs84) self.assertEqual(gm, d.grid) d.set_subset() d.set_roi() d.set_roi(corners=([1, 1], [1, 1]), crs=wgs84) d.set_subset(toroi=True) self.assertEqual(gm, d.grid) gm = Grid(nxny=(1, 1), dxdy=(1, 1), ll_corner=(2, 2), proj=wgs84) d.set_subset(corners=([2, 2], [2, 2]), crs=wgs84) self.assertEqual(gm, d.grid) with warnings.catch_warnings(record=True) as w: # Cause all warnings to always be triggered. warnings.simplefilter("always") # Trigger a warning. d.set_subset(corners=([-4, -4], [5, 5]), crs=wgs84) self.assertEqual(g, d.grid) # Verify some things self.assertEqual(len(w), 2) self.assertTrue(issubclass(w[0].category, RuntimeWarning)) self.assertTrue(issubclass(w[1].category, RuntimeWarning)) self.assertTrue("x0 out of bounds" in str(w[0].message)) self.assertTrue("y0 out of bounds" in str(w[1].message)) self.assertRaises(RuntimeError, d.set_subset, corners=([-1, -1], [-1, -1])) self.assertRaises(RuntimeError, d.set_subset, corners=([5, 5], [5, 5])) shpf = get_demo_file("Hintereisferner.shp") reff = get_demo_file("hef_roi.tif") d = GeoTiff(reff) d.set_roi(shape=shpf) ref = d.get_vardata() # same errors as IDL: ENVI is just wrong self.assertTrue(np.sum(ref != d.roi) < 9) g = Grid(nxny=(3, 3), dxdy=(1, 1), ll_corner=(0, 0), proj=wgs84, pixel_ref="corner") p = shpg.Polygon([(1.5, 1.0), (2.0, 1.5), (1.5, 2.0), (1.0, 1.5)]) roi = g.region_of_interest(geometry=p) np.testing.assert_array_equal([[0, 0, 0], [0, 1, 0], [0, 0, 0]], roi) d = GeoDataset(g) d.set_roi(corners=([1.1, 1.1], [1.9, 1.9])) d.set_subset(toroi=True) np.testing.assert_array_equal([[1]], d.roi) d.set_subset() np.testing.assert_array_equal([[0, 0, 0], [0, 1, 0], [0, 0, 0]], d.roi) d.set_roi() np.testing.assert_array_equal([[0, 0, 0], [0, 0, 0], [0, 0, 0]], d.roi) # Raises self.assertRaises(RuntimeError, d.set_subset, toroi=True)
def test_period(self): """See if simple operations work well""" g = Grid(nxny=(3, 3), dxdy=(1, 1), x0y0=(0, 0), proj=wgs84) d = GeoDataset(g) self.assertTrue(d.time is None) self.assertTrue(d.sub_t is None) self.assertTrue(d.t0 is None) self.assertTrue(d.t1 is None) t = pd.date_range('1/1/2011', periods=72, freq='D') d = GeoDataset(g, time=t) assert_array_equal(d.time, t) assert_array_equal(d.sub_t, [0, 71]) assert_array_equal(d.t0, t[0]) assert_array_equal(d.t1, t[-1]) d.set_period(t0='2011-01-03') assert_array_equal(d.sub_t, [2, 71]) assert_array_equal(d.t0, t[2]) assert_array_equal(d.t1, t[-1]) d.set_period(t0='2011-01-03', t1=datetime(2011, 1, 5)) assert_array_equal(d.sub_t, [2, 4]) assert_array_equal(d.t0, t[2]) assert_array_equal(d.t1, t[4]) d.set_period(t1=datetime(2011, 1, 5)) assert_array_equal(d.sub_t, [0, 4]) assert_array_equal(d.t0, t[0]) assert_array_equal(d.t1, t[4]) d = GeoDataset(g, time=pd.Series(t, index=t)) assert_array_equal(d.time, t) d.set_period(t0='2011-01-03', t1=datetime(2011, 1, 5)) assert_array_equal(d.sub_t, [2, 4]) assert_array_equal(d.t0, t[2]) assert_array_equal(d.t1, t[4]) d.set_period() assert_array_equal(d.time, t) assert_array_equal(d.sub_t, [0, 71]) assert_array_equal(d.t0, t[0]) assert_array_equal(d.t1, t[-1]) self.assertRaises(NotImplementedError, d.get_vardata)
def test_period(self): """See if simple operations work well""" g = Grid(nxny=(3, 3), dxdy=(1, 1), ll_corner=(0, 0), proj=wgs84) d = GeoDataset(g) self.assertTrue(d.time is None) self.assertTrue(d.sub_t is None) self.assertTrue(d.t0 is None) self.assertTrue(d.t1 is None) t = pd.date_range("1/1/2011", periods=72, freq="D") d = GeoDataset(g, time=t) assert_array_equal(d.time, t) assert_array_equal(d.sub_t, [0, 71]) assert_array_equal(d.t0, t[0]) assert_array_equal(d.t1, t[-1]) d.set_period(t0="2011-01-03") assert_array_equal(d.sub_t, [2, 71]) assert_array_equal(d.t0, t[2]) assert_array_equal(d.t1, t[-1]) d.set_period(t0="2011-01-03", t1=datetime(2011, 1, 5)) assert_array_equal(d.sub_t, [2, 4]) assert_array_equal(d.t0, t[2]) assert_array_equal(d.t1, t[4]) d.set_period(t1=datetime(2011, 1, 5)) assert_array_equal(d.sub_t, [0, 4]) assert_array_equal(d.t0, t[0]) assert_array_equal(d.t1, t[4]) d = GeoDataset(g, time=pd.Series(t, index=t)) assert_array_equal(d.time, t) d.set_period(t0="2011-01-03", t1=datetime(2011, 1, 5)) assert_array_equal(d.sub_t, [2, 4]) assert_array_equal(d.t0, t[2]) assert_array_equal(d.t1, t[4]) d.set_period() assert_array_equal(d.time, t) assert_array_equal(d.sub_t, [0, 71]) assert_array_equal(d.t0, t[0]) assert_array_equal(d.t1, t[-1]) self.assertRaises(NotImplementedError, d.get_vardata)