python 泰森多边形边界_对于给定点集的泰森多边形的算法实现

百度百科

泰森多边形又叫冯洛诺伊图(Voronoi diagram),得名于Georgy Voronoi,是由一组由连接两邻点线段的垂直平分线组成的连续多边形组成。

泰森多边形是对空间平面的一种剖分,其特点是多边形内的任何位置离该多边形的样点(如居民点)的距离最近,离相邻多边形内样点的距离远,且每个多边形内含且仅包含一个样点。由于泰森多边形在空间剖分上的等分性特征,因此可用于解决最近点、最小封闭圆等问题,以及许多空间分析问题,如邻接、接近度和可达性分析等。

特征:

每个泰森多边形内仅含有一个离散点数据;

泰森多边形内的点到相应离散点的距离最近;

位于泰森多边形边上的点到其两边的离散点的距离相等。

泰森多边形图例:

b33a8f93bc65c6bc341e88af193e5f07.png

算法实现

算法一:

b537eb4cb78fe4e9edd943c99ce6b3f7.png

算法二:

算法二是基于算法一的优化。本文将着重介绍算法二。

1)算法二同样采用特征点以均匀的速度向外扩张的方式进行。既然我们速度一定,那我们不妨设置为1,那么诸多特征点同时同步地向外扩张,说明在相遇时,相遇的特征点是本着相同的速度,以相同的时间到达的相遇地点(在这里是相遇的单元格),那么根据大众熟知的速度路程公式s=v*t,我们知道这两个相遇的特征点距离该相遇点的路程是相等的,也就是距离一样,说明该相遇点是这两个特征点两线的中点。这就符合了泰森多边形的定义(是由一组由连接两邻点线段的垂直平分线组成的连续多边形组成)

2)扩张的速度我们假定为1,基准的核心点,我们设定为特征点所在像素单元的几何中心。我们规定,在以该特征点为圆心的辐射区域内的其他像素单元格的几何中心距离该特征点所在的几何中心的直线距离(根据勾股定理计算即可)小于或者等于某时间点该特征点以速度为1外扩的半径长度(即路程)时(也就是该像素单元格的大部分面积都包含在该时间点特征点辐射半径所划的圆中的时候),将该像素单元格赋值为特征点外扩运动中此时的时间点信息。

计算中心点:(其中红色点为核心特征点,黑色点为其外扩过程中的一个示例点)

178a0ac06b91b3acb79bb385378432e2.png

模拟泰森多边形由核心特征点外扩:(单元格中数值代表外扩到该单元格所用的时间)

570e300b7d70ccbe89113266f99c7382.png

3)以步骤2)中介绍的方式,我们对所有特征点进行相应外扩,假设每个特征点都辐射满整张矩形区域,共辐射出与特征点数量等量的矩形表数量。(其实可以在代码中把这些特征点辐射的不同数值放在一个数组集合中)。

以其中一个特征点辐射满全图为例:(图二是用数值填充满整个矩阵区域后,输出excel,在excel中使用查找替换将相同的数值单元附成相同颜色的背景色)

(注意输出excel时,要输出为“.csv”格式而不是“.xsl”和“.xslx”格式,因为后两种格式有输出行列不超过256的限制,如果你使用矩阵行列小于256,那么就可以使用后两种格式了)

(图一,选中单元即为核心单元点)

8768090145b643d3bd64e919a3880b43.png

(图二

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值