def test_sample_bilinear_array(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.0, 0.0], values=np.arange(64, dtype=np.float64).reshape([8, 8])) X, Y = np.meshgrid(np.arange(1, 7, 0.5), np.arange(2, 5, 0.25)) res = grid.sample_bilinear(X, Y) self.assertEqual(res.shape, (1, 12, 12))
def test_sample_linear_out_of_bounds(self): g = RegularGrid([0, 0, 1, 1, 0, 0], values=np.ones((10, 10))) v = g.sample_bilinear(np.array([7, 9, 12, 15]), np.array([3, 1, -1, 1])) self.assertEqual(v[0][0], 1.0) self.assertEqual(v[0][1], 1.0) self.assertTrue(np.isnan(v[0][2])) self.assertTrue(np.isnan(v[0][3]))
def test_sample_bilinear2(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.0, 0.0], values=np.array([[0, 1], [1, 0.5]])) xi, yi = np.meshgrid(np.linspace(0.5, 1.5), np.linspace(0.5, 1.5)) z = grid.sample_bilinear(xi, yi).ravel() self.assertEqual([z[400], z[1200], z[1550], z[2120]], [ 0.16326530612244894, 0.48979591836734693, 0.63265306122448983, 0.74052478134110788 ])
def test_sample_bilinear_skewed(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.5, 0.2], values=np.array([[0, 1], [1, 0.5]])) self.assertEqual(grid.sample_bilinear(1.5, 1.2), 0.625)
def test_sample_bilinear_multiband(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.0, 0.0], values=np.dstack([[[0, 1], [1, 0.5]], [[1, 2], [2, 1.5]]])) res = grid.sample_bilinear(1.0, 1.0) self.assertTrue(np.all(res == np.array([0.625, 1.625])))
def test_sample_bilinear_uint8(self): grid = RegularGrid([0.0, 0.0, 1.0, 1.0, 0.0, 0.0], values=np.array([[0, 2], [2, 1]], dtype=np.uint8)) self.assertEqual(grid.sample_bilinear(1.0, 1.0), 1)