def read(self, layout, read_method, target_crs=None, multiplex=False): expected_tiled = self.rdd.tile_to_layout(layout, target_crs=target_crs) expected_collected = expected_tiled.to_numpy_rdd().collect() if multiplex: sources = [ SourceInfo(self.path, {0: 0}), SourceInfo(self.path, {0: 1}) ] actual_tiled = TiledRasterLayer.read(sources, layout_type=layout, target_crs=target_crs) else: actual_tiled = TiledRasterLayer.read([self.path], layout_type=layout, target_crs=target_crs) actual_collected = actual_tiled.to_numpy_rdd().collect() self.assertEqual(len(expected_collected), len(actual_collected)) expected_collected.sort(key=lambda tup: (tup[0].col, tup[0].row)) actual_collected.sort(key=lambda tup: (tup[0].col, tup[0].row)) if multiplex: bands = (0, 1) else: bands = [0] for expected, actual in zip(expected_collected, actual_collected): for x in bands: self.assertEqual(expected[0], actual[0]) self.assertTrue(expected[1].cells.shape[1:] == actual[1].cells[ x, :, :].shape) diff = abs(expected[1].cells - actual[1].cells[x, :, :]) off_values_count = (diff > self.difference).sum() self.assertTrue( off_values_count / expected[1].cells.size <= 0.025)
def read(self, layout, read_method, target_crs=None): expected_tiled = self.rdd.tile_to_layout(layout, target_crs=target_crs) expected_collected = expected_tiled.to_numpy_rdd().collect() actual_tiled = TiledRasterLayer.read([self.path], layout_type=layout, target_crs=target_crs) actual_collected = actual_tiled.to_numpy_rdd().collect() self.assertEqual(len(expected_collected), len(actual_collected)) expected_collected.sort(key=lambda tup: (tup[0].col, tup[0].row)) actual_collected.sort(key=lambda tup: (tup[0].col, tup[0].row)) for expected, actual in zip(expected_collected, actual_collected): self.assertEqual(expected[0], actual[0]) self.assertTrue(expected[1].cells.shape == actual[1].cells.shape) diff = abs(expected[1].cells - actual[1].cells) off_values_count = (diff > self.difference).sum() self.assertTrue(off_values_count / expected[1].cells.size <= 0.025)