当前位置: 首页 > 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 三者一起展示

相关文章:

  • 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 进度条介绍与使用
  • 新手怎么做网站/徐州网站建设方案优化
  • 平易云 网站建设/免费的自媒体一键发布平台
  • 西安市社交网站制作公司/直播代运营公司
  • 网站营销建设方案/中山疫情最新消息
  • 网站建设总流程/客户引流的最快方法是什么
  • 微商怎么做网站/站长平台官网