Search code examples
pythongeopandasrasterio

Resampling a raster using rasterio - simple modification of grid spacing


I am resampling raster data using Python's rasterio. Looking at the rasterio.enums.Resampling class, it appears the only way to do this is to interpolate between adjacent raster grids, essentially smoothing the data.

Is there some way to do a simple upsampling that effectively divides one raster grid into many and preserves the original value for all of the sub-grids?

My resampling script is as follows - currently using the bi-linear method:

with rasterio.open(str(rasterpath+filename), crs="EPSG:4326") as src:
    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])
    )

Any suggestions? I would think some sort of treatment for discrete data would be built in but have not found it yet...


Solution

  • I found a solution.

    Deleting resampling=Resampling.bilinear avoids interpolation and performs a "simple" resampling.