Esempio n. 1
0
def test_clip_unequal_timedelta(source, empty_source):
    # clip checks for matching timedeltas; test that here
    # NB: note that `source` is temporal and `empty_source` is not
    with pytest.raises(ValueError, match=".*resolution of the clipping.*"):
        raster.Clip(source, empty_source)
    with pytest.raises(ValueError, match=".*resolution of the clipping.*"):
        raster.Clip(empty_source, source)
Esempio n. 2
0
def test_clip_attrs_with_reprojection(source, empty_source):
    # create a raster in WGS84 that contains the store
    clipping_mask = MemorySource(
        data=source.data,
        no_data_value=source.no_data_value,
        projection="EPSG:4326",
        pixel_size=1,
        pixel_origin=(4, 54),
        time_first=source.time_first,
        time_delta=source.time_delta,
    )
    clip = raster.Clip(source, clipping_mask)
    assert clip.extent == source.extent
    assert clip.geometry.GetEnvelope() == source.geometry.GetEnvelope()
Esempio n. 3
0
def test_clip_attrs_no_intersection(source):
    # create a raster in that does not overlap the store
    clipping_mask = MemorySource(
        data=source.data,
        no_data_value=source.no_data_value,
        projection="EPSG:28992",
        pixel_size=source.pixel_size,
        pixel_origin=[o + 5 for o in source.pixel_origin],
        time_first=source.time_first,
        time_delta=source.time_delta,
    )
    clip = raster.Clip(source, clipping_mask)
    assert clip.extent is None
    assert clip.geometry is None
Esempio n. 4
0
def test_clip_partial_temporal_overlap(source, vals_request):
    # create a clipping mask in that temporally does not overlap the store
    clipping_mask = MemorySource(
        data=source.data,
        no_data_value=source.no_data_value,
        projection=source.projection,
        pixel_size=source.pixel_size,
        pixel_origin=source.pixel_origin,
        time_first=source.time_first + source.time_delta,
        time_delta=source.time_delta,
    )
    clip = raster.Clip(source, clipping_mask)
    assert clip.period == (clipping_mask.period[0], source.period[1])
    assert clip.get_data(**vals_request)["values"][:, 0, 0].tolist() == [7, 255]
Esempio n. 5
0
def test_clip_no_temporal_overlap(source, vals_request):
    # create a clipping mask in that temporally does not overlap the store
    clipping_mask = MemorySource(
        data=source.data,
        no_data_value=source.no_data_value,
        projection=source.projection,
        pixel_size=source.pixel_size,
        pixel_origin=source.pixel_origin,
        time_first=source.time_first + 10 * source.time_delta,
        time_delta=source.time_delta,
    )
    clip = raster.Clip(source, clipping_mask)
    assert clip.period is None
    assert clip.get_data(**vals_request) is None
Esempio n. 6
0
def test_clip_attrs_intersects(source, empty_source):
    # create a raster in that only partially overlaps the store
    clipping_mask = MemorySource(
        data=source.data,
        no_data_value=source.no_data_value,
        projection="EPSG:28992",
        pixel_size=source.pixel_size,
        pixel_origin=[o + 3 for o in source.pixel_origin],
        time_first=source.time_first,
        time_delta=source.time_delta,
    )
    clip = raster.Clip(source, clipping_mask)
    expected_extent = (
        clipping_mask.extent[0],
        clipping_mask.extent[1],
        source.extent[2],
        source.extent[3],
    )
    expected_geometry = source.geometry.Intersection(clipping_mask.geometry)
    assert clip.extent == expected_extent
    assert clip.geometry.ExportToWkt() == expected_geometry.ExportToWkt()
Esempio n. 7
0
def test_clip_empty_source(source, empty_source, vals_request):
    clip = raster.Clip(empty_source, raster.Snap(source, empty_source))
    assert clip.get_data(**vals_request) is None
Esempio n. 8
0
def test_clip_matching_timedelta(source):
    clip = raster.Clip(source, source == 7)
    assert clip.timedelta == source.timedelta
Esempio n. 9
0
def test_clip_attrs_mask_empty(source, empty_source):
    # clip should propagate the (empty) extent of the clipping mask
    clip = raster.Clip(source, raster.Snap(empty_source, source))
    assert clip.extent is None
    assert clip.geometry is None
Esempio n. 10
0
def test_clip_meta_request(source, vals_request, expected_meta):
    clip = raster.Clip(source, source)
    vals_request["mode"] = "meta"
    assert clip.get_data(**vals_request)["meta"] == expected_meta
Esempio n. 11
0
def test_clip_time_request(source, vals_request, expected_time):
    clip = raster.Clip(source, source)
    vals_request["mode"] = "time"
    assert clip.get_data(**vals_request)["time"] == expected_time
Esempio n. 12
0
def test_clip_with_bool(source, vals_request):
    clip = raster.Clip(source, source == 7)
    assert_equal(clip.get_data(**vals_request)["values"][:, 0, 0], [255, 7, 255])
Esempio n. 13
0
def test_clip_with_data(source, nodata_source, vals_request):
    # the clipping mask has data everywhere (nothing will be masked)
    clip = raster.Clip(source, source)
    assert_equal(clip.get_data(**vals_request)["values"][:, 0, 0], [1, 7, 255])
Esempio n. 14
0
def test_clip_with_nodata(source, nodata_source, vals_request):
    # the clipping mask has nodata everywhere (everything will be masked)
    clip = raster.Clip(source, nodata_source)
    assert_equal(clip.get_data(**vals_request)["values"], 255)
Esempio n. 15
0
def test_clip_with_empty_mask(source, empty_source, vals_request):
    clip = raster.Clip(source, empty_source)
    assert clip.get_data(**vals_request) is None
Esempio n. 16
0
def test_clip_attrs_store_empty(source, empty_source):
    # clip should propagate the (empty) extent of the store
    clip = raster.Clip(empty_source, source)
    assert clip.extent is None
    assert clip.geometry is None