Как изменить разрешение растра с минимальными потерями?

Пытаюсь изменить разрешение растра на python. Использую следующий код:

with rasterio.open(file) as src:
    image = src.read(1)
    profile = src.profile
    crs = src.crs

resolution = (new_resolution, new_resolution)

current_resolution = profile['transform'].a

scale_factor = current_resolution / new_resolution

new_width = int(src.width * scale_factor)
new_height = int(src.height * scale_factor)

new_data = np.empty((src.count, new_height, new_width), dtype=src.dtypes[0])

reproject(
    source=image,
    destination=new_data[0],
    src_transform=src.transform,
    src_crs=src.crs,
    dst_transform=rasterio.transform.from_origin(src.bounds.left, src.bounds.top, *resolution),
    dst_crs=src.crs,
    resampling=rasterio.enums.Resampling.bilinear,
    extent=src.bounds)

profile["transform"] = rasterio.Affine(profile['transform'].a / scale_factor,
                                             profile['transform'].b,
                                             profile['transform'].c,
                                             profile['transform'].d,
                                             profile['transform'].e / scale_factor,
                                             profile['transform'].f)

profile["width"] = new_width
profile["height"] = new_height

Новый растр обрезается по краям. Если изменять разрешение в Qgis, то то размер нового файла +- такой же как и у оригинального. Но когда я делаю это через этот код, то новый растр меньше

Изменение размера растра в Qgis

Изменение размера растра при помощи кода

На рисунках наложил растр с новым разрешением (красным цветом) на оригинальный растр (серая раскраска). Первый рисунок - изменение растра в Qgis. Второй рисунок - изменение разрешения при помощи кода. Разрешение оригинального растра 10 м. Новый растр имеет разрешение 28 м. Даже если делать новое разрешение 5 м, то края все равно немного обрезаются, но уже не так много


Ответы (0 шт):