TransWikia.com

Positional argument error using rasterio to reduce raster pixel size

Geographic Information Systems Asked on March 14, 2021

I’m new with rasterio and I need to reduce the pixel size of a GeoTiff. Using the code below

def resample(input_raster: str, output_raster: str = None):
    upscale_factor = 2
    with rasterio.open(input_raster) as src:

        # resample data to target shape
        data = src.read(
            out_shape=(
                src.count,
                int(src.height * upscale_factor),
                int(src.width * upscale_factor)
            ),
            resampling=Resampling.bilinear
        )

        # scale image transform
        transform = src.transform * src.transform.scale(
            (src.width / data.shape[-1]),
            (src.height / data.shape[-2])
        )

        with rasterio.open(
            output_raster,
            "w",
            driver='GTiff',
            height=data.shape[2],
            width=data.shape[1],
            count=1,
            dtype=src.dtypes[0],
            crs=src.crs,
            transform=transform,
        ) as dest:
            print(dest)
            dest.write(1, data)

I see this error:

test_raster.py:28 (test_resample) tmp_path =
PosixPath(‘/tmp/pytest-of-maxdragonheart/pytest-0/test_resample0’)

def test_resample(tmp_path: Path) -> None:
    output_data = str(tmp_path / "resampled.tif")

   resample(
        input_raster=input_raster,
        output_raster=output_data
    )

test_raster.py:32:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ../../raster.py:123: in resample
dest.write(1, data)


??? E rasterio.errors.InvalidArrayError: Positional argument arr must be an array-like object

rasterio/_io.pyx:1338: InvalidArrayError

How I can solve?

One Answer

It looks like you have the output band index and array arguments swapped.

Try changing this:

dest.write(1, data)

to this:

dest.write(data, 1)

Answered by mikewatt on March 14, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP