Как изменить разрешение растра с минимальными потерями?
Пытаюсь изменить разрешение растра на 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. Второй рисунок - изменение разрешения при помощи кода. Разрешение оригинального растра 10 м. Новый растр имеет разрешение 28 м. Даже если делать новое разрешение 5 м, то края все равно немного обрезаются, но уже не так много