def test_various_values(self): arr = np.array( [[[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3], [4, 4, 4, 4]]], dtype=int) tile = {'data': arr, 'no_data_value': -500} rdd = BaseTestClass.geopysc.pysc.parallelize([(self.projected_extent, tile)]) raster_rdd = RasterRDD.from_numpy_rdd(BaseTestClass.geopysc, SPATIAL, rdd) value_map = {1: 10, 3: 17} result = raster_rdd.reclassify(value_map, int).to_numpy_rdd().first()[1]['data'] expected = np.array([[[10, 10, 10, 10], [17, 17, 17, 17], [17, 17, 17, 17], [-500, -500, -500, -500]]], dtype=int) self.assertTrue((result == expected).all())
def test_floating_voint_ranges(self): arr = np.array([[[0.0, 0.0, 0.0, 0.0], [1.0, 1.0, 1.0, 1.0], [1.5, 1.5, 1.5, 1.5], [2.0, 2.0, 2.0, 2.0]]], dtype=float) tile = {'data': arr, 'no_data_value': float('nan')} rdd = BaseTestClass.geopysc.pysc.parallelize([(self.projected_extent, tile)]) raster_rdd = RasterRDD.from_numpy_rdd(BaseTestClass.geopysc, SPATIAL, rdd) value_map = {2.0: 5.0} result = raster_rdd.reclassify( value_map, float, LESSTHAN).to_numpy_rdd().first()[1]['data'] expected = np.array([[[5.0, 5.0, 5.0, 5.0], [5.0, 5.0, 5.0, 5.0], [5.0, 5.0, 5.0, 5.0]]], dtype=float) self.assertTrue((result[0, 2, ] == expected).all()) for x in result[0, 3, ]: self.assertTrue(math.isnan(x))
def test_correct_base(self): arr = np.zeros((1, 16, 16)) epsg_code = 3857 extent = Extent(0.0, 0.0, 10.0, 10.0) tile = {'data': arr, 'no_data_value': False} projected_extent = {'extent': extent, 'epsg': epsg_code} rdd = BaseTestClass.geopysc.pysc.parallelize([(projected_extent, tile) ]) raster_rdd = RasterRDD.from_numpy_rdd(BaseTestClass.geopysc, SPATIAL, rdd) tile_layout = TileLayout(32, 32, 16, 16) new_extent = Extent(-20037508.342789244, -20037508.342789244, 20037508.342789244, 20037508.342789244) metadata = raster_rdd.collect_metadata(extent=new_extent, layout=tile_layout) laid_out = raster_rdd.tile_to_layout(metadata) result = laid_out.pyramid(start_zoom=5, end_zoom=1) self.pyramid_building_check(result)