地形计算,如梯度和天空视图

topocalc的Python项目详细描述


地形

Pypi versionBuild StatusCoverage StatusMaintainability

topocalc包是计算数字高程模型(DEM)上各种度量的函数集合。计算遵循Dozier and Frew, 1990中列出的梯度、地平线和天空视角因子的方程式。目前支持的计算有:

  1. 坡度和坡向坡度
  2. 方位角的水平角
  3. 从DEM上某个点可见的天空百分比的天空视图因子

背景

方位公约

对于方位角和方位角,约定南面为0度(0弧度),东面为正值(+90度或π/4弧度),西面为负值(-90度或-pi/4弧度)。北是-180度或-pi/2。在

坡度和坡向坡度

梯度法计算输入DEM的坡度和坡向。在topocalc.gradient中有两种方法gradient_d4和{}。在

gradient_d4模拟IPW ^{}函数的坡度和坡向计算。这将计算x/y方向上有限差分的斜率。在

gradient_d8(默认)对DEM上给定点周围的3x3正方形使用二阶有限差分。在

坡度用于从北(0度)计算纵横比。转换函数将以度为单位,并转换为以南为0的弧度。在

水平角

DEM上某一点的水平角是给定方位角下从天顶到地平线的角度。按照Dozier and Frew, 1990IPW ^{}中列出的方法,网格沿方位角方向旋转,使其成为一维问题。在

对于两点ij,我们比较了i和{}的斜率与{}视界的斜率。如果坡度更大,则超过j的所有点都不可见。如果斜率较小,则i和{}之间的所有点都不需要检查,搜索可以继续超过点j。这种搜索是在C语言中执行的,以大大加快计算速度。在

horizon报告的值是地平线角的余弦。在

天空视角因子

天空视图因子(svf)是特定点可见的天空量。svf介于0和1之间,1表示周围地形没有障碍物,0表示完全障碍物。svf使用72个方向的坡度、坡向和水平角来估计DEM的天空视角因子。在

使用

安装

NOTE: topocalc has only been tested for Python 3.5 to 3.8 on Linux and MacOSX environments.

要安装:

pip install topocalc

渐变用法

fromtopocalc.gradientimportgradient_d8# Load the DEM into a numpy arraydem=load_dem(path_to_dem)# grid cell spacing for the DEMdem_dx=30dem_dy=30slope,aspect=gradient_d8(dem,dem_dx,dem_dy)

天空视图因子使用

^{pr2}$

命令行界面

快来了!在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
检查java中两个链表之间的子集   java仅在findViewById()下显示一个ImageButton   在Java Graphics2D中,文本如何在矩形上居中对齐?   java需要一个用于电子表格计算器的正则表达式   ^java中的运算符   java通过一些属性配置文件根据环境动态更改wsdl端点URL   java Ebean/Play框架关系未更新   集合如何将POJO列表转换为Java流中的映射<String,List>?   java为什么JFrame不显示整个图像?   java如何将调用静态导入的泛型方法的结果传递给另一个方法?   迭代器或foreach中的java延迟   需要java socket logback日志接收器   在Java中初始化Map的静态数组   雅加达邮件Java MimeMail:解码后获得额外字符   java为什么这个xmldom解析器不能正确解析rtept、name和cmt标记?   java如何刷新Log4J2中的异步记录器(带中断器)   java使用构建插件pom生成的jar。xml作为同一pom中的依赖项   java基于位置的序列ADT如何在O(1)时间内插入元素?   java ORM实体与DDD实体   Java对象分配