Tengo varios segmentos de arroyo de 1000 km de largo. Necesito encontrar la diferencia de elevación entre dos puntos consecutivos de distancia de 1 km a partir de la corriente arriba a la corriente abajo. ¿Cómo puedo obtener la diferencia de elevación de DEM? Tengo segmentos de flujo en formato ráster y también en formato vectorial. Sería mejor si tuviera alguna idea sobre el script de Python.
10
Respuestas:
Como geólogo, a menudo uso esta técnica para hacer una sección transversal geológica en Python puro. Presenté una solución completa en Python: uso de capas vectoriales y ráster en una perspectiva geológica, sin software SIG (en francés)
Presento aquí un resumen en inglés:
Si abre un DEM con el módulo Python GDAL / OGR:
Como resultado, tiene el número de bandas y los parámetros de geotransformación. Si desea extraer el valor del ráster debajo de un punto xy:
Como es un DEM, obtienes el valor de elevación debajo del punto. Con 3 bandas de trama con el mismo punto xy obtienes 3 valores (R, G, B). Entonces, podría hacer una función que permita obtener los valores de múltiples rásteres bajo un punto xy:
solicitud
Después de eso, procesa el perfil de línea (que puede tener segmentos):
Para generar puntos equidistantes en la línea, puede usar el módulo Shapely con interpolar (más fácil que ogr)
y los resultados (con también los valores RGB de un mapa geológico) con los valores de distancia x, y, z, de las listas en 3D con matplotlib y Visvis ( valores x, y, z)
Secciones transversales (x, elevación desde la distancia actual (lista de distancia)) con matplotlib :
fuente