一穷二白~~ Ping MM:Request timed out; Ping money:Estination unreachable; Ping Love:Unknown host name

【转】梯森多边形的理论及实现

上一篇 / 下一篇  2008-01-08 11:33:58 / 个人分类:航迹与协同

梯森多边形作为一种空间插值方法和空间分割方法,可以在许多领域找到用途, 例如对一个没有气象资料的点,最好的也是最常用的方法就是用距离该点最近的气象 站的数据来作为它的近似数据。又例如对于城市里每一条街道或者是每一个居民点 的孩子应该到哪一所学校上学最近等等。梯森多边形的对偶三角网也是被广泛采用 的分析研究区域离散数据的有力工具。它利用原始数据作为格网节点;不改变原始 数据及其精度;保存了原有的关键地形特征;追踪等高线的算法相对简单;能够很 好地适应不规则地形等等。当然,它的应用不仅适用于地学,而且活跃于所有与 2.5维分析有关的领域。

一. 梯森多边形定义及相关

梯森多边形(Thiessen Polygons or Thiessen Tesselations,又称Voronoi Diagram or Dirichlet Tesselation)可以理解为对空间的一种分割方式(一个梯森多边形内的任意一点到本梯森多边形中心点的距离都小于其到其它梯森多边形中心点的距离),也可以理解为对空间的一种内插方式(空间中的任何一个未知点的值都可以由距离它最近的已知点(采样点)的值来替代)。

与梯森多边形对偶的是Delaunay三角网,它是由P(采样点)中的点连线构成的三角网。在Delaunay三角网中,pi和pj相连的充要条件是在梯森多边形中,Ti和Tj(T是一个凸多边形)相邻。

二. 梯森多边形算法理论与实现步骤

这里介绍一种逐步加点并修改的算法,首先给出一个初始发生点集,并给出相应的一个梯森多边形图,并将此做为背景梯森多边形,然后通过向发生点集P中逐步增加新点,并在背景梯森多边形图上计算出插入新点后的新的梯森多边形,同时相应修改点之间的拓扑关系。

因为每个顶点V都具有三个相邻接的顶点,并有三个相关的发生点,因此我们 可以V为主关键字,在一个关系表中记录与V相邻的全部顶点及发生点。

现向P中增加一点Q,Q位于P点集的最小凸包之内,则Q的梯森多边形建立 如下:
1. 找出距Q比距其生成点更近的一个顶点(如Vi),这样的点至少有一个,这些点由于距离Q点近于其生成点,它们位于Q的梯森多边形内部,将被删除;
2. 从记录中根据Vi与其相邻点的拓扑关系,找出所有这样的将被删除的点,得到一个待删除顶点系列;
3. 根据与待删除顶点有关的相邻顶点,将这两个顶点共同的发生点与Q点生成新的顶点(与三点等距离,为三点所决定的圆的圆心),我们再找第二个与待删除顶点相邻的顶点,计算出新的顶点,以此类推计算出全部顶点,再通过发生点之间的相邻关系从而确定顶点之间的相邻关系;
4. 将Q的梯森多边形顶点及其相关顶点和发生点写入记录。 这样我们就可以很容易地直接得到结果。

三. 查找Vi相邻待删除点算法

在以上算法中,当从记录中查找所有的待删除点集,用到了循环查找拓扑关系方法。
1. 先找到任何一个待删除点;
2. 根据这个待删除点判断相邻的三个相邻点是否符合待删除点条件,并记录下来,直到三个相邻点都判断结束;
3. 根据以上结果,继续做相同的判断,记录下符合条件的点,直到把上次得到的待删除点都判断结束;
4. 当没有符合条件的V点可以删除,则结束循环。

四.边界裁剪算法及实现

"裁剪"是确定可见图形元素的一种处理过程。在设置窗口时,很难保证所有图形都能落入所开的窗口之内,而会有一部分图形落在窗口之外。由于这部分图形在进行视见变换后是不能被显示的,因此有必要对这些不能显示的部分图形进行舍弃。

裁剪处理的基础有两点:
第一,是点在裁剪区域内外的判断;
第二,是图形与裁剪区域边界交点的计算。
假定窗口坐标为(Xmin,Ymin)和(Xmax,Ymax)点可见的充要条件是满足以下四个不等式:

Xmin < x < Xmax
Ymin < y < Ymax

1. 如果直线的两个端点都在窗口内,则这样的直线是完全可见的;

2. 如果直线的两个端点都在窗口外,并且是在窗口某边框的同一侧,则这样的直线完全不可见,可简单剔除;

3. 如果直线的两个端点都在窗口外,并且不在窗口的同侧,此时需要求出直线段与窗口边框的交点,并对交点性质进行分析后才能确定是否需要裁剪;

4. 如果直线的一个端点在窗口内,另一个端点在窗口外,则需要对它裁剪,即求出它与窗口边框的交点,该交点和窗口内的那个线段端点是可见线段的两个端点。 程序实现如下:

实现如下图:




如下给出梯森多边形的对偶图------Delaunay三角网



五.梯森多边形与Oracle8i Spatial功能相结合的应用及实现

梯森多边形本身或者结合其它图形信息就可以很直观地得到很多有用的信息, 并且可以应用到很多领域。如果你要根据梯森多边形得到更确切的信息,比如:某 一个梯森多边形的区域面积、周长,还可以结合其它空间对象得到哪些对象在区域 内或者有关系等等许多信息。 如下图实现应用了Oracle8i Spatial的 MDSYS.SDO_GEOM.SDO_POLY_INTERSECTION 功能得到某一梯森多边形的面积。 Spatial提供了大量的功能可以应用,或者是结合应用,这要视具体要求而定。

TAG:

引用 删除 GIS   /   2008-06-02 21:41:45
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2008-09-07  
 123456
78910111213
14151617181920
21222324252627
282930    

数据统计

  • 访问量: 10093
  • 日志数: 224
  • 图片数: 2
  • 商品数: 2
  • 文件数: 1
  • 书签数: 1
  • 建立时间: 2007-06-19
  • 更新时间: 2008-08-05

RSS订阅

Open Toolbar