泰森多边形算法原理

article/2025/9/24 17:36:48
一、文档目的
本文描述了在geomodel模块中,生成泰森多边形所使用的算法。
二、概述
GIS
和地理分析中经常采用泰森多边形进行快速插值,和分析地理实体的影响区域,是解决邻接度问题的又一常用工具。

荷兰气候学家A·H·Thiessen提出了一种根据离散分布的气象站的降雨量来计算平均降雨量的方法,即将所有相邻气象站连成三角形,作这些三角形各边的垂直平分线,于是每个气象站周围的若干垂直平分线便围成一个多边形。用这个多边形内所包含的一个唯一气象站的降雨强度来表示这个多边形区域内的降雨强度,并称这个多边形为泰森多边形。如图1,其中虚线构成的多边形就是泰森多边形。泰森多边形每个顶点是每个三角形的外接圆圆心。泰森多边形也称为Voronoi图,或dirichlet图。


泰森多边形的特性是:
1,每个泰森多边形内仅含有一个离散点数据。
2,泰森多边形内的点到相应离散点的距离最近。
3,位于泰森多边形边上的点到其两边的离散点的距离相等。
泰森多边形可用于定性分析、统计分析、邻近分析等。例如,可以用离散点的性质来描述泰森多边形区域的性质;可用离散点的数据来计算泰森多边形区域的数据;判断一个离散点与其它哪些离散点相邻时,可根据泰森多边形直接得出,且若泰森多边形是n边形,则就与n个离散点相邻;当某一数据点落入某一泰森多边形中时,它与相应的离散点最邻近,无需计算距离。
在泰森多边形的构建中,首先要将离散点构成三角网。这种三角网称为Delaunay三角网。


三、Delaulay三角形的构建
Delaunay
三角网的构建也称为不规则三角网的构建,就是由离散数据点构建三角网,如图2,即确定哪三个数据点构成一个三角形,也称为自动联接三角网。即对于平面上n个离散点,其平面坐标为(xiyi)i12n,将其中相近的三点构成最佳三角形,使每个离散点都成为三角形的顶点。


自动联接三角网的结果为所有三角形的三个顶点的标号,如:1,2,8;2,8,3;3,8,7;……

为了获得最佳三角形,在构三角网时,应尽可能使三角形的三内角均成锐角,即符合Delaunay三角形产生的准则:

1、任何一个Delaunay三角形的外接圆内不能包含任何其它离散点。

2、相邻两个Delaunay三角形构成凸四边形,在交换凸四边形的对角线之后,六个内角的最小者不再增大。该性质即为最小角最大准则。



下面介绍Tsai(1993)提出的在n维欧拉空间中构造Delaunay三角形的通用算法---凸包插值算法。

(一)、凸包生成

1、求出点集中满足min(x-y)、min(x+y)、max(x-y)、max(x+y)的四个点,并按逆时针方向组成一个点的链表。这4个点是离散点中与包含离散点的外接矩形的4个角点最近的点。这4个点构成的多边形作为初始凸包。

2、对于每个凸包上的点I,设它的后续点为J,计算矢量线段IJ右侧的所有点到IJ的距离,求出距离最大的点K。

3、将K插入I、J之间,并将K赋给J。

4、重复2、3步,直到点集中没有在线段IJ右侧的点为止。

5、将J赋给I,J取其后续点,重复2、3、4步。

6、当凸包中任意相邻两点连线的右侧不存在离散点时,结束点集凸包求取过程。

完成这一步后,形成了包含所有离散点的多边形(凸包),如图3所示。


(二)、环切边界法凸包三角剖分

在凸包链表中每次寻找一个由相邻两条凸包边组成的三角形,在该三角形的内部和边界上都不包含凸包上的任何其它点。将这个点去掉后得到新的凸包链表。重复这个过程,直到凸包链表中只剩三个离散点为止。将凸包链表中的最后三个离散点构成一个三角形,结束凸包三角剖分过程。


完成这一步后,将凸包中的点构成了若干Delaunay三角形,如图4所示。


(三)、离散点内插

在对凸包进行三角剖分之后,不在凸包上的其余离散点,可采用逐点内插的方法进行剖分。基本过程为:

1、选择一个尚未构成三角形的离散点

2、在已经生成的三角形中,找出该离散点的三角形(离散点在该三角形在内部或者在该三角形的边上)

3、如果离散点在三角形的内部,则将该三角形以及三角形的边删除,然后将三个顶点以及离散点分别连接,形成三个新的三角形。如果离散点在三角形的边上,记录点所在的边E,根据拓扑关系,找出该边的左右相邻三角形T1,T2,添加四条新边和四个新三角形NT,删除T1,T2以及边E。

对于新生成的三角形,需要挨个对其边进行空外接圆检测。具体做法为:对于新生成的三角形的边E,找出该边相邻的两个三角形,判断该边一侧的对角的顶点是否位于另外一个三角形的外接圆的里面。如果是,则将边E删除,再将两个对角连接起来,形成两个新的三角形。对于新三角形的边,同样需要进行空外接圆检测,如此继续进行,直到所有新生成的三角形都通过空外接圆检测为止。

4、重复1、2、3,直到所有非凸壳离散点都插入完为止。完成这一步后,就完成了Delaunay三角网的构建,如图5所示。


四、泰森多边形的建立步骤

建立泰森多边形算法的关键是对离散数据点合理地连成三角网,即构建Delaunay三角网。建立泰森多边形的步骤为:

1、离散点自动构建三角网,即构建Delaunay三角网。对离散点和形成的三角形编号,记录每个三角形是由哪三个离散点构成的。

2、找出与每个离散点相邻的所有三角形的编号,并记录下来。这只要在已构建的三角网中找出具有一个相同顶点的所有三角形即可。

 

                                               图6 泰森多边形的建立

3、对与每个离散点相邻的三角形按顺时针或逆时针方向排序,以便下一步连接生成泰森多边形。排序的方法可如图6所示。设离散点为o。找出以o为顶点的一个三角形,设为A;取三角形A除o以外的另一顶点,设为a,则另一个顶点也可找出,即为f;则下一个三角形必然是以of为边的,即为三角形F;三角形F的另一顶点为e,则下一三角形是以oe为边的;如此重复进行,直到回到oa边。

4、计算每个三角形的外接圆圆心,并记录之。

5、根据每个离散点的相邻三角形,连接这些相邻三角形的外接圆圆心,即得到泰森多边形。对于三角网边缘的泰森多边形,可作垂直平分线与图廓相交,与图廓一起构成泰森多边形。


http://chatgpt.dhexx.cn/article/LX7PwHuO.shtml

相关文章

python 泰森多边形边界_geotools中泰森多边形的生成

概述 本文讲述如何在geotools中生成泰森多边形,并shp输出。 泰森多边形 1、定义 泰森多边形又叫冯洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是由一组由连接两邻点直线的垂直平分线组成的连续多边形组成。 2、建立步骤 建立泰森多边形算法的关键是对离散数据点合理地…

【ArcGIS】基于泰森多边形求流域面降水量

泰森多边形(Thiessen Polygon)法 泰森多边形又叫冯洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是一组由连接两邻点线段的垂直平分线组成的连续多边形。一个泰森多边形内的任一点到构成该多边形的控制…

泰森多边形算法 java_泰森多边形构建原理

泰森多边形定义 泰森多边形是荷兰气候学家 A.H.Thiessen 提出的一种根据离散分布的气象站的降雨量来计算平均降雨量的方法,即将所有相邻气象站连成三角形,作这些三角形各边的垂直平分线,于是每个气象站周围的若干垂直平分线便围成一个多边形。…

泰森多边形(Voronoi彩图)的matlab绘制——2

泰森多边形(Voronoi图)的matlab绘制——彩图版 1 Voronoi图简介 泰森多边形是对空间平面的一种剖分,其特点是多边形内的任何位置离该多边形的样点(如居民点)的距离最近,离相邻多边形内样点的距离远&#x…

【Docker】Get Started with Solace

Solace Get Started : https://solace.com/products/event-broker/software/getting-started/Docker安装Solace容器启动Solace访问http://localhost:8080/

Solr的空间索引

一、Solr空间搜索的目的 (1)索引空间点数据和其他形状的数据 (2)通过圆形、正方形或者其他形状进行过滤搜索结果 (3)通过两个点之间的距离或者是两个多边形的形状进行排序或者评分 二、Solr空间搜索的域…

Soler

特点:首队香港孖生兄弟乐队,Julio和Dino是意大利与缅甸的混血儿。现场演出极煽情、极具爆发力。 风格:Soul,Acoustic,Pop Rock. 所有作品由组合自己创作。 专辑:《双声道》中文专辑 语言:广东话、国语、英语、意大利…

Solr空间搜索

空间搜索原理 空间搜索,又名Spatial Search,基于空间搜索技术,可以做到: 1)对Point(经纬度)和其他的几何图形建索引 2)根据距离排序 3)根据矩形,圆形或者…

FAQ详解“Meltdown和Spectre”问题,接踵而来的“Skyfall和Solace”是否仅是骗局?

在Google公司安全团队Project Zero披露Intel处理器Meltdown(熔毁) 和Spectre(幽灵)漏洞后,该漏洞在2018年初震动了计算机世界。现在据说还有两个漏洞:Skyfall和Solace(他们的命名来源于詹姆斯邦德电影的灵感)。据消息来源称,这些漏洞也是物理芯片的问题&…

如何用Jmeter发送消息到Solace JNDI - 自定义配置

如何用Jmeter发送消息到Solace JNDI - 自定义配置 1. 引包2. 配置Solace JNDI3. 配置JMS Publisher 上一篇文章 如何用Jmeter发送消息到Solace JNDI 默认是发到 Default 的 VPN 且对用户名密码没有要求,假如想要发到非 default 的VPN或者是有验证要求的该怎么发呢&…

sola

Solr调研总结 开发类型 全文检索相关开发 Solr版本 4.2 文件内容 本文介绍solr的功能使用及相关注意事项;主要包括以下内容:环境搭建及调试;两个核心配置文件介绍;维护索引;查询索引,和在查询中可以应用的高亮显示、拼写检查、搜索建议、分组统计、拼音检索等功能的使用方…

Docker拉取Solace pubsub+镜像timeout的问题

资料 Solace PubSub 官网 Solace docker-compose.yml 模板下载 遇到的问题 拉取Solace pubsub镜像一直timeout 我的镜像源地址用的是阿里云的,同事也没有遇到过同样的问题。 我切换了各种国内的镜像源地址,都是timeout。最终又切换回阿里云的镜像源地…

如何用Jmeter发送消息到Solace JNDI

如何用Jmeter发送消息到Solace JNDI 缘由1. 引包2. 配置Solace JNDI3. 配置JMS Publisher4. 测试 缘由 最近有个需求,要对Solace的queue发大量的消息,然后就想到用Jmeter,但是国内国外基本都搜不到这部分的内容,于是在这Mark一下…

基于硬件的消息队列中间件 Solace 简介之二

小短篇介绍关于Solace https://blog.csdn.net/aqudgv83/article/details/79495489 . 前面简单介绍了Solace来自于哪家公司, 主要能做哪些事情. 本篇主要进一步介绍Solace作为消息传递的中间件如何工作的. 传统意义上来讲, 每当我们谈到消息中间件时, 首先想到的是基于Message…

JMS,ActiveMQ,Solace和RxJava记录

目录 JMS ActiveMQ 用Java代码实现收发消息 1. 使用JMS方式发送接收消息 ​编辑 2. 在SpringBoot中使用ActiveMQ Solace RxJava 除了本人另外一篇博客的 Kafka 记录(https://blog.csdn.net/Beth_Chan/article/details/111189133)外,其…

“去中心化”和“分布式”的区别

区块链对于很多人来说,是一个概念性的、未来的事物,经常可以听到区块链有着“分布式、去中心化、可信任、匿名性、信息不可逆”等特点,这些特点看起来相互关联,又有所差异。而以太坊创始人V神近日就在推特上表示,尝试用…

为什么说去中心化很重要

去中心化是与中心化相对的一个概念,简单的来说中心化的意思,是中心决定节点。节点必须依赖中心,节点离开了中心就无法生存。去中心化恰恰相反,在一个分布有众多节点的系统中,每个节点都具有高度自治的特征,…

去中心化金融(DeFi)的发展历史

随着Web3.0的兴起,去中心化金融(Decentralized Finance,DeFi)正逐渐成为金融领域的热门话题。DeFi旨在通过区块链技术和智能合约,实现无需信任的金融交易和服务,摆脱传统金融中心化的限制。然而&#xff0c…

去中心化及其局限性

去中心化及其局限性 这张表总结了一部分新的 P2P 网络中的去中心化工具。区块链就是其中的一个! 本次演讲我将提出三个问题:(1)去中心化是什么?我们真的知道答案吗?(2)我们真的想要去…

去中心化究竟是什么意思?

链接: 去中心化究竟是什么意思?怎样能真正实现去中心化? - 知乎https://zhuanlan.zhihu.com/p/39854232 感谢分享,仅供参考。