mirror of
https://github.com/rasterio/rasterio.git
synced 2025-12-08 17:36:12 +00:00
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
"""Unittests for rasterio.mask"""
|
|
|
|
from packaging.version import parse
|
|
import pytest
|
|
|
|
import rasterio
|
|
from rasterio.mask import mask as mask_tool
|
|
|
|
|
|
# Custom markers.
|
|
xfail_pixel_sensitive_gdal2 = pytest.mark.xfail(
|
|
parse(rasterio.__gdal_version__) < parse('2.0dev'),
|
|
reason="This test is sensitive to pixel values and requires GDAL 2.0+")
|
|
|
|
|
|
def test_nodata(basic_image_file, basic_geometry):
|
|
nodata_val = 0
|
|
geometries = [basic_geometry]
|
|
with rasterio.open(basic_image_file, "r") as src:
|
|
masked, transform = mask_tool(src, geometries, crop=False,
|
|
nodata=nodata_val, invert=True)
|
|
assert(masked.data.all() == nodata_val)
|
|
|
|
|
|
def test_no_nodata(basic_image_file, basic_geometry):
|
|
default_nodata_val = 0
|
|
geometries = [basic_geometry]
|
|
with rasterio.open(basic_image_file, "r") as src:
|
|
masked, transform = mask_tool(src, geometries, crop=False, invert=True)
|
|
assert(masked.data.all() == default_nodata_val)
|
|
|
|
|
|
@xfail_pixel_sensitive_gdal2
|
|
def test_crop(basic_image, basic_image_file, basic_geometry):
|
|
geometries = [basic_geometry]
|
|
with rasterio.open(basic_image_file, "r") as src:
|
|
masked, transform = mask_tool(src, geometries, crop=True)
|
|
|
|
image = basic_image
|
|
image[4, :] = 0
|
|
image[:, 4] = 0
|
|
|
|
assert masked.shape == (1, 3, 3)
|
|
assert (masked[0] == image[2:5, 2:5]).all()
|
|
|
|
|
|
@xfail_pixel_sensitive_gdal2
|
|
def test_crop_all_touched(basic_image, basic_image_file, basic_geometry):
|
|
geometries = [basic_geometry]
|
|
with rasterio.open(basic_image_file, "r") as src:
|
|
masked, transform = mask_tool(src, geometries, crop=True,
|
|
all_touched=True)
|
|
|
|
assert masked.shape == (1, 3, 3)
|
|
assert (masked[0] == basic_image[2:5, 2:5]).all()
|
|
|
|
|
|
def test_crop_and_invert(basic_image_file, basic_geometry):
|
|
geometries = [basic_geometry]
|
|
with rasterio.open(basic_image_file) as src:
|
|
with pytest.raises(ValueError):
|
|
masked, transform = mask_tool(src, geometries,
|
|
crop=True, invert=True)
|