Результат маски Rasterio на 1 пиксель больше в каждом измерении, чем входные данные маски.Python

Программы на Python
Anonymous
Результат маски Rasterio на 1 пиксель больше в каждом измерении, чем входные данные маски.

Сообщение Anonymous »

У меня есть 2 растра разных размеров, и я хочу обрезать больший растр, чтобы он соответствовал размерам меньшего растра (не только по широте/длине, но и по форме x/y). Код почти работает, т. е. больший растр практически обрезается/маскируется под меньший растр, за исключением того, что он по-прежнему на 1 пиксель больше в каждом измерении (754x879 вместо 753x878, последнее из которых является размером меньшего растра).
Почему размеры маскированного растра не совпадают с размерами маскирующего растра?
Вот мой код:

Код: Выделить всё

import rasterio
import geopandas as gpd
from shapely.geometry import box
from rasterio.mask import raster_geometry_mask
import json

masking_raster = rasterio.open(path/to/file)
raster_to_mask = rasterio.open(path/to/file)

bbox = box(*masking_raster.bounds)
geo = gpd.GeoDataFrame({'geometry': bbox}, index=[0], crs=val_file.crs)
bbox_json = json.loads(gdf.to_json())['features'][0]['geometry']

masked_array, out_transform, window = raster_geometry_mask(val_file, shapes=[bbox_json], crop=True, all_touched=False)
print("masking raster shape: ", masking_raster.shape)
# masking raster shape:  (753, 878)
print("resulting masked array shape: ", masked_array.shape)
# resulting masked array shape:  (754, 879)
Еще одна вещь, которую я проверил, — это преобразование каждого входного растра, и я заметил, что они немного отличаются. Может ли это привести к тому, что маскированный растр будет иметь те же геометрические границы, что и маскирующий растр, но разные размеры x/y?

Подробнее здесь: https://stackoverflow.com/questions/784 ... king-input

Вернуться в «Python»