У меня есть несколько потоковых сегментов длиной 1000 км. Мне нужно найти перепад высот между двумя последовательными точками на расстоянии 1 км, начиная с восходящего и нисходящего потоков. Как я могу получить разницу высот от DEM? У меня есть потоковые сегменты в растровом формате, а также в векторном формате. Было бы лучше, если бы я получил представление о скрипте Python.
10
Ответы:
Как геолог, я часто использую эту технику для создания геологического разреза на чистом Python. Я представил полное решение на Python: использование векторных и растровых слоев в геологической перспективе, без программного обеспечения ГИС (на французском языке)
Я представляю здесь резюме на английском языке:
Если вы открываете DEM с помощью модуля Python GDAL / OGR:
В результате у вас есть количество полос и параметры геотрансформации. Если вы хотите извлечь значение растра в точке xy:
Поскольку это DEM, вы получаете значение высоты под точкой. С 3 растровыми полосами с одинаковой точкой xy вы получите 3 значения (R, G, B). Таким образом, вы можете создать функцию, которая позволяет получить значения нескольких растров в точке xy:
применение
После этого вы обрабатываете профиль линии (который может иметь сегменты):
Для создания равноудаленных точек на линии вы можете использовать модуль Shapely с интерполяцией (проще, чем ogr)
и результаты (вместе со значениями RGB геологической карты) со значениями x, y, z, расстояний списков в 3D с matplotlib и Visvis (значения x, y, z)
Поперечные сечения (х, высота от текущего расстояния (список диста )) с помощью matplotlib :
источник