Я пытаюсь сделать простой обрез по центру как квадратный геотиф, используя растерио.
Я обрезаю изображение, используя numpy, который работает как положено, затем обновляю высоту и ширину профиля изображения.
Я также обновляю аффинное преобразование, используя src.window_transform
, но я делаю что-то не так.Аффинное преобразование оказывается неверным.
Мой код указан ниже.Может кто-нибудь сказать мне, где я портю?Спасибо.
КОД:
import rasterio as rio
#
# FUNCTIONS
#
def get_image_and_profile(path):
with rio.open(path) as src:
profile=src.profile
image=src.read()
return image, profile
def image_write(im,path,profile):
with rio.open(path,'w',**profile) as dst:
dst.write(im)
def crop_image(image,crp):
return image[:,crp:-crp,crp:-crp]
def crop_profile(profile,out_size,crp):
win=(
(crp,out_size+crp),
(crp,out_size+crp))
profile=profile.copy()
profile.pop('transform',None)
profile['width']=out_size
profile['height']=out_size
profile['affine']=src.window_transform(win)
return profile
#
# CROP GEOTIFF
#
path='input.tif'
out_path='output.tif'
crp=92
im,profile=get_image_and_profile(path)
im=crop_image(im,crp)
profile=crop_profile(profile,im.shape[1],crp)
image_write(im,out_path,profile)