Извлечь повернутый прямоугольник из растра в Python
Я использую GDAL в Python для работы с растрами GeoTIFF. Я использую следующий код для извлечения небольших прямоугольных фрагментов из всего растра:
data_file = gdal.Open("path/to/raster.tiff")
data = data_file.ReadAsArray(xoffset, yoffset, xsize, ysize)
Как я могу изменить этот код, чтобы извлечь повернутые прямоугольные области из растра. Например, я хотел бы иметь возможность извлекать данные из области, показанной красным цветом ниже.
Я бы хотел, чтобы красная область была передискретизирована и повернута, чтобы я мог получить к ней доступ как к простому массиву данных numpy.
1 ответ
Я создал решение этой проблемы, следуя этому отличному сообщению о том, как реализовать аффинные преобразования.
Мое решение работает:
- С использованием
ReadAsArray
прочитать часть полного растра, полностью содержащую красную область; - Определение точек
p0
,p1
,p2
представление верхнего левого, верхнего правого и нижнего левого углов красной области соответственно в пиксельных координатах; - Реализация алгоритма, как описано в ссылке, для вычисления аффинного преобразования, оставляя мне красную область, повернутую в горизонтальное положение.