arcgis中坡向计算工作原理说明

2024-04-18 15:04

本文主要是介绍arcgis中坡向计算工作原理说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用于识别出从每个像元到其相邻像元方向上值的变化率最大的下坡方向。坡向可以被视为坡度方向。输出栅格中各像元的值可指示出各像元位置处表面的朝向的罗盘方向。将按照顺时针方向进行测量,角度范围介于 0(正北)到 360(仍是正北)之间,即完整的圆。不具有下坡方向的平坦区域将赋值为 -1。

   坡向数据集中每个像元的值都可指示出该像元的坡度朝向。

    从概念上讲,坡向工具将根据要处理的像元或中心像元周围一个 3 x 3 的像元邻域的 z 值拟合出一个平面。该平面的朝向就是要处理的像元的坡向。

    下图显示的是输入高程数据集和输出坡向栅格。


1. 坡向算法

   移动的 3 x 3 窗口会访问输入栅格中的每个像元,而每次位于窗口中心的像元的坡向值将通过一种将纳入八个相邻像元值的算法进行计算。这些像元使用字母 a 至 i 进行标识,其中 e 表示当前正在计算坡向的像元。

    像元 e 在 x 方向上的变化率将通过以下算法进行计算:

[dz/dx] = ((c + 2f + i) - (a + 2d + g)) / 8

   像元 e 在 y 方向上的变化率将通过以下算法进行计算:

[dz/dy] = ((g + 2h + i) - (a + 2b + c)) / 8

   代入像元 e 在 x 方向和 y 方向上的变化率,坡向将通过以下算法进行计算:

aspect = 57.29578 * atan2 ([dz/dy], -[dz/dx])

   然后,坡向值将根据以下规则转换为罗盘方向值(0 到 360 度):

2. 坡向计算示例

   示例中,将计算移动窗口内中心像元的坡向值。

中心像元 e 在 x 方向上的变化率为:

  [dz/dx] =((c + 2f + i)-(a + 2d + g))/8=((85 + 170 + 84))-(101 + 202 + 101))/8=-8.125

像元 e 在 y 方向上的变化率为:

  [dz/dy] = ((g + 2h + i)-(a + 2b + c) / 8 =((101 + 182 + 84)-(101 + 184 + 85))/ 8 = -0.375

坡向计算如下:

  aspect = 57.29578 * atan2 ([dz/dy], -[dz/dx])= 57.29578 * atan2 (-0.375, 8.125) = -2.64

由于计算得出的值小于零,则根据最终规则得出:

  cell = 90.0 - aspect = 90 - (-2.64)= 90 + 2.64 = 92.64

中心像元 e 的值 92.64 表明它的坡向为朝东。

3. 参考文献

Burrough, P. A., and McDonell, R. A., 1998. Principles of Geographical Information Systems (Oxford University Press, New York), 190 pp.

这篇关于arcgis中坡向计算工作原理说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/915110

相关文章

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

C#中async await异步关键字用法和异步的底层原理全解析

《C#中asyncawait异步关键字用法和异步的底层原理全解析》:本文主要介绍C#中asyncawait异步关键字用法和异步的底层原理全解析,本文给大家介绍的非常详细,对大家的学习或工作具有一... 目录C#异步编程一、异步编程基础二、异步方法的工作原理三、代码示例四、编译后的底层实现五、总结C#异步编程

Go 语言中的select语句详解及工作原理

《Go语言中的select语句详解及工作原理》在Go语言中,select语句是用于处理多个通道(channel)操作的一种控制结构,它类似于switch语句,本文给大家介绍Go语言中的select语... 目录Go 语言中的 select 是做什么的基本功能语法工作原理示例示例 1:监听多个通道示例 2:带

鸿蒙中@State的原理使用详解(HarmonyOS 5)

《鸿蒙中@State的原理使用详解(HarmonyOS5)》@State是HarmonyOSArkTS框架中用于管理组件状态的核心装饰器,其核心作用是实现数据驱动UI的响应式编程模式,本文给大家介绍... 目录一、@State在鸿蒙中是做什么的?二、@Spythontate的基本原理1. 依赖关系的收集2.

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

Tomcat版本与Java版本的关系及说明

《Tomcat版本与Java版本的关系及说明》:本文主要介绍Tomcat版本与Java版本的关系及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Tomcat版本与Java版本的关系Tomcat历史版本对应的Java版本Tomcat支持哪些版本的pythonJ

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

Java的IO模型、Netty原理解析

《Java的IO模型、Netty原理解析》Java的I/O是以流的方式进行数据输入输出的,Java的类库涉及很多领域的IO内容:标准的输入输出,文件的操作、网络上的数据传输流、字符串流、对象流等,这篇... 目录1.什么是IO2.同步与异步、阻塞与非阻塞3.三种IO模型BIO(blocking I/O)NI

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

JAVA封装多线程实现的方式及原理

《JAVA封装多线程实现的方式及原理》:本文主要介绍Java中封装多线程的原理和常见方式,通过封装可以简化多线程的使用,提高安全性,并增强代码的可维护性和可扩展性,需要的朋友可以参考下... 目录前言一、封装的目标二、常见的封装方式及原理总结前言在 Java 中,封装多线程的原理主要围绕着将多线程相关的操