Как изменить размер растрового изображения (TIFF) до 800x600, используя растерио?

Я хочу сделать подмножество растрового изображения и поместить его в размер 800x600. Я просматривал кулинарную книгу Rasterio, но, похоже, она не позволяет мне вводить такие размеры, как 800x600. Вот что я смотрел: https://mapbox.s3.amazonaws.com/playground/perrygeo/rasterio-docs/cookbook.html

также я увидел это и подумал, что это может сработать: https://rasterio.readthedocs.io/en/latest/topics/windowed-rw.html

Я использовал фрагмент кода Reader:

import rasterio
with rasterio.open('MyRasterImage.tif') as src:
    w = src.read(1, window=Window(0, 0, 800, 600))

print(w.shape)

Однако, когда я запускаю его, он выдает мне сообщение об ошибке:

w = src.read(1, window = Window(0, 0, 800, 600))

NameError: name 'Window' is not defined

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

Я также хотел бы иметь возможность отображать новое изображение 800x600 на экране (используя Spyder), не зная, как это сделать.

Любая помощь будет принята с благодарностью.

Спасибо

0 ответов

import numpy
import rasterio
from matplotlib import pyplot
from rasterio.windows import Window

width = 800
height = 600

with rasterio.open('MyRasterImage.tif') as src:
    w = src.read(1, window=Window(0, 0, width, height))
    profile = src.profile
    profile['width'] = width
    profile['height'] = height
    # Create output
    result = numpy.full((width, height), dtype=profile['dtype'], fill_value=profile['nodata'])

#writting
with rasterio.open('/tmp/sampled_image.tif', 'w', **profile) as dataset:
    dataset.write_band(1, result)

#plotting
with rasterio.open('/tmp/sampled_image.tif') as src:
    pyplot.imshow(src.read(1), cmap='pink')
    pyplot.show()
Другие вопросы по тегам