CN102254093A - 基于泰森多边形的连通域统计相关算法 - Google Patents
基于泰森多边形的连通域统计相关算法 Download PDFInfo
- Publication number
- CN102254093A CN102254093A CN2011101723292A CN201110172329A CN102254093A CN 102254093 A CN102254093 A CN 102254093A CN 2011101723292 A CN2011101723292 A CN 2011101723292A CN 201110172329 A CN201110172329 A CN 201110172329A CN 102254093 A CN102254093 A CN 102254093A
- Authority
- CN
- China
- Prior art keywords
- polygon
- connected domain
- thiessen polygon
- thiessen
- function
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Complex Calculations (AREA)
Abstract
本发明涉及地理信息处理。为节省大量人力物力,减少误差,为达到上述目的,本发明采用的技术方案是:基于泰森多边形的连通域统计相关算法,针对GIS的操作对象生成泰森多边形的连通域,采用递归算法函数统计处理泰森多边形连通域;针对GIS的操作对象生成泰森多边形的连通域是:使用一些观测站的观测或统计数据作为初始数据,以这些观测站点的位置为基点,做出泰森多边形,并根据泰森多边形,统计连通域。本发明主要应用于地理信息处理。
Description
技术领域
本发明涉及地理信息处理,具体讲涉及基于泰森多边形的连通域统计相关算法。
背景技术
(1)地理信息***(GIS,Geographic Information System)既是管理和分析空间数据的应用工程技术,又是跨越地球科学、信息科学和空间科学的应用基础学科。其技术***由计算机硬件、软件和相关的方法过程所组成,用以支持空间数据的采集、管理、处理、分析、建模和显示,以便解决复杂的规划和管理问题。
GIS的操作对象是空间数据和属性数据,即点、线、面、体这类有三维要素的地理实体。空间数据的最根本特点是每一个数据都按统一的地理坐标进行编码,实现对其定位、定性和定量的描述、这是GIS区别于其它类型信息***的根本标志,也是其技术难点之所在。
(2)荷兰气候学家A·H·Thiessen提出了一种根据离散分布的气象站的降雨量来计算平均降雨量的方法,即将所有相邻气象站连成三角形,作这些三角形各边的垂直平分线,于是每个气象站周围的若干垂直平分线便围成一个多边形。用这个多边形内所包含的一个唯一气象站的降雨强度来表示这个多边形区域内的降雨强度,并称这个多边形为泰森多边形。
泰森多边形的特性是:
1、每个泰森多边形内仅含有一个离散点数据;
2、泰森多边形内的点到相应离散点的距离最近;
3、位于泰森多边形边上的点到其两边的离散点的距离相等。
泰森多边形可用于定性分析、统计分析、邻近分析等。例如,可以用离散点的性质来描述泰森多边形区域的性质;可用离散点的数据来计算泰森多边形区域的数据;判断一个离散点与其它哪些离散点相邻时,可根据泰森多边形直接得出,且若泰森多边形是n边形,则就与n个离散点相邻;当某一数据点落入某一泰森多边形中时,它与相应的离散点最邻近,无需计算距离。
(3)递归是计算机科学的一个重要概念,递归的方法是程序设计中有效的方法,采用递归方法编写程序能使程序变得简洁和清晰。
递归算法是指在函数(或过程)的内部,直接或者间接地调用自身的算法。它能够把问题转化为规模缩小了的同类问题的子问题,然后递归调用函数(或过程)来表示问题的解。递归算法对解决一大类问题是十分有效的,它往往使算法的描述简洁而且易于理解。其原理是基于堆栈这种数据结构的。
对于递归函数来说,在它们被外部程序调用之前,***需要保存外部程序的返回地址以及外部程序的变量当前值,这需要设置一个堆栈。对于子程序中的每一次递归调用,首先要开辟栈顶存储空间,用来保存外部程序的返回地址以及外部程序的变量当前值,然后将计算实参数的值赋给子程序对应的形参,之后运行子程序。子程序将其执行结果保存到回传变量中,之后将返回地址以及各变量,形参的值从堆栈中取出并退栈,最后返回主程序,执行后续语句。
递归算法一般有三个要求:
①每次调用在规模上都有所缩小(通常是减半);
②相邻两次重复之间有紧密的联系,前一次要为后一次做准备(通常前一次的输出就作为后一次的输入);
③在问题的规模极小时必须用直接给出解答而不再进行递归调用,因而每次递归调用都是有条件的(以规模未达到直接解答的大小为条件),无条件递归调用将会成为死循环而不能正常结束。
现如今GIS得到了广泛的应用,而其中泰森多边形在区域划分中起到了不可替代的作用,在风险分析、数据观测统计等领域需要统计出地图内所有的相连接的多边形组合,即连通域。然而,对于多边形连通域的统计还没有成型的算法,人工统计既花费大量人力物力,也容易出现误差,少数或者有重复等。
发明内容
为克服现有技术的不足,节省大量人力物力,减少误差,为达到上述目的,本发明采用的技术方案是:基于泰森多边形的连通域统计相关算法,针对GIS的操作对象生成泰森多边形的连通域,采用递归算法函数统计处理泰森多边形连通域;
针对GIS的操作对象生成泰森多边形的连通域是:使用一些观测站的观测或统计数据作为初始数据,以这些观测站点的位置为基点,做出泰森多边形,并根据泰森多边形,统计连通域;
每个泰森多边形内的点的数据均认为是其中的观测站点的观测数据;
连通域的设定:
两多边形1,2相邻,则可以将{1,2}认为是一个连通域,若3与1、2任意一个相邻,则{1,2,3}也是一个连通域,依次类推。
所述方法细化为:
1.通过调用Thiessen()函数,生成泰森多边形;
2.调用getConnectedArea函数,得到要求的连通域集合;
getConnectedArea(int hd)函数,参数为多边形的序号,取出一个多边形开始计算,最初取第一个多边形,设编号为0,采用isAdjacent(Polygon a,Polygon b)函数依次判断它和余下的多边形i是否相邻,若相邻,则将这两个多边形的编号组合存入结果集result中,并且对i进行递归调用,由于0和i相邻,所以把0加入到i的所有连通域中,最后将结果集result中的内容写入到数据库中,递归调用函数getConnectedArea直到最后一个多边形,对i调用函数getConnectedArea时,已经将多边形0从多边形集合中去除,即可得到所有的连通域,最终得到的结果集result就是所需的所有连通域。
本发明其特点在于:本发明采用基于泰森多边形的连通域统计处理地理信息,因而节省大量人力物力、减少误差;本发明在常见的GIS工具中均可应用,可以大幅减轻GIS项目开发人员的工作强度,大幅提高开发效率,完全避免大量复杂计算中的疏漏及重复,保证GIS项目的高质量。
附图说明
图1,由8个基点画出的泰森多边形。
图2由Delaunay三角网建立泰森多边形。
图3,Lawson算法第二步图示。
图4,用延长线实现isAdjacent(Polygon a,Polygon b)。
图5,程序流程图。
具体实施方式
对地理信息进行分析计算时,通常会使用一些观测站(或统计站等)的观测(或统计)数据作为初始数据。需要以这些观测站点的位置为基点,做出泰森多边形,并根据泰森多边形,统计连通域。
由于泰森多边形中,每个泰森多边形内仅含有一个离散点数据并且泰森多边形内的点到相应离散点的距离最近,所以每个泰森多边形内的点的数据均可认为是其中的观测站点的观测数据。如图1所示,图1是以点1-8为基点画出的泰森多边形,假设各个点是温度的观测数据,那么以点1为基点的泰森多边形内的温度均可认为是在1这一点观测到的温度。
连通域的设定
基于泰森法的连通域统计方法,目的是得到所有连通域的列表,由数组表示。
连通域是指可以连接起来的多边形的组合,
两多边形1,2相邻,则可以将{1,2}认为是一个连通域,若3与1、2任意一个相邻,则{1,2,3}也是一个连通域。依次类推。
要统计出所有的连通域,最核心的问题是泰森多边形的遍历、以及消除重复组合,本发明将解决这些问题。
(1)由于泰森多边形是由一个点集和边界构成,点集中每一个点构成一个泰森多边形,通过点的ID(即是泰森多边形的ID)可以遍历每一个泰森多边形。
(2)若多边形1分别与多边形2、多边形3直接相邻,那么将1从泰森多边形集合中去掉,求出剩下的多边形集合的连通域集合A,对A中所有包含2或3的组合都另加上多边形1,得到集合B,那么(1,2)+(1,3)+A+B即为所求。根据这个性质,可以应用递归的思想统计连通域,避免重复。
本发明将提出在GIS工具中获取连通域信息的方法;本发明基于泰森多边形算法并采用递归算法的思想,给出统计泰森多边形连通域的算法。
前提:已经生成的带有顺序编号的泰森多边形集合。
算法描述:
一)main函数:
1.通过调用Thiessen()函数,生成泰森多边形,由于泰森多边形生成算法很多,在此不加赘述。
2.调用getConnectedArea函数,得到要求的连通域集合。
二)Thiessen()函数
注:泰森算法较复杂,在此以Thiessen()代替
在此简单介绍基于Delaunay三角网的泰森多边形构造算法
1、根据离散点构造Delaunay三角网
2、找出与每个离散点相邻的所有三角形的编号,并记录下来。这只要在已构建的三角网中找出具有一个相同顶点的所有三角形即可。
3、对与每个离散点相邻的三角形按顺时针或逆时针方向排序,以便下一步连接生成泰森多边形。排序的方法可如图2所示。设离散点为o。找出以o为顶点的一个三角形,设为A;取三角形A除o以外的另一顶点,设为a,则另一个顶点也可找出,即为f;则下一个三角形必然是以of为边的,即为三角形F;三角形F的另一顶点为e,则下一三角形是以oe为边的;如此重复进行,直到回到oa边。
4、计算每个三角形的外接圆圆心,并记录之。
5、根据每个离散点的相邻三角形,连接这些相邻三角形的外接圆圆心,即得到泰森多边形。对于三角网边缘的泰森多边形,可作垂直平分线与图廓相交,与图廓一起构成泰森多边形。
Delaunay三角网具有以下特性
1).最接近:以最近临的三点形成三角形,且各线段(三角形的边)皆不相交。
2).唯一性:不论从区域何处开始构建,最终都将得到一致的结果。
3).最优性:任意两个相邻三角形形成的凸四边形的对角线如果可以互换的话,那么两个三角形六个内角中最小的角度不会变大。
4).最规则:如果将三角网中的每个三角形的最小角进行升序排列,则Delaunay三角网的排列得到的数值最大。
5).区域性:新增、删除、移动某一个顶点时只会影响临近的三角形。
6).具有凸多边形的外壳:三角网最外层的边界形成一个凸多边形的外壳。
Delaunay三角网构造算法:Lawson算法
Lawson算法的基本步骤是:
1)、构造一个超级三角形,包含所有散点,放入三角形链表。
2)、将点集中的散点依次***,在三角形链表中找出其外接圆包含***点的三角形(称为该点的影响三角形),删除影响三角形的公共边,将***点同影响三角形的全部顶点连接起来,从而完成一个点在Delaunay三角形链表中的***。
3)、根据优化准则对局部新形成的三角形进行优化。将形成的三角形放入Delaunay三角形链表。
4)、循环执行上述第2步,直到所有散点***完毕。
这一算法的关键的第2步如图3所示。
三)getConnectedArea(int hd)函数,递归得到连通域
参数为多边形的序号,取出一个多边形开始计算,最初取第一个多边形,不妨设编号为0,依次判断它和余下的多边形i是否相邻,若相邻,则将这两个多边形的编号组合存入结果集result中,并且对i进行递归调用,由于0和i相邻,所以把0加入到i的所有连通域中,最后将结果集result中的内容写入到数据库中。递归调用函数getConnectedArea直到最后一个多边形,注:对i调用函数getConnectedArea时,已经将多边形0从多边形集合中去除,即可得到所有的连通域。由于每次调用函数getConnectedArea时都是在去除之前多边形的基础上进行,所以不会出现重复。最终得到的结果集result就是所需的所有连通域。
四)isAdjacent(Polygon a,Polygon b)函数,由于绝大多数GIS工具中都存在判断多边形相邻的函数且各不相同,在此不做赘述。
五)InsertToDB函数,用于将数据写入数据库
六)数据结构
1.Dataset,数据集,用于保存成组的连通域编号
2.Polygon,存储多边形信息
3.Point,存储点信息
isAdjacent(Polygon a,Polygon b)判断两个多边形相邻,以MapWindow4.7为例
MapWindow4.7中有PointInShape()方法
bool PointInShape(int shapeHandle,float x,float y)
由于PointInShape方法存在一点精度问题,当点恰好在多边形的边界上时,该方法不能准确判断结果。然而在多边形内部时PointInShape方法可以得到准确的结果因此,我们考虑使用延长线的办法来避免这个问题。
做多边形的基点和每一个边的中点连线并延长很小一段,如图4中,从基点2而后其中一边中点的连线,并将其延长一小段,到点pt的位置,而此时如果pt在多边形3内,则认为多边形2,3相邻
对于多边形a,从基点向每个边的中点做延长线,如果另一端点在多边形b内,则认为a,b相邻。
注:Point getMid(Point a,Point b)得到两点中点。
int getSlope(Point a,Point b)得到两点间斜率。
对泰森多边形连通域的统计,是GIS项目中经常用到的一项工作,却也是非常繁重的工作。通常的GIS项目都涉及大量的泰森多边形,其中连通域的统计是项庞大的工作,尤其需要考虑到连通域的准确性和全面性。既不能出现重复,也不能少算漏算
本发明中的方法和算法,在常见的GIS工具中均可应用,可以大幅减轻GIS项目开发人员的工作强度,大幅提高开发效率,完全避免大量复杂计算中的疏漏及重复,保证GIS项目的高质量。
在GIS项目开发过程中,若遇到连通域的统计工作,运用本发明中的方法和算法进行进一步编码,实现其功能。
Claims (2)
1.一种基于泰森多边形的连通域统计相关算法,其特征是,针对GIS的操作对象生成泰森多边形的连通域,采用递归算法函数统计处理泰森多边形连通域;
针对GIS的操作对象生成泰森多边形的连通域是:使用一些观测站的观测或统计数据作为初始数据,以这些观测站点的位置为基点,做出泰森多边形,并根据泰森多边形,统计连通域;
每个泰森多边形内的点的数据均认为是其中的观测站点的观测数据;
连通域的设定:
两多边形1,2相邻,则可以将{1,2}认为是一个连通域,若3与1、2任意一个相邻,则{1,2,3}也是一个连通域,依次类推。
2.如权利要求1所述的方法,其特征是,所述方法细化为:
1.通过调用Thiessen()函数,生成泰森多边形;
2.调用getConnectedArea函数,得到要求的连通域集合:
getConnectedArea(int hd)函数,参数为多边形的序号,取出一个多边形开始计算,最初取第一个多边形,设编号为0,采用isAdjacent(Polygon a,Polygon b)函数依次判断它和余下的多边形i是否相邻,若相邻,则将这两个多边形的编号组合存入结果集result中,并且对i进行递归调用,由于0和i相邻,所以把0加入到i的所有连通域中,最后将结果集result中的内容写入到数据库中,递归调用函数getConnectedArea直到最后一个多边形,对i调用函数getConnectedArea时,已经将多边形0从多边形集合中去除,即可得到所有的连通域,最终得到的结果集result就是所需的所有连通域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110172329.2A CN102254093B (zh) | 2011-06-24 | 2011-06-24 | 基于泰森多边形的连通域统计相关算法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201110172329.2A CN102254093B (zh) | 2011-06-24 | 2011-06-24 | 基于泰森多边形的连通域统计相关算法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102254093A true CN102254093A (zh) | 2011-11-23 |
CN102254093B CN102254093B (zh) | 2014-06-18 |
Family
ID=44981354
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201110172329.2A Expired - Fee Related CN102254093B (zh) | 2011-06-24 | 2011-06-24 | 基于泰森多边形的连通域统计相关算法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102254093B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544381A (zh) * | 2013-10-08 | 2014-01-29 | 北京林业大学 | 一种利用tin三角网进行森林混交度评价的方法 |
CN104599224A (zh) * | 2015-01-26 | 2015-05-06 | 南京师范大学 | 一种基于信息分存的涉密点状地理要素伪装与还原方法 |
CN110060256A (zh) * | 2019-03-08 | 2019-07-26 | 广东工业大学 | 一种基于机载LiDAR点云的杆塔提取技术 |
CN117237356A (zh) * | 2023-11-15 | 2023-12-15 | 山东泗水丰田农药有限公司 | 用于农药生产的废水处理控制方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101873608A (zh) * | 2010-06-18 | 2010-10-27 | 北京神州泰岳软件股份有限公司 | 泰森多边形结合gis地图展示通信业务量的方法及*** |
-
2011
- 2011-06-24 CN CN201110172329.2A patent/CN102254093B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101873608A (zh) * | 2010-06-18 | 2010-10-27 | 北京神州泰岳软件股份有限公司 | 泰森多边形结合gis地图展示通信业务量的方法及*** |
Non-Patent Citations (5)
Title |
---|
刘少华等: "基于Delauany三角网的泰森多边形生成算法研究", 《长江大学学报(自然版)理工卷》 * |
张立华等: "一种海底底质与地形的信息叠置可视化方法及应用", 《测绘科学》 * |
胡俊等: "自由边界平面连通域的Voronoi图生成方法研究", 《工程设计学报》 * |
赵良民: "泰森多边形法计算机程序的研制", 《水利科学》 * |
陈春: "泰森多边形的建立及其在计算机制图中的应用", 《测绘学报》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103544381A (zh) * | 2013-10-08 | 2014-01-29 | 北京林业大学 | 一种利用tin三角网进行森林混交度评价的方法 |
CN104599224A (zh) * | 2015-01-26 | 2015-05-06 | 南京师范大学 | 一种基于信息分存的涉密点状地理要素伪装与还原方法 |
CN104599224B (zh) * | 2015-01-26 | 2017-12-15 | 南京师范大学 | 一种基于信息分存的涉密点状地理要素伪装与还原方法 |
CN110060256A (zh) * | 2019-03-08 | 2019-07-26 | 广东工业大学 | 一种基于机载LiDAR点云的杆塔提取技术 |
CN117237356A (zh) * | 2023-11-15 | 2023-12-15 | 山东泗水丰田农药有限公司 | 用于农药生产的废水处理控制方法 |
CN117237356B (zh) * | 2023-11-15 | 2024-02-23 | 山东泗水丰田农药有限公司 | 用于农药生产的废水处理控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN102254093B (zh) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Zhao et al. | Geographical information system parallelization for spatial big data processing: a review | |
CN102306396B (zh) | 一种三维实体模型表面有限元网格自动生成方法 | |
Chiang et al. | Dynamic algorithms in computational geometry | |
CN107423518B (zh) | 利用Civil3D与Revit结合的综合管廊全线BIM协同设计方法 | |
CN105160706B (zh) | 一种单机多核环境下约束地形并行构建方法 | |
CN101976468B (zh) | 一种多分辨率动态地形可视化方法及*** | |
CN105630988A (zh) | 一种快速检测空间数据变化并更新的方法及*** | |
CN108763827B (zh) | 一种输电塔有限元模型建立方法及装置 | |
CN109461209B (zh) | 一种新型结构网格生成方法 | |
CN102254093B (zh) | 基于泰森多边形的连通域统计相关算法 | |
CN104820684A (zh) | 一种基于空间位置的快速联机分析处理方法 | |
CN114048204A (zh) | 基于数据库倒排索引的北斗网格空间索引方法和装置 | |
CN105302874A (zh) | 基于地理云数据的空间匹配方法 | |
Li et al. | Hierarchical elimination selection method of dendritic river network generalization | |
Zhou et al. | Parallel identification and filling of depressions in raster digital elevation models | |
Wu et al. | Novel parallel algorithm for constructing Delaunay triangulation based on a twofold-divide-and-conquer scheme | |
CN104090945B (zh) | 一种地理空间实体构建方法及*** | |
Wang et al. | Integration of 3DGIS and BIM and its application in visual detection of concealed facilities | |
CN111915720B (zh) | 一种建筑物Mesh模型到CityGML模型的自动转换方法 | |
CN105930354A (zh) | 存储模型转换方法和装置 | |
CN103106254B (zh) | 多边形矢量数据文件的并行拼接方法 | |
CN104899328A (zh) | 一种快速查找宗地四至的方法 | |
CN109241216B (zh) | 使用电网层级存储数据库架构实现网格化管理的方法 | |
CN107644139B (zh) | 一种从cad模型到cae模型的属性映射方法 | |
CN109345947A (zh) | 基于数据关联性分析的工作区域划分方法及终端设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140618 Termination date: 20210624 |