rasterio/tests/test_rio_stack.py
Sean Gillies 835c10b228
Add a merge CLI and Python tool option to use best source res (#3130)
* Add a merge CLI and Python tool option to use best source res

Resolves #2045

* Compute best resolution without a list

* Add a stack tool and update rio-stack command

* Add another test, comment out image generation

* Remove commented code, replace "merge" with "stack" in docs

* Add option to get a masked array.

Resolves #2691.
2024-08-08 15:59:29 -06:00

98 lines
2.8 KiB
Python

import rasterio
from rasterio.rio.main import main_group
def test_stack(tmpdir, runner):
outputname = str(tmpdir.join('stacked.tif'))
result = runner.invoke(
main_group, ['stack', 'tests/data/RGB.byte.tif', outputname])
assert result.exit_code == 0
with rasterio.open(outputname) as out:
assert out.count == 3
assert out.read(1).max() > 0
def test_stack_2(tmpdir, runner):
outputname = str(tmpdir.join("stacked.tif"))
result = runner.invoke(
main_group,
["stack", "tests/data/RGB.byte.tif", "tests/data/RGB.byte.tif", outputname],
)
assert result.exit_code == 0
with rasterio.open(outputname) as out:
assert out.count == 6
assert out.read(1).max() > 0
def test_stack_disjoint(tmpdir, runner):
outputname = str(tmpdir.join("stacked.tif"))
result = runner.invoke(
main_group,
[
"stack",
"tests/data/rgb1.tif",
"tests/data/rgb2.tif",
"tests/data/rgb3.tif",
"tests/data/rgb4.tif",
outputname,
],
)
assert result.exit_code == 0
with rasterio.open(outputname) as out:
assert out.count == 12
assert out.shape == (718, 791)
def test_stack_list(tmpdir, runner):
outputname = str(tmpdir.join('stacked.tif'))
result = runner.invoke(
main_group, [
'stack', 'tests/data/RGB.byte.tif', '--bidx', '1,2,3', outputname])
assert result.exit_code == 0
with rasterio.open(outputname) as out:
assert out.count == 3
def test_stack_slice(tmpdir, runner):
outputname = str(tmpdir.join('stacked.tif'))
result = runner.invoke(
main_group, [
'stack',
'tests/data/RGB.byte.tif', '--bidx', '..2',
'tests/data/RGB.byte.tif', '--bidx', '3..',
outputname])
assert result.exit_code == 0
with rasterio.open(outputname) as out:
assert out.count == 3
def test_stack_single_slice(tmpdir, runner):
outputname = str(tmpdir.join('stacked.tif'))
result = runner.invoke(
main_group, [
'stack',
'tests/data/RGB.byte.tif', '--bidx', '1',
'tests/data/RGB.byte.tif', '--bidx', '2..',
'--rgb', outputname])
assert result.exit_code == 0
with rasterio.open(outputname) as out:
assert out.count == 3
def test_format_jpeg(tmpdir, runner):
outputname = str(tmpdir.join('stacked.jpg'))
result = runner.invoke(
main_group, [
'stack', 'tests/data/RGB.byte.tif', outputname,
'--format', 'JPEG'])
assert result.exit_code == 0
def test_error(tmpdir, runner):
outputname = str(tmpdir.join('stacked.tif'))
result = runner.invoke(
main_group, [
'stack', 'tests/data/RGB.byte.tif', outputname,
'--driver', 'BOGUS'])
assert result.exit_code == 1