Source code for raster_tools.utils
import os
import numpy as np
import xarray as xr
[docs]def validate_file(path):
if os.path.isfile(path):
return path
raise FileNotFoundError(f"Could not find file: '{path}'")
[docs]def validate_path(path):
if os.path.exists(path):
return path
raise FileNotFoundError(f"Path does not exist: '{path}'")
[docs]def is_strictly_increasing(x):
x = np.atleast_1d(np.asarray(x).squeeze())
assert x.ndim == 1
diff = np.diff(x)
return len(diff) > 0 and (diff > 0).all()
[docs]def is_strictly_decreasing(x):
x = np.atleast_1d(np.asarray(x).squeeze())
assert x.ndim == 1
diff = np.diff(x)
return len(diff) > 0 and (diff < 0).all()
[docs]def can_broadcast(*shapes, max_dim=3, min_dim=3):
try:
result = np.broadcast_shapes(*shapes)
return len(result) >= min_dim and len(result) <= max_dim
except ValueError:
return False
[docs]def make_raster_ds(raster_dataarray, mask_dataarray):
return xr.Dataset({"raster": raster_dataarray, "mask": mask_dataarray})
[docs]def merge_masks(masks):
mask = None
for m in masks:
if mask is None:
mask = m
else:
mask |= m
return mask