Eu tenho vários segmentos de fluxo de 1000 km de comprimento. Preciso encontrar a diferença de altitude entre dois pontos consecutivos de distância de 1 km, começando do rio acima para o rio abaixo. Como posso obter a diferença de altitude em DEM? Eu tenho segmentos de fluxo em formato raster e também em formato vetorial. Seria melhor se eu tivesse alguma idéia sobre o script Python.
10
Respostas:
Como geólogo, costumo usar essa técnica para criar seções geológicas em Python puro. Apresentei uma solução completa em Python: Usando camadas vetoriais e raster em uma perspectiva geológica, sem o software GIS (em francês)
Apresento aqui um resumo em inglês:
Se você abrir um DEM com o módulo GDAL / OGR Python:
Como resultado, você tem o número de bandas e os parâmetros de geotransformação. Se você deseja extrair o valor da varredura em um ponto xy:
Como é um DEM, você obtém o valor da elevação abaixo do ponto. Com 3 bandas raster com o mesmo ponto xy, você obtém 3 valores (R, G, B). Portanto, você pode criar uma função que permita obter os valores de vários rasters sob um ponto xy:
inscrição
Depois disso, você processa o perfil da linha (que pode ter segmentos):
Para gerar pontos equidistantes na linha, você pode usar o módulo Shapely com interpolar (mais fácil que ogr)
e os resultados (com também os valores RGB de um mapa geológico) com os valores de distância x, y, z, das listas Em 3D com matplotlib e Visvis (valores x, y, z)
Seções transversais (x, elevação da distância atual (lista dista)) com matplotlib :
fonte