У меня проблема с получением значений из указанных c RasterBands очень большого файла геотифов (36+ Гб).
У меня есть этот фрагмент кода, который работает, но мне требуется более 3 минут, чтобы дать мне результат:
from osgeo import gdal
driver = gdal.GetDriverByName('GTiff')
filename = 'geotiffs\test.tif' # path to raster
dataset = gdal.Open(filename)
band = dataset.GetRasterBand(1)
projection = osr.SpatialReference(wkt=dataset.GetProjection())
cols = dataset.RasterXSize
rows = dataset.RasterYSize
transform = dataset.GetGeoTransform()
x_axes_origin = transform[0]
y_axes_origin = transform[3]
pixel_width = transform[1]
pixel_height = -transform[5]
data = band.ReadAsArray(0, 0, cols, rows)
current_epsg = int(projection.GetAttrValue('AUTHORITY', 1))
print(f'Current file ESPG: {current_epsg}')
coords = convert_coord(31.117132, 25.8679313, file_espg=current_epsg) # samples coordinates... those are fake ones
points_list = [coords] # list of X,Y coordinates
for point in points_list:
col = int((point[0] - x_axes_origin) / pixel_width)
row = int((y_axes_origin - point[1]) / pixel_height)
print(row, col, data[row][col])
Я не нашел ни одного предложения о том, как "заполнить" параметры ReadAsArray , так как нет никакой дополнительной информации об официальном do c.
Спасибо всем, кто поможет мне улучшить время выполнения!