【ARCGIS实验】地形特征线的提取
目录
一、提取不同位置的地形剖面线
二、将DEM转化为TIN
三、进行可视分析
四、进行山脊、山谷等特征线的提取
1、正负地形提取(用于校正)
2、山脊线提取
3、山谷线的提取
4、河网的提取
5、流域的分割
五、鞍部点的提取
1、背景
2、目的
3、要求
4、数据
5、算法思想
6、操作步骤
(1)正地形、等高线和晕染图的提取
(2)山脊线的提取
(3)反地形山脊(即山谷线)的提取
(4)鞍部点的提取
六、参考链接
一、提取不同位置的地形剖面线
(1)在菜单栏单击【Customize】-【Toolbars】-【3D Analyst】,在3D Analyst工具条中选择“插入线”。
![]()
(2)在dem图中画线。

(3)在3D Analyst工具中点击选择“剖面图”。
![]()
(4)生成的上述所画线段的剖面图。

二、将DEM转化为TIN
选择【3D Analyst Tools】-【Conversion】-【From Raster】-【Raster to TIN】,打开Raster to TIN对话框,选择dem图层,设置输出TIN路径和文件名,点击OK按钮,即可得到由dem转换的tin图层。

三、进行可视分析
(1)通视分析
I、在菜单栏单击【Customize】-【Toolbars】-【3D Analyst】,在3D Analys工具条中单击“视现瞄准线工具”,打开视现瞄准线对话框,在地形表面上分别点击确定观测点和目标点位置。出现通视线,红色表示不可视,绿色表示可视。
![]()
II、3D Analys工具条

III、视现瞄准线对话框

IV、通视线
(2)视点分析
I、选择【3D Analyst Tools】-【Raster Surface】-【Curvature】,在打开的Curvature对话框中选择输入dem数据,点击OK按钮即可得到输出的栅格图层。

II、输出栅格
四、进行山脊、山谷等特征线的提取
1、正负地形提取(用于校正)
(1)在ArcToolbox中选择【Spatial Analyst Tools】-【Neighborhood(领域分析)】-【Focal Statistics(焦点统计)】,在打开的Focal Statistics对话框中选择输入dem数据,利用领域分析方法以11*11的窗口计算平均值,计算结果命名为meandem。


(2)点击【Spatial Analyst Tools】-【Map Algebra(地图代数)】-【Raster Calculator(栅格计算器)】,在打开的Raster Calculator对话框中对dem数据和meandem做减法运算。计算结果命名为xin。


(3)选择【Spatial Analyst Tools】-【Reclass(重分类)】-【Reclassify(重分类)】,对运算结果重分类。在弹出的Reclassify对话框中选择xin图层,分级界限为0,将大于0的区域属性值赋为1,小于0的区域赋值为0,命名为“zhengdixing”。另一次将小于0的区域属性值赋值为1,大于0的区域赋值为0,命名为fudixing。




2、山脊线提取
(1)填充洼地。点击【Spatial Analyst Tools】-【Hydrlogy(水文分析)】-【Fill(填洼)】,在打开的Fill对话框中选择输入dem数据,输出栅格数据文件名为Fill_dem。


(2)计算水流方向。选择【Spatial Analyst Tools】-【Hydrology(水文分析)】-【Flow Direction(流向)】,在打开的Flow Direction对话框中选择输入Fill_dem数据,输出栅格数据文件名为flowdirfill。


(3)计算汇流累积量。点击【Spatial Analyst Tools】-【Hydrology(水文分析)】-【Flow Accumulation(流量)】,在弹出的Flow Accumulation对话框中选择输入flowdirfill数据,输出栅格数据文件名为flowacc1。


(4)汇流累积量为零值的提取。打开【Spatial Analyst Tools】-【Map Algebra】-【Raster Calculator】,在打开的Raster Calculator对话框中输入公式:"flowacc1" == 0,输出栅格数据文件名为facc0。


(5)对facc0进行领域分析。点击【Spatial Analyst Tools】-【Neighborhood】-【Focal Statistics】,在打开的Focal Statistics对话框中选择输入facc0数据,输出栅格数据文件名为neiborfacc0。 (3*3 mean)

(6)打开【Spatial Analyst Tools】-【Surface(表面分析)】-【Contour(等值线)】,生成dem的等值线图,命名为Contour_dem;
打开【Spatial Analyst Tools】-【Surface(表面分析)】-【Hillshade(山体阴影)】,生成dem的山体阴影晕渲图,命名为Hillshade_dem。




(7)在neiborfacc0图层上右键选择属性,进行重新分级,分为2级,这时不断调整分级临界点,并以等值线图和晕渲图作为辅助判断,属性值越接近1的栅格越有可能是山脊线的位置,最终确定的分界阈值为0.5541。


(8)将进行过二值化的neiborfacc0进行重分类为Reclass_neiborfacc0,将属性值接近1的那一类的属性值赋值为1,其余赋值为0。【Spatial Analyst——重分类——重分类】


(9)打开栅格计算器,输入命令: "Reclass_neiborfacc0" * "zhengdixing",以消除那些存在于负地形区域中的错误的山脊线。输出栅格数据文件名为:shanjixiannoworry。


(10)对shanjixiannoworry图层重分类,所有属性不为1的栅格属性赋值NO DATA,这样就得到了山脊线,命名为Shanjixian。【Spatial Analyst——重分类——重分类】


3、山谷线的提取
打开栅格计算器,输入公式:Abs(“dem”-5000),得到与dem地形完全相反的反地形数据。剩下提取山谷线的步骤就和提取山脊线完全相同。
计算过程中的数据名称分别为:水流方向数据flowdirfan,汇流累积量数据flowacc2,零值汇流累积量nbfaccfan,对flowaccfan进行3*3领域分析求均值后的结果数据为flowacc0fan,并将其分级改为2级,分级阈值为0.65677。

4、河网的提取
(1)填充洼地
打开【ArcToolbox】-【Spatial Analyst Tools】-【Hydrology】-【Fill】,在打开的Fill对话框中选择输入dem数据,输出栅格数据文件名为filldem。


(2)生成水流方向
点击【Hydrology】-【Flow Direction】,在打开的Flow Direction对话框中选择输入filldem数据,输出栅格数据文件名fdirfill。


(3)计算汇流累积量
打开【Hydrology】-【Flow Accumulation】,在打开的Flow Accumulation对话框中选择输入fdirfill数据,输出上数据文件名flowacc。


(4)提取河网
I、提取河网栅格数据
打开栅格计算器,输入公式:Con(“flowacc”>800,1),输出栅格数据文件名streamnet。


II、提取河网矢量数据
打开【Hydrology】-【Stream to Feature】,在打开的Stream to Feature对话框中选择输入streamnet数据和fdirfill数据,输出矢量数据文件名StreamT_streamn3。


5、流域的分割
(1)提取流域盆地
打开【Hydrology】-【Basin】,在打开的Basin对话框中选择输入fdirfill数据,输出栅格数据文件名basin。


(2)生成集水流域
I、提取Streamlink
打开【Hydrology】-【Stream Link】,在打开的Stream Link对话框中输入streamnet和fdirfill数据,输出栅格数据文件名streamlink。


II、集水流域的生成
打开【Hydrology】-【Watershed】,在打开的Watershed对话框中输入fdirfill和streamlink数据,输出栅格数据文件名watershed。


五、鞍部点的提取
1. Spatial Analyst——地图代数——栅格计算器(输出:anbuqu)
"flowacc0" * "facc0fan"
2. Spatial Analyst——地图代数——栅格计算器(输出:rasteranbu)
"zhengdixing" * "anbuqu"
3. Spatial Analyst——重分类——重分类(输出:rasteranbu2)
=0→NO DATA
4. 转换工具——由栅格转出——栅格转点(输出:anbudian)
5. 对照等高线和山体阴影人工剔除伪鞍部点
具体步骤如下:
1、背景
相邻两山头之间呈马鞍形的低凹部分称为鞍部。鞍部点是重要的地形控制点,它和山顶点、山谷点及山脊线、山谷线等构成地形特征点线,对地形具有很强的控制作用。因此,因此,对这些地形特征点、线的分析研究在数字地形分析中具有很重要的意义。同时,由于鞍部点的特殊地貌形态,是的鞍部点的提取方法较山顶点低谷底点更难,目前都还存在一定的技术局限性。
2、目的
利用水文分析的方法提取地形鞍部点;
通过多种GIS空间分析方法的应用,提高对知识的综合运用能力。
3、要求
利用水文分析模块和空间分析模块相应功能提取样区地形鞍部点。
4、数据
25m分辨率的DEM数据。
5、算法思想
鞍部具有独特的形态特征,可被认为是原始地形中的山脊和反地形中的山脊回合的地方,因此可通过提取正反地形的山脊线并求其交点,获得鞍部点,鞍部点的提取流程如下图所示。

6、操作步骤
(1)正地形、等高线和晕染图的提取
同山脊线和山谷线的提取一样,由于鞍部点的整体位置是处于山脊上的,需要提取正地形以过滤那些在负地形上的错误的点。正地形的提取方法为:先用焦点统计算出DEM的平均meandem,再使用栅格计算器计算平均meandem和dem的差值,使用重分类将其分为两级,分级界线为 0,将大于 0 的区域赋值为1(即为正地形),小于 0 的区域赋值为0,命名为zhengdixing;另一次将小于0的区域赋值为1(即为负地形),大于0的赋值为0,命名负地形。利用【Spatial Analyst】|【表面分析】|【等值线】和【Spatial Analyst】|【表面分析】|【山体阴影】分别提取样区等高距为40m的等高线数据ctour和样区的晕染图hillshade。


(2)山脊线的提取
山脊的提取与上述山脊线的提取一样。分别是进行洼地填充、水流方向提取、汇流累积量的计算、汇流累积量等于0的提取。

(3)反地形山脊(即山谷线)的提取
反地形山脊的提取与上述山谷线的提取过程完全相同。分别是基于原始DEM计算出反地形DEM数据(计算中是利用原始DEM减去3000);基于反地形DEM数据提取水流方向数据;基于水流方向数据进行汇流累积量的计算;提取汇流累积量为0的栅格。

(4)鞍部点的提取
I、利用【Spatial Analyst 工具】|【地图代数】|【栅格计算器】工具将提取出的山脊线数据和山谷线数据相乘,结果为鞍部区。


II、利用同样的方法将鞍部区和正地形相乘,就得到了鞍部点的栅格数据anbudian。

III、重分类鞍部点栅格数据,将所有0值赋为NODATA数据,属性为一的保持不变,得到Reanbudian。


IV、将栅格数据Reanbudian转换成矢量数据鞍部点,配合等高线和晕染图对矢量形式的鞍部点数据进行编辑,剔除那些处于样区边缘以及内部的伪鞍部点。


注意:这里山脊和反山脊的提取只需要提取到流量等于0的地方。
六、参考链接
(1)【GIS实验】山脊山谷鞍部提取
https://blog.csdn.net/rodericklr/article/details/140178675
(2)Arcgis中山脊线,山谷线的提取,以及流域的分割
https://blog.csdn.net/qq_40323256/article/details/90320180?spm=1001.2014.3001.5506
(3)用ArcGIS进行地形鞍部的提取方法
https://mp.weixin.qq.com/s?src=11×tamp=1728376536&ver=5553&signature=OXfhwKOoxl9PPfsQhgTvdB39LKuiILBcn4j*V36aHphQpssZJqxSB5hkZVKP9Jp0HkNULAa5X5Ms*YIvw9gK0laiUC7vgk8ahkurLAVtUVhf75fGU0XNpLjzkDhwV-Kg&new=1
相关文章:
【ARCGIS实验】地形特征线的提取
目录 一、提取不同位置的地形剖面线 二、将DEM转化为TIN 三、进行可视分析 四、进行山脊、山谷等特征线的提取 1、正负地形提取(用于校正) 2、山脊线提取 3、山谷线的提取 4、河网的提取 5、流域的分割 五、鞍部点的提取 1、背景 2、目的 3…...
HTML 基础标签——表格标签<table>
文章目录 1. `<table>` 标签:定义表格2. `<tr>` 标签:定义表格行3. `<th>` 标签:定义表头单元格4. `<td>` 标签:定义表格单元格5. `<caption>` 标签:为表格添加标题6. `<thead>` 标签:定义表格头部7. `<tbody>` 标签:定义表格…...
线程函数和线程启动的几种不同形式
线程函数和线程启动的几种不同形式 在C中,线程函数和线程启动可以通过多种形式实现。以下是几种常见的形式,并附有相应的示例代码。 1. 使用函数指针启动线程 最基本的方式是使用函数指针来启动线程。 示例代码: #include <iostream&g…...
数组排序简介-基数排序(Radix Sort)
基本思想 将整数按位数切割成不同的数字,然后从低位开始,依次到高位,逐位进行排序,从而达到排序的目的。 算法步骤 基数排序算法可以采用「最低位优先法(Least Significant Digit First)」或者「最高位优先…...
进程间通信(命名管道 共享内存)
文章目录 命名管道原理命令创建命名管道函数创建命名管道 共享内存原理shmgetFIOK 代码应用:premsnattch 命名管道 用于两个毫无关系的进程间的通信。 原理 Linux文件的路径是多叉树,故文件的路径是唯一的。 让内核缓冲区不用刷新到磁盘中,…...
Python 网络爬虫教程:从入门到高级的全面指南
Python 网络爬虫教程:从入门到高级的全面指南 引言 在信息爆炸的时代,网络爬虫(Web Scraping)成为了获取数据的重要工具。Python 以其简单易用的特性,成为了网络爬虫开发的首选语言。本文将详细介绍如何使用 Python …...
深度学习:正则化(Regularization)详细解释
正则化(Regularization)详细解释 正则化(Regularization)是机器学习和统计建模领域中用以防止模型过拟合同时增强模型泛化能力的一种技术。通过引入额外的约束或惩罚项到模型的损失函数中,正则化能够有效地限制模型的…...
Freertos学习日志(1)-基础知识
目录 1.什么是Freertos? 2.为什么要学习RTOS? 3.Freertos多任务处理的原理 1.什么是Freertos? RTOS,即(Real Time Operating System 实时操作系统),是一种体积小巧、确定性强的计算机操作系统…...
CentOS9 Stream 支持输入中文
CentOS9 Stream 支持输入中文 方法一:确保 gnome-control-center 和相关组件已更新方法二:手动添加输入法源配置方法三:配置 .xinputrc 文件方法四:检查语言包 进入centos9 stream后,点击右上角电源键,点击…...
基于向量检索的RAG大模型
一、什么是向量 向量是一种有大小和方向的数学对象。它可以表示为从一个点到另一个点的有向线段。例如,二维空间中的向量可以表示为 (𝑥,𝑦) ,表示从原点 (0,0)到点 (𝑥,𝑦)的有向线段。 1.1、文本向量 1…...
【力扣 + 牛客 | SQL题 | 每日5题】牛客SQL热题216,217,223
也在牛客力扣写了一百来题了,个人感觉力扣的SQL题要比牛客的高三档的难度。(普遍来说) 1. 牛客SQL热题216:统计各个部门的工资记录数 1.1 题目: 描述 有一个部门表departments简况如下: dept_nodept_named001Marke…...
Unity humanoid 模型头发动画失效问题
在上一篇【Unity实战笔记】第二十二 提到humanoid 模型会使原先的头发动画失效,如下图所示: 头发摆动的是generic模型和动画,不动的是humanoid模型和动画 一开始我是尝试过在模型Optimize Game objects手动添加缺失的头发骨骼的,奈…...
最全Kafka知识宝典之Kafka的基本使用
一、基本概念 传统上定义是一个分布式的基于发布/订阅模式的消息队列,主要应用在大数据实时处理场景,现在Kafka已经定义为一个分布式流平台,用于数据通道处理,数据流分析,数据集成和关键任务应用 必须了解的四个特性…...
机器学习中的数据可视化:常用库、单变量图与多变量图绘制方法
《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…...
CodeQL学习笔记(3)-QL语法(模块、变量、表达式、公式和注解)
最近在学习CodeQL,对于CodeQL就不介绍了,目前网上一搜一大把。本系列是学习CodeQL的个人学习笔记,根据个人知识库笔记修改整理而来的,分享出来共同学习。个人觉得QL的语法比较反人类,至少与目前主流的这些OOP语言相比&…...
代码随想录训练营Day11 | 226.翻转二叉树 - 101. 对称二叉树 - 104.二叉树的最大深度 - 111.二叉树的最小深度
226.翻转二叉树 题目链接:226.翻转二叉树思路:遍历二叉树,遍历的时候交换左右节点即可代码: TreeNode* invertTree(TreeNode* root) {reverse(root);return root;}// 迭代法,层序遍历void f2(TreeNode* root) {queue…...
“死鱼眼”,不存在的,一个提词小技巧,拯救的眼神——将内容说给用户,而非读给用户!
视频录制时,死鱼眼问题常见 即便内容再好,眼神死板也会减分 痛点真痛:拍视频时容易紧张 面对镜头,许多人难免紧张 神情僵硬,眼神无光,甚至忘词 这不仅影响表现,还让人难以专注 忘我场景&#x…...
深度学习在复杂系统中的应用
引言 复杂系统由多个相互作用的组成部分构成,这些部分之间的关系往往是非线性的,整体行为难以通过简单的线性组合来预测。这类系统广泛存在于生态学、气象学、经济学和社会科学等多个领域,具有动态演变、自组织、涌现现象以及多尺度与异质性…...
vue3图片懒加载
背景 界面很长,屏幕不能一下装下所有内容,如果以进入首页就把所有内容都加载完的话所需时间较长,会影响用户体验,所以可以当用户浏览到时再去加载。 代码 新建index.ts文件 src下新建directives文件夹,并新建Index…...
总结一些高级的SQL技巧
1. 窗口函数 窗函数允许在查询结果的每一行上进行计算,而不需要将数据分组。这使得我们可以计算累积总和、排名等。 SELECT employee_id,salary,RANK() OVER (ORDER BY salary DESC) AS salary_rank FROM employees;2. 公用表表达式 (CTE) CTE 提供了一种更清晰的…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
反向工程与模型迁移:打造未来商品详情API的可持续创新体系
在电商行业蓬勃发展的当下,商品详情API作为连接电商平台与开发者、商家及用户的关键纽带,其重要性日益凸显。传统商品详情API主要聚焦于商品基本信息(如名称、价格、库存等)的获取与展示,已难以满足市场对个性化、智能…...
Cesium1.95中高性能加载1500个点
一、基本方式: 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...
MVC 数据库
MVC 数据库 引言 在软件开发领域,Model-View-Controller(MVC)是一种流行的软件架构模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种模式有助于提高代码的可维护性和可扩展性。本文将深入探讨MVC架构与数据库之间的关系,以…...
linux arm系统烧录
1、打开瑞芯微程序 2、按住linux arm 的 recover按键 插入电源 3、当瑞芯微检测到有设备 4、松开recover按键 5、选择升级固件 6、点击固件选择本地刷机的linux arm 镜像 7、点击升级 (忘了有没有这步了 估计有) 刷机程序 和 镜像 就不提供了。要刷的时…...
前端开发面试题总结-JavaScript篇(一)
文章目录 JavaScript高频问答一、作用域与闭包1.什么是闭包(Closure)?闭包有什么应用场景和潜在问题?2.解释 JavaScript 的作用域链(Scope Chain) 二、原型与继承3.原型链是什么?如何实现继承&a…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
return this;返回的是谁
一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请,不同级别的经理有不同的审批权限: // 抽象处理者:审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...
uniapp手机号一键登录保姆级教程(包含前端和后端)
目录 前置条件创建uniapp项目并关联uniClound云空间开启一键登录模块并开通一键登录服务编写云函数并上传部署获取手机号流程(第一种) 前端直接调用云函数获取手机号(第三种)后台调用云函数获取手机号 错误码常见问题 前置条件 手机安装有sim卡手机开启…...
