当前位置: 首页 > news >正文

基于地形数据计算山体阴影

1 基础知识

3 种最常见的激光雷达派生数据产品:

  • Digital Terrain Model (or DTM):地面高程。
  • Digital Surface Model (or DSM):表面顶部(想象一下在森林的树冠上覆盖一张床单)。
  • Canopy Height Model (CHM):地面与物体顶部离地之间的高度或残差距离。这包括树木、建筑物和地球表面任何其他物体的实际高度。CHM 通过DSM 中减去 DTM 来创建。

2 基于地形数据计算山体阴影

1 读取地形数据

dtm_dataset = rio.open(os.path.join('.\data','NEON_D17_TEAK_DP3_320000_4092000_DTM.tif'))
dtm_data = dtm_dataset.read(1)

2 计算山体阴影

山体阴影用于可视化给定指定光源的表面上每个像素的假设照明值(从 0 到 255)。

要计算山体阴影,需要照明源的天顶(高度)和方位角,以及地形的坡度和坡向。

山体阴影的公式为:

其中所有角度均以弧度为单位。

# function to caluclate hillshade
def hillshade(array,azimuth,angle_altitude):azimuth = 360.0 - azimuth x, y = np.gradient(array)slope = np.pi/2. - np.arctan(np.sqrt(x*x + y*y))aspect = np.arctan2(-x, y)azm_rad = azimuth*np.pi/180. #azimuth in radiansalt_rad = angle_altitude*np.pi/180. #altitude in radiansshaded = np.sin(alt_rad)*np.sin(slope) + np.cos(alt_rad)*np.cos(slope)*np.cos((azm_rad - np.pi/2.) - aspect)return 255*(shaded + 1)/2hs_data = hillshade(dtm_data,225,45)

DTM+山体阴影:

3 计算冠层高度

dsm_dataset = rio.open(os.path.join('.\data','NEON_D17_TEAK_DP3_320000_4092000_DSM.tif'))
dsm_data = dsm_dataset.read(1)
chm_data = dsm_data - dtm_data;

4 三者一起展示

http://www.dtcms.com/a/244130.html

相关文章:

  • YOLO-FireAD:通过混合注意力与双池化融合实现高精度实时火灾检测
  • 专题:2025中国游戏科技发展白皮书报告汇总解读|附130+份报告PDF汇总下载
  • Java中的设计模式:23种经典模式在实际项目中的应用案例
  • 行为设计模式之Observer(观察者)
  • 设计模式-组合模式
  • 复习日!!
  • 软件设计模式(Java)复习
  • 【Docker】快速入门与项目部署实战
  • [3-02-01].第03节:环境搭建 - 在Docker中安装部署Redis环境:
  • (十一)优化算法(Optimization):深度学习训练中的收敛性分析与泛化理论
  • Java锁机制对决:ReadWriteLock vs StampedLock
  • C#使用MindFusion.Diagramming框架绘制流程图(3):加权图的最短路径算法
  • 2025年SEVC SCI2区,基于强化学习的改进算术优化算法QL-REP-AOA+全局优化,深度解析+性能实测
  • n8n部署步骤
  • 【完整源码+数据集+部署教程】石材实例分割系统源码和数据集:改进yolo11-CA-HSFPN
  • 统一事件源
  • mysql知识点3--创建和使用数据库
  • WPF案例展示
  • [原创](现代Delphi 12指南):[macOS 64bit App开发]: SameText, SameStr, 比较字符串更简单
  • Boost.Timer 中的 progress_display 进度条介绍与使用
  • mac redis以守护进程重新启动
  • CppCon 2016 学习:A C++ MQTT Message Broker for the Enterprise
  • 机器学习基本概念与建模流程
  • React第六十节 Router中createHashRouter的具体使用详解及案例分析
  • 安信可(云知声蜂鸟US516P6)SDK开发学习---log日志打印子系统模块
  • 蓝桥杯等竞赛场景下 C++ 的时间与空间复杂度深度解析​
  • Python打卡第51天
  • 文献管理软件EndNote下载与安装教程(详细教程)2025最新版详细图文安装教程
  • MySQL查看连接情况
  • 力扣-347.前K个高频元素