ArcGIS与R语言的Delaunay 三角网生成法

上一次讲罗马七丘的空间分析的时候,讲了一个Delaunay 三角测量——实际上这个东西也是泰森多边形的基础,泰森多边形就是在这个Delaunay三角上面进化出来的东西,所以很多同学在问我,这个东东怎么做啊?在ArcGIS里面有工具么?还是那句话:没有现成的工具……但是可以通过一系列手段来完成。

还有就是可以通过R语言来做Delaunay三角——这个是一个很神奇的东东……当然,python也行,高手自己写算法也行。

今天简单讲讲如何用ArcGIS和R语言来分别生成Delaunay三角网。

示例数据就直接用罗马七丘好了。

首先是ArcGIS,生成Delaunay三角,需要有ArcGIS 的3D Analyst扩展许可。

看到这个条件,估计对ArcGIS灰常熟悉的同学就应该知道我用啥方法了——没错,就是用构造TIN的方法,来做Delaunay三角。具体方法如下:

1、在ArcGIS里面构造TIN,是安装三维高程的方式来做的,所以你的数据需要有一个高程值,不过我们这个点默认是没有高程值的,怎么办?自己创建一个就可以了:添加一个字段比如,我这里命名为Z,并且字段类型是整型就可以了(当然你也可以用浮点)。

要求要给予这个Z值一个数字,为了构造出不同的三角顶点,所以Z值必须不同——最容易的方法,就是直接把OBJECTID的数据赋值给Z:

到现在,数据预处理就完成了。

2、调用ArcToolbox里面的Create TIN工具,工具的位置在:

3D Analyst Tools——Data Management ——TIN —— Create TIN

打开之后,设置如下:

注意一点,TIN在ArcGIS里面只能存储为文件,所以放不进GDB里面去的。

点击OK,运行之后,结果如下:

生成这一个TIN三角网文件,然后我们通过转换,就可以变成我们的Delaunay三角网要素了:工具箱如下:

比如,我们需要三角网线要素,就用TIN Edge如下:

要转成三角面要素,就用TIN Triangle

ArcGIS做Delaunay三角网打完收工。

下面我们推荐另外一种方法:用R语言来做Delaunay三角网。

首先推荐一个包“deldir”包,R语言的安装很容易,直接输入

install.packages("deldir")

看见提示,就可以安装成功了:

这个包是新西兰的奥克兰大学Rolf Turner贡献的,有关文档可以去CRAN上下载。

下面简单说说这个包的用法:

将罗马七丘的点数据加载到R语言里面去之后,就可以直接调用这个包了:

library(deldir)

rmd <- deldir(roma$X,roma$Y)

plot.deldir(rmd)

text(roma$X,roma$Y,roma$name)

结果如下:

可以发现,这个包不但可以做Delaunay三角,还可以做泰森多边形……当然,在绘图语句里面,还提供了参数选择,比如我们就看Delaunay三角网,参数如下:

plot.deldir(rmd,wlines="triang",col=‘blue‘)

text(roma$X,roma$Y,roma$name)

如果选择只看泰森多边形,选择参数可以是:tess

plot.deldir(rmd,wlines="tess",col=‘red‘)

text(roma$X,roma$Y,roma$name)

当然,这个包还有更多的参数,大家有兴趣的可以去参考他的帮助文档,下载PDF或者直接在R语言里面利用help命令都行。

关于罗马七丘的数据需要的同学,可以给我发邮件索取:[email protected]

最后预报一个很嗨皮的事件:我们上几次讲了手工打造蜂窝多边形,在ArcGIS 10.4版本里面,已经内置了这个工具了,位置如下:

ArcToolbox ——Data Management Tools —— Sampling ——Generate Tessellation

在参数里面选择 HEXAGON,就可以自动生成蜂窝六边形了。

时间: 2024-07-30 07:34:35

ArcGIS与R语言的Delaunay 三角网生成法的相关文章

survival analysis 生存分析与R 语言示例 入门篇

生存分析,survival analysis,顾名思义是用来研究个体的存活概率与时间的关系.例如研究病人感染了病毒后,多长时间会死亡:工作的机器多长时间会发生崩溃等.  这里“个体的存活”可以推广抽象成某些关注的事件. 所以SA就成了研究某一事件与它的发生时间的联系的方法.这个方法广泛的用在医学.生物学等学科上,近年来也越来越多人用在互联网数据挖掘中,例如用survival analysis去预测信息在社交网络的传播程度,或者去预测用户流失的概率. R里面有很成熟的SA工具. 本文介绍生存分析的

信用卡评分模型(R语言)

信用卡评分 一.数据准备 1. 问题的准备 ? 目标:要完成一个评分卡,通过预测某人在未来两年内将会经历财务危机的可能性来提高信用评分的效果,帮助贷款人做出最好的决策. ? 背景: – 银行在市场经济中起到至关重要的作用.他们决定谁在什么条件下可以得到融资,并且可以创造或打破投资决策.而市场.社会,以及个人和企业都需要获得贷款. – 信用评分算法,对默认可能性进行猜测,这是银行用来判断贷款是否应该被授予的方法. ? 准备: – 首先是基于个人借贷的场景,确定"违约"的定义: 根据新的B

来自 Google 的 R 语言编码风格指南

本文转自Xiao Nan的博客 R语言是一门主要用于统计计算和绘图的高级编程语言. 这份 R 语言编码风格指南旨在让我们的 R 代码更容易阅读.分享和检查. 以下规则系与 Google 的 R 用户群体协同设计而成. 概要: R编码风格约定 文件命名: 以 .R (大写) 结尾 标识符命名: variable.name, FunctionName, kConstantName 单行长度: 不超过 80 个字符 缩进: 两个空格, 不使用制表符 空白 花括号: 前括号不折行写, 后括号独占一行 赋

R语言学习笔记

參考:W.N. Venables, D.M. Smith and the R DCT: Introduction to R -- Notes on R: A Programming Environment for Data Analysis and Graphics,2003. http://bayes.math.montana.edu/Rweb/Rnotes/R.html 前言:关于R 在R的官方教程里是这么给R下注解的:一个数据分析和图形显示的程序设计环境(A system for data

Python 中使用R语言

Python与R属于面向对象的的语言,各具优劣,本文意在将python与R语言相结合,以充分利用两者的优势.因此,本文主要 探讨Python与R语言的基本配置要求,Python调用R语言的配置,R语言在python中的使用等几个方面.由于笔者时间有限,只能 一点点更新,望见谅. I,本文中python与R软件的基本配置 python与R语言同为免费的开源语言,这给我们免费使用并学习这两门语言带来了极大的方便. python anaconda3.5.1 , R 3.2.3,  fedora lin

[译]用R语言做挖掘数据《六》

异常值检测 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: 1. LX终端(LXTerminal): Linux命令行终端,打开后会进入Bash环境,可以使用Linux命令2. GVim:非常好用的编辑器,最简单的用法可以参考课程[Vim编辑器](http://www.shiyanlou.com/courses/2)3. R:在命令行输入‘R’进入交互式环

R语言介绍

学习资料:<R语言实战> R是一种为统计计算和绘图而生的语言和环境,它是一套开源的数据分析解决方案.1.新手上路 作者论坛:http://www.statmethods.net/ 数据下载网址:https://www.manning.com/ R和各种安装包的下载地址:https://cran.r-project.org/ http://cran.r-project.org/web/packages R是一种区分大小写的解释型语言.可以在命令提示符(>)后每次输入并执行一条命令,或者一次

第七届中国R语言会议

第七届中国R语言会议 会议完全免费,但请报名的朋友们尽量能来,如果不能前来请务必发邮件提前告知,以免造成名额和材料的浪费.此外,我们会为通过审核参加演讲的在校学生提供差旅食宿等资助.报名方式:http://r-conference.org/register/ 如果你对R语言一无所知,可以申请5月10日"华章数据科学工作坊"的免费R语言课程. 时间:2014年5月24~25日 地点: 24日:中国人民大学如论大讲堂 25日:中国人民大学明德商学楼102.202.302分会场 R是一门用于

用R语言实现对不平衡数据的四种处理方法

https://www.weixin765.com/doc/gmlxlfqf.html 在对不平衡的分类数据集进行建模时,机器学**算法可能并不稳定,其预测结果甚至可能是有偏的,而预测精度此时也变得带有误导性那么,这种结果是为何发生的呢?到底是什么因素影响了这些算法的表现? 在不平衡的数据中,任一算法都没法从样本量少的类中获取足够的信息来进行精确预测因此,机器学**算法常常被要求应用在平衡数据集上那我们该如何处理不平衡数据集?本文会介绍一些相关方法,它们并不复杂只是技巧性比较强 本文会介绍处理非