IDL 实现求算 DEM 坡度坡向
关于坡度坡向的定义,请Google之。
源码:
IDL 源码PRO ASPECT_SLOPE,DEM,ASPECT = ASPECT,SLOPE=SLOPE,PIXELSIZE = PIXELSIZE
;REF TO doi:10.1016/j.cageo.2003.07.005
ASPECT = -1
SLOPE = -1
PIXELSIZE = [30.,30.]
GET_SZ,DEM,ns=ns,nl=nl,nb=nb,type = type
IF ISA(DEM,/NUMBER) AND NB EQ 1 AND SIZE(DEM,/N_DIMENSIONS) EQ 2 THEN BEGIN
K_X = TRANSPOSE([-1,1])
K_Y = [-1.0,1.0]
DX = CONVOL(DEM,K_X,/EDGE_TRUNCATE,/NAN)/PIXELSIZE[1] ; MEI CUO ,
DY = CONVOL(DEM,K_Y,/EDGE_TRUNCATE,/NAN)/PIXELSIZE[0]
PI = ACOS(-1.0D)
HELP,DX,DY
SLOPE = ATAN( SQRT(DX*DX + DY * DY)) * 180.0 / PI
ASPECT = 270 + ATAN(DY*1.0 /DX) - 90.0 * FIX(DX / ABS(DX))
ENDIF
END pro GET_SZ,data,ns=ns,nl=nl,nb=nb,type = type sz = size(data) type = sz[0] ge 1 ? sz[-2] : 0
ns = sz[0] ge 1 ? sz[1] : 1
nl = sz[0] ge 2 ? sz[2] : 1
nb = sz[0] ge 3 ? sz[3] : 1 end
说明:
参考文献见代码,可以直接在google搜到pdf下载。
主要Convol窗口卷积操作,详细用法查IDL帮助。如果熟悉数字图像处理,应该记得拉普拉斯算子或者Canny算子。例如以左上角(2,2)像素为中心3×3的窗口,点乘以[0,-1,0,],[-1,5,-1],[0,-1,0]],然后移动到(2,3)像素,再次点乘以[0,-1,0,],[-1,5,-1],[0,-1,0]],这就叫做滑动窗口卷积。其中[0,-1,0,],[-1,5,-1],[0,-1,0]]叫做卷积核。
卷积和点乘以一个意思,首先要size一样,例如[1,2]点乘或卷积 [3,4],就等于 1*3+2*4 = 11。其次是对齐位置,各乘各的,1乘3,2乘4,最后求和。
剩下就是翻译坡度、坡向的公式了,查参考pdf文献,sqrt是开平方,atan是arctan反正切函数,abs绝对值函数,fix求整。
然后就是结果输出了。
IDL 实现求算 DEM 坡度坡向的更多相关文章
- geotrellis使用(七)记录一次惨痛的bug调试经历以及求DEM坡度实践
眼看就要端午节了,屌丝还在写代码,话说过节也不给轻松,折腾了一天终于解决了一个BUG,并完成了老板安排的求DEM坡度的任务,那么就分两段来表. 一.BUG调试 首先记录一天的BUG调试,简单copy了 ...
- 基于DEM的坡度坡向分析
坡度坡向分析方法 坡度(slope)是地面特定区域高度变化比率的量度.坡度的表示方法有百分比法.度数法.密位法和分数法四种,其中以百分比法和度数法较为常用.本文计算的为坡度百分比数据.如当角度为45度 ...
- Normal Map中的值, Tangent Space, 求算 Tangent 与 Binormal 与 TBN Matrix
- Normal Map中的值 - 有没有想过,Normal Map(法线贴图)为什么看上去都是“偏蓝色”的?这是因为,在map中存储的值都是在Tangent Space(切空间)下的.比如, ...
- [转]Normal Map中的值, Tangent Space, 求算 Tangent 与 Binormal 与 TBN Matrix
原文出处 https://www.cnblogs.com/lookof/p/3509970.html - Normal Map中的值 - 有没有想过,Normal Map(法线贴图)为什么看上去都 ...
- DEM、DTM和DSM的区别
一.DTM(Digital Terrain Model) 数字地面模型是利用一个任意坐标系中大量选择的已知x.y.z的坐标点对连续地面的一个简单的统计表示,或者说,DTM就是地形表面形态属性信息的数字 ...
- DTM/DEM/DSM/DOM/DLG
一.DTM (Digital Terrain Model) 数字地面模型是利用一个任意坐标系中大量选择的已知x .y .z 的坐标点对连续地面的一个简单的统计表示,或者说,DTM 就是地形表面形态属性 ...
- [LeetCode] Binary Tree Tilt 二叉树的坡度
Given a binary tree, return the tilt of the whole tree. The tilt of a tree node is defined as the ab ...
- DEM反应不收敛问题
之前算DEM反应一直不收敛,后来把计算规模减少到两个固定颗粒,也就是仿照reactive-chemistry和evaperation这两个算例. 目前reactive-chemistry这个算例,把各 ...
- hdu1066 Last non-zero Digit in N!(求阶乘最后一位不为0的数字)
http://acm.hdu.edu.cn/showproblem.php?pid=1066 转自:https://blog.csdn.net/fengyu0556/article/details/5 ...
随机推荐
- Openjudge-计算概论(A)-球弹跳高度的计算
描述: 一球从某一高度落下(整数,单位米),每次落地后反跳回原来高度的一半,再落下.编程计算气球在第10次落地时,共经过多少米? 第10次反弹多高?输入输入一个整数h,表示球的初始高度.输出输出包含两 ...
- c#循环
循环:反复执行某段代码. 循环四要素:初始条件,循环条件,循环体,状态改变. for(初始条件;循环条件;状态改变) { 循环体 } break ——中断循环,跳出 ...
- 解决curl中errno为51和60的错误
今天使用curl调用https接口的时候,发现接收不了数据 然后打印出curl_errno和curl_error发现是60错误,而生产环境是51错误 查了相关资料 加上两个参数就可以了 curl_se ...
- iOS https plist
<key>NSAppTransportSecurity</key> <dict> <key>NSAllowsArbitraryLoads</key ...
- 如何用脚本快速修改IP地址(Netsh)
如何用脚本快速修改IP地址(Netsh) 如果通过Windows的网络属性修改Ip/网关,真是太麻烦了.最近一个项目经常要切换ip,所以我写了两个脚本:c:\116.bat netsh interfa ...
- Android自动测试之monkeyrunner工具
monkeyrunner工具 前言: 最近开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括 android测试框架.CTS.Monkey.Monkeyr ...
- MFC中为菜单或按钮添加快捷键功能
1.新建一快捷键资源,ACCELERATOR,关联相应的ID号,下图所示中,其中,第一个ID为自定义快捷键ID,按CTRL+R,此时响应该ID以应的消息响应函数, 第二个ID为菜单ID,此时按CTRL ...
- JS总结之二:DOM对象控制HTML
DOM对象控制HTML 1.方法 getElementsByName( ) ——获取name getElementsByTagName( ) ——获取元素 getAttribute( ) ——获取元素 ...
- HDU2629:Identity Card
Problem Description Do you own an ID card?You must have a identity card number in your family's Hous ...
- OpenCV ——双线性插值(Bilinear interpolation)
1,原理 在图像的仿射变换中,很多地方需要用到插值运算,常见的插值运算包括最邻近插值,双线性插值,双三次插值,兰索思插值等方法,OpenCV提供了很多方法,其中,双线性插值由于折中的插值效果和运算速度 ...