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命令都行。
关于罗马七丘的数据需要的同学,可以给我发邮件索取:allenlu2008@163.com
最后预报一个很嗨皮的事件:我们上几次讲了手工打造蜂窝多边形,在ArcGIS 10.4版本里面,已经内置了这个工具了,位置如下: ArcToolbox ——Data Management Tools —— Sampling ——Generate Tessellation 在参数里面选择 HEXAGON,就可以自动生成蜂窝六边形了。
文章来源:http://blog.csdn.net/allenlu2008/article/details/51012844
还有就是可以通过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命令都行。
关于罗马七丘的数据需要的同学,可以给我发邮件索取:allenlu2008@163.com
最后预报一个很嗨皮的事件:我们上几次讲了手工打造蜂窝多边形,在ArcGIS 10.4版本里面,已经内置了这个工具了,位置如下: ArcToolbox ——Data Management Tools —— Sampling ——Generate Tessellation 在参数里面选择 HEXAGON,就可以自动生成蜂窝六边形了。
文章来源:http://blog.csdn.net/allenlu2008/article/details/51012844
0 个评论
推荐内容
相关问题
- 如何优雅的使用ArcGIS知乎?
- 建设ArcGIS知乎平台的目和意义?
- ArcGIS知乎社区改进意见征集
- 【抽奖结果已出】ArcGIS知乎社区活动 之 你不知道的地理空间革命【转发分享有奖】【附奖品寄送照片】
- 苹果系统下可以使用arcgis 吗?
- arcgis版本兼容性
- 请问ArcGIS适合在局域网内用javaweb做二次开发吗?
- ArcGIS 知乎社区活动 之 2018拒绝boring,来,在线答题赢kindle【结果已出,速来领奖】
- ArcGIS 知乎社区活动 之 字幕组加鸡腿暨KBP字幕组招新【获奖名单公布与优秀作品展示】
- 请问大神们,怎么用ArcGIS做城镇间经济联系强度的图?
- ArcGIS如何求栅格图像的“质心”