def test_linesample(self): data = np.fromfunction(lambda y, x: y * x, (40, 40)) rows = np.array([[1, 2], [3, 4]]) cols = np.array([[25, 26], [27, 28]]) res = grid.get_image_from_linesample(rows, cols, data) expected = np.array([[25., 52.], [81., 112.]]) self.assertTrue(np.array_equal(res, expected), 'Linesample failed')
def test_linesample_multi(self): data1 = np.fromfunction(lambda y, x: y * x, (40, 40)) data2 = np.fromfunction(lambda y, x: 2 * y * x, (40, 40)) data3 = np.fromfunction(lambda y, x: 3 * y * x, (40, 40)) data = np.zeros((40, 40, 3)) data[:, :, 0] = data1 data[:, :, 1] = data2 data[:, :, 2] = data3 rows = np.array([[1, 2], [3, 4]]) cols = np.array([[25, 26], [27, 28]]) res = grid.get_image_from_linesample(rows, cols, data) expected = np.array([[[25., 50., 75.], [52., 104., 156.]], [[81., 162., 243.], [112., 224., 336.]]]) self.assertTrue(np.array_equal(res, expected), 'Linesample failed')
def get_array_from_linesample(self, row_indices, col_indices): """Get array sampled from image based on index arrays. Parameters ---------- row_indices : numpy array Row indices. Dimensions must match col_indices col_indices : numpy array Col indices. Dimensions must match row_indices Returns ------- image_data : numpy_array Resampled image data """ if self.geo_def.ndim != 2: raise TypeError('Resampling from linesamples only makes sense ' 'on 2D data') return grid.get_image_from_linesample(row_indices, col_indices, self.image_data, self.fill_value)
def get_array_from_linesample(self, row_indices, col_indices): """Samples from image based on index arrays. Parameters ---------- row_indices : numpy array Row indices. Dimensions must match col_indices col_indices : numpy array Col indices. Dimensions must match row_indices Returns ------- image_data : numpy_array Resampled image data """ if self.geo_def.ndim != 2: raise TypeError('Resampling from linesamples only makes sense ' 'on 2D data') return grid.get_image_from_linesample(row_indices, col_indices, self.image_data, self.fill_value)