Suite

Rechercher des lacs sur un raster d'altitude

Rechercher des lacs sur un raster d'altitude


J'aimerais savoir s'il existe un moyen d'identifier les lacs en fonction d'un raster d'altitude (comme SRTM ou ASTER) ? Pour autant que je sache, cela signifierait identifier n'importe quelle cellule en dessous de l'altitude des cellules voisines, mais je ne trouve rien de lié, donc je suppose que ce n'est pas si simple…

La chose la plus proche que j'ai trouvée était d'utiliser r.watershed pour identifier les petits bassins (seuil de 10 à 100), puis de les classer en fonction de leur accumulation. Certains bassins affichent un niveau bien plus élevé que les bassins environnants, alors j'ai compris que cela pouvait signifier un lac ou quelque chose comme ça…

Une idée de comment le faire mieux, dans GRASS ou QGIS ? Est-ce même possible ?


Dans vos commentaires ci-dessus, vous avez exprimé votre intérêt pour ma méthode suggérée, et je fournis donc une réponse plus détaillée ici. La méthode utilise les outils disponibles dans Whitebox GAT, le SIG open source dont je suis le développeur principal, mais il est tout à fait possible que des fonctions similaires soient disponibles dans QGIS et GRASS GIS, de sorte que vous puissiez utiliser la même approche. Je suppose également que vous utilisez des données SRTM DEM, qui ont une bonne propriété pour cette application d'avoir été traitées de manière à ce que les grands lacs aient des valeurs d'altitude uniformes. La première étape consiste donc à acquérir le DEM SRTM de la zone d'intérêt. Vous pouvez utiliser les Whitebox GAT Récupérer les données SRTM DEM outil à cet effet, qui importera automatiquement chacun des titres pour la zone d'intérêt, comblera les lacunes de données manquantes et mosaïquera les tuiles dans un seul DEM.

Utilisez maintenant le Créer un nouveau fichier de formes outil pour numériser un point d'ensemencement dans chacun des lacs d'intérêt.

Il existe un didacticiel dans le menu Aide qui décrit comment numériser des éléments si cela est nécessaire. Dans l'exemple ci-dessus, je n'ai clairement qu'une poignée de grands lacs, mais si vous avez de nombreux lacs, cette étape peut prendre un peu de temps. Vous pouvez également acquérir les points de départ nécessaires en extrayant des zones planes, puis en réduisant chaque zone plane contiguë à leurs points centraux et en vectorisant ces points ; Cependant, mon inquiétude est que sur un terrain plus plat, le nombre de points « plats » qui ne sont pas réellement des lacs puisse être assez élevé et que vous vous retrouviez avec des caractéristiques parasites. N'oubliez pas non plus que les données d'altitude SRTM sont stockées sous forme de mètres entiers et que le nombre de cellules de grille apparemment plates peut donc être important même sur un terrain modérément en pente. Si vos lacs sont relativement grands et se comptent par dizaines ou par centaines, la numérisation manuelle des points d'ensemencement est probablement votre meilleure stratégie. Les lacs plus petits n'ont probablement pas été corrigés pour posséder des altitudes uniformes dans les données SRTM et ne peuvent donc pas être extraits à l'aide de cette approche.

Utilisez maintenant le Croissance de région simple outil avec les points d'ensemencement pour délimiter toute l'étendue de chaque lac. J'utilise « 0 » comme seuil similaire puisque les données SRTM ont été corrigées pour des altitudes de lac uniformes.

Enfin, j'ai tendance à vectoriser les polygones du lac à des fins de superposition en utilisant le Raster en polygones vectoriels outil:

J'ai utilisé cette approche assez souvent et elle est très robuste même si j'imagine que cela prendrait du temps si vous avez des milliers de lacs. Dans ce cas, vous devrez probablement utiliser une méthode automatisée pour trouver les points de départ (comme décrit ci-dessus).