J'ai plusieurs segments de cours d'eau de 1000 km de long. J'ai besoin de trouver la différence d'altitude entre deux points de distance consécutifs de 1 km à partir de l'amont vers l'aval. Comment puis-je obtenir la différence d'altitude à partir de DEM? J'ai des segments de flux au format raster et également au format vectoriel. Ce serait mieux si j'avais une idée du script Python.
10
Réponses:
En tant que géologue, j'utilise souvent cette technique pour réaliser des coupes géologiques en Python pur. J'ai présenté une solution complète en Python: en utilisant le vecteur et les couches raster dans un point de vue géologique, sans logiciel SIG (en français)
Je présente ici un résumé en anglais:
Si vous ouvrez un DEM avec le module Python GDAL / OGR:
Par conséquent, vous avez le nombre de bandes et les paramètres de géotransformation. Si vous souhaitez extraire la valeur du raster sous un point xy:
Comme il s'agit d'un DEM, vous obtenez la valeur d'élévation sous le point. Avec 3 bandes raster avec le même point xy, vous obtenez 3 valeurs (R, G, B). Vous pouvez donc créer une fonction qui permet d'obtenir les valeurs de plusieurs rasters sous un point xy:
application
Après cela, vous traitez le profil de ligne (qui peut avoir des segments):
Pour générer des points équidistants sur la ligne, vous pouvez utiliser le module Shapely avec interpolation (plus facile que l'ogr)
et les résultats (avec aussi les valeurs RVB d'une carte géologique) avec les valeurs x, y, z, distance des listes En 3D avec matplotlib et Visvis ( valeurs x, y, z)
Coupes (x, élévation de la distance actuelle (liste dista )) avec matplotlib :
la source