растерио: центральная геотеза, профили и window_transform - PullRequest
0 голосов
/ 16 октября 2018

Я пытаюсь сделать простой обрез по центру как квадратный геотиф, используя растерио.

Я обрезаю изображение, используя 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)

1 Ответ

0 голосов
/ 18 октября 2018

Ваше окно кажется выключенным, должно быть

rasterio.windows.Window (col_off, row_off, width, height)

так:

rasterio.windows.Window (crp, crp, img.shape 1 , img.shape [0])

...