Создание профиля высоты - PullRequest
2 голосов
/ 30 марта 2019

подход

У меня есть массив точек [[lon1, lat1], [lon2, lat2], ..., [lonN, latN]]. Я перебираю точки и создаю высоту в каждой точке как:

for point in points:
    ...
    alt = ds_band.ReadAsArray(px, py, 1, 1)
    # push the alt to an array

, где, ds_band - растровая полоса px - это x_offset py - это y_offset

Задача

Маленький файл DSM (~ 80 МБ) по сравнению с большим файлом DSM (~ 5 ГБ)

Получение информации о высоте из небольшого файла DSM выполняется довольно быстро. Однако получение информации о высоте из большого файла DSM занимает больше времени. Для примерно одинакового количества баллов (33370) в небольшом файле DSM требуется 1,983694553 секунды. Но в большом файле DSM это занимает 9,140556812 секунд.

Время только для получения отметок. Он не включает другие операции, такие как открытие файла DSM.

Вопрос

Есть ли лучший способ получить высоту нескольких точек, чем то, что я делаю? Есть ли способ оптимизировать ReadAsArray?

P.S. Новое в Python / GDAL. Спасибо!

...