def test_read_vector_window(geojson, landpoly_3857): """Read vector data from read_vector_window.""" zoom = 4 config = MapcheteConfig(geojson.path) vectorfile = config.params_at_zoom(zoom)["input"]["file1"] pixelbuffer = 5 tile_pyramid = BufferedTilePyramid("geodetic", pixelbuffer=pixelbuffer) tiles = tile_pyramid.tiles_from_geom(vectorfile.bbox(), zoom) feature_count = 0 for tile in tiles: for feature in read_vector_window(vectorfile.path, tile): assert "properties" in feature assert shape(feature["geometry"]).is_valid feature_count += 1 assert feature_count # into different CRS raw_config = geojson.dict raw_config["input"].update(file1=landpoly_3857) config = MapcheteConfig(raw_config) vectorfile = config.params_at_zoom(zoom)["input"]["file1"] pixelbuffer = 5 tile_pyramid = BufferedTilePyramid("geodetic", pixelbuffer=pixelbuffer) tiles = tile_pyramid.tiles_from_geom(vectorfile.bbox(), zoom) feature_count = 0 for tile in tiles: for feature in read_vector_window(vectorfile.path, tile): assert "properties" in feature assert shape(feature["geometry"]).is_valid feature_count += 1 assert feature_count
def test_read_raster_window_reproject(dummy1_3857_tif, minmax_zoom): """Read array with read_raster_window.""" zoom = 8 # with reproject config_raw = minmax_zoom.dict config_raw["input"].update(file1=dummy1_3857_tif) config = MapcheteConfig(config_raw) rasterfile = config.params_at_zoom(zoom)["input"]["file1"] dummy1_bbox = rasterfile.bbox() pixelbuffer = 5 tile_pyramid = BufferedTilePyramid("geodetic", pixelbuffer=pixelbuffer) tiles = list(tile_pyramid.tiles_from_geom(dummy1_bbox, zoom)) # target window out of CRS bounds band = read_raster_window(dummy1_3857_tif, tile_pyramid.tile(12, 0, 0)) assert isinstance(band, ma.MaskedArray) assert band.mask.all() # not intersecting tile tiles.append(tile_pyramid.tile(zoom, 1, 1)) # out of CRS bounds tiles.append(tile_pyramid.tile(zoom, 16, 1)) # out of file bbox for tile in tiles: for band in read_raster_window(dummy1_3857_tif, tile): assert isinstance(band, ma.MaskedArray) assert band.shape == tile.shape bands = read_raster_window(dummy1_3857_tif, tile, [1]) assert isinstance(bands, ma.MaskedArray) assert bands.shape == tile.shape # errors with pytest.raises(IOError): read_raster_window("nonexisting_path", tile)
def test_read_raster_window(dummy1_tif, minmax_zoom): """Read array with read_raster_window.""" zoom = 8 # without reproject config = MapcheteConfig(minmax_zoom.path) rasterfile = config.params_at_zoom(zoom)["input"]["file1"] dummy1_bbox = rasterfile.bbox() pixelbuffer = 5 tile_pyramid = BufferedTilePyramid("geodetic", pixelbuffer=pixelbuffer) tiles = list(tile_pyramid.tiles_from_geom(dummy1_bbox, zoom)) # add edge tile tiles.append(tile_pyramid.tile(8, 0, 0)) for tile in tiles: width, height = tile.shape for band in read_raster_window(dummy1_tif, tile): assert isinstance(band, ma.MaskedArray) assert band.shape == (width, height) for index in range(1, 4): band = read_raster_window(dummy1_tif, tile, index) assert isinstance(band, ma.MaskedArray) assert band.shape == (width, height) for index in [None, [1, 2, 3]]: band = read_raster_window(dummy1_tif, tile, index) assert isinstance(band, ma.MaskedArray) assert band.ndim == 3 assert band.shape == (3, width, height)
def test_process_tile_read(example_mapchete): """Raise ValueError on MapcheteProcess.open().""" config = MapcheteConfig(example_mapchete.path) tile = BufferedTilePyramid("mercator").tile(7, 1, 1) user_process = mapchete.MapcheteProcess( tile=tile, params=config.params_at_zoom(tile.zoom), input=config.get_inputs_for_tile(tile), ) with pytest.raises(DeprecationWarning): user_process.read()
def test_config_zoom11(example_mapchete, dummy2_tif, dummy1_tif): """Example configuration at zoom 11.""" config = MapcheteConfig(example_mapchete.path) zoom11 = config.params_at_zoom(11) input_files = zoom11["input"] assert input_files["file1"].path == dummy1_tif assert input_files["file2"].path == dummy2_tif assert zoom11["some_integer_parameter"] == 12 assert zoom11["some_float_parameter"] == 5.3 assert zoom11["some_string_parameter"] == "string2" assert zoom11["some_bool_parameter"] is True
def test_input_zooms(files_zooms): """Read correct input file per zoom.""" config = MapcheteConfig(files_zooms.path) # zoom 7 input_files = config.params_at_zoom(7)["input"] assert os.path.basename( input_files["greater_smaller"].path) == "dummy1.tif" assert os.path.basename(input_files["equals"].path) == "dummy1.tif" # zoom 8 input_files = config.params_at_zoom(8)["input"] assert os.path.basename( input_files["greater_smaller"].path) == "dummy1.tif" assert os.path.basename(input_files["equals"].path) == "dummy2.tif" # zoom 9 input_files = config.params_at_zoom(9)["input"] assert os.path.basename( input_files["greater_smaller"].path) == "dummy2.tif" assert os.path.basename(input_files["equals"].path) == "cleantopo_br.tif" # zoom 10 input_files = config.params_at_zoom(10)["input"] assert os.path.basename( input_files["greater_smaller"].path) == "dummy2.tif" assert os.path.basename(input_files["equals"].path) == "cleantopo_tl.tif"
def test_read_input_groups(file_groups): """Read input data groups.""" config = MapcheteConfig(file_groups.path) input_files = config.params_at_zoom(0)["input"] assert "file1" in input_files["group1"] assert "file2" in input_files["group1"] assert "file1" in input_files["group2"] assert "file2" in input_files["group2"] assert "nested_group" in input_files assert "group1" in input_files["nested_group"] assert "file1" in input_files["nested_group"]["group1"] assert "file2" in input_files["nested_group"]["group1"] assert "file1" in input_files["nested_group"]["group2"] assert "file2" in input_files["nested_group"]["group2"]