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

基于 Google Earth Engine 的 DEM 鞍部自动提取

在数字高程模型(DEM)处理中,“鞍部”是指沿一方向为局部高点、沿垂直方向为局部低点的特殊地形关键点。本文提出一种结合 二阶导数卷积核(Hessian 行列式)局部极值坡度约束连通性过滤 的鞍部提取流程,并在 GEE 中实现对北京市附近 DEM 的自动化提取。d
代码进群获取

一、方法思路

  1. 二阶导数卷积核(Hessian)

  2. 邻域极值判断

    • 在更大尺度(如 5×5 窗口)内,判断中心点在东西向为局部凸起(中心 ≥ 东、西),在南北向为局部凹陷(中心 ≤ 南、北)

  3. 坡度与曲率过滤

    • 只保留中等坡度(5°–30°)范围内的点

    • 丢弃曲率(∣det⁡H∣|\det H|∣detH∣)过小的平坦或过大的噪声

  4. 小簇连通性约束

    • 只保留面积(像元数)<= 5 的孤立小簇,剔除大片噪声区


二、GEE 代码

// 1. 定义 ROI:北京市中心 3 km 缓冲区
var roi = ee.Geometry.Point(116.4074, 39.9042).buffer(3000);// 2. 载入 DEM 并裁剪
var dem = ee.Image('USGS/SRTMGL1_003').clip(roi);// 3. 计算坡度(°)
var slope = ee.Terrain.slope(dem);// 4. 构造二阶导数卷积核
var kxx = ee.Kernel.fixed(3,3,[[0,0,0],[1,-2,1],[0,0,0]],1,1,false);
var kyy = ee.Kernel.fixed(3,3,[[0,1,0],[0,-2,0],[0,1,0]],1,1,false);
var kxy = ee.Kernel.fixed(3,3,[[ 0.25, 0, -0.25],[ 0,    0,    0  ],[-0.25, 0,  0.25]],1,1,false);// 12. 可视化
Map.centerObject(roi, 12);
Map.addLayer(dem,    {min:0,   max:2000}, 'DEM', false);
Map.addLayer(slope,  {min:0,   max:60},   'Slope', false);
Map.addLayer(detH,   {min:-0.01,max:0.01},'detH', false);
Map.addLayer(saddle, {palette:['red']},   'Saddle pts');// 13. 导出到 Google Drive
Export.image.toDrive({image: saddle.toInt8(),description: 'Beijing_Saddle_Points',folder: 'GEE_Outputs',fileNamePrefix: 'saddle_beijing',region: roi,scale: 30,maxPixels: 1e8
});

三、代码解读

  • 步骤 1–2:设置分析范围并加载 30 m SRTM DEM。

  • 步骤 3:获取每像元坡度,用于后续剔除极平或极陡区域。

  • 步骤 4–6:卷积近似计算二阶导数并形成 Hessian 行列式,快速定位曲率显著的鞍点候选。

  • 步骤 8–9:在 5×5 窗口内判断局部东西凸起、南北凹陷,捕捉“马鞍”形状。

  • 步骤 10:同时施加曲率阈值和坡度范围,去除噪声和不合地形特征的误检。

  • 步骤 11:以 ConnectedPixelCount 只保留孤立少量像元,过滤成片噪声,得到稀疏、精准的鞍点。

  • 步骤 12–13:可视化检查并导出结果。

http://www.lryc.cn/news/593696.html

相关文章:

  • 动态规划——状压DP经典题目
  • 鸿蒙蓝牙通信
  • 【Java源码阅读系列56】深度解读Java Constructor 类源码
  • GitLab 社区版 10.8.4 安装、汉化与使用教程
  • AI编程工具对比:Cursor、GitHub Copilot与Claude Code
  • 【SVM smote】MAP - Charting Student Math Misunderstandings
  • sqli-labs靶场通关笔记:第32-33关 宽字节注入
  • Kotlin方差
  • 1 渗透基础
  • ros2高级篇之高可用启动文件及配置编写
  • Spring AI 1.0版本 + 千问大模型之文本对话
  • node.js学习笔记1
  • 【数据类型与变量】
  • MySQL——约束类型
  • Springboot项目的搭建方式5种
  • 使用DataGrip连接安装在Linux上的Redis
  • Python+大模型 day02
  • 辛普森悖论
  • 使用看门狗实现复位
  • 1.初始化
  • Web开发 03
  • 双目摄像头品牌
  • 板子 5.29--7.19
  • 【科研绘图系列】R语言绘制显著性标记的热图
  • 【黄山派-SF32LB52】—硬件原理图学习笔记
  • 商业秘密视域下计算机软件的多重保护困境
  • 计算机网络:(十)虚拟专用网 VPN 和网络地址转换 NAT
  • Java多线程基础详解:从实现到线程安全
  • 6. 装饰器模式
  • ROS2 视频采集节点实现