diff --git a/rasterio/tools/merge.py b/rasterio/tools/merge.py index 858ddb39..07d9c411 100644 --- a/rasterio/tools/merge.py +++ b/rasterio/tools/merge.py @@ -8,7 +8,7 @@ from rasterio._base import get_index, get_window from rasterio.transform import Affine -def merge(sources, bounds=(), res=(), nodata=None): +def merge(sources, bounds=None, res=None, nodata=None): """Copy valid pixels from input files to an output file. All files must have the same number of bands, data type, and diff --git a/rasterio/transform.py b/rasterio/transform.py index c02bc1cc..b8327116 100644 --- a/rasterio/transform.py +++ b/rasterio/transform.py @@ -2,6 +2,7 @@ import warnings from affine import Affine + IDENTITY = Affine.identity() @@ -38,3 +39,11 @@ def from_bounds(west, south, east, north, width, height): `height` in number of pixels.""" return Affine.translation(west, north) * Affine.scale( (east - west)/width, (south - north)/height) + + +def array_bounds(height, width, transform): + """Return the `west, south, east, north` bounds of an array given + its height, width, and an affine transform.""" + w, n = transform.xoff, transform.yoff + e, s = transform * (width, height) + return w, s, e, n diff --git a/tests/test_rio_merge.py b/tests/test_rio_merge.py index d492373c..95f7bc6f 100644 --- a/tests/test_rio_merge.py +++ b/tests/test_rio_merge.py @@ -95,6 +95,7 @@ def test_merge_warn(test_data_dir_1): runner = CliRunner() result = runner.invoke(merge, inputs + [outputname] + ['--nodata', '-1']) assert result.exit_code == 0 + assert os.path.exists(outputname) assert "using the --nodata option for better results" in result.output