- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于TIN的改进种子算法研究与实现
许长辉 孙久运 高井祥
(中国矿业大学环境与测绘学院,江苏 徐州,221008)
E-mail:tian0114xiao@163.com
1. 前言
区域填充是计算机图形学的基本问题之一,种子填充算法是区域填充的一种重要算法,它广泛应用于交互式绘图系统和数字图像处理中。递归种子填充算法是从填充区域内部的一点开始,并由此出发找到区域内的所有像素。这种算法的优点是算法简单,易于实现,也可以填充有孔的平面区域[1]。但是它也有存储空间大、信息冗余、效率低等缺点。针对这种缺点,任继成等提出了改进的区域填充扫描线算法[2],在未知边界的种子填充算法中具有非常高的填充效率,但在其他情况中不一定适用,如基于数字高程模型的分析等。
数字高程模型(DEM)是以数字形式存储表示物体位置高程值的集合,目前已广泛应用在测绘、工程、军事、环境规划、水利等领域。郭利华等在基于DEM的洪水淹没分析中探讨了关于洪水淹没分析有关的一些问题[3],丁志雄等在基于GIS格网模型的洪水淹没分析方法中研究了基于格网的洪水淹没分析方法[4],但是对于三维离散数据进行淹没分析,目前还没有很好的方法和实现过程。本文正是基于此,利用原始的三维离散点坐标数据,使用目前广泛使用的不规则三角网构成三维模型,然后基于所构成的三角网探讨实现淹没分析。
2. DEM的建立
DEM有多种数据结构表现形式,如离散点DEM,不规则三角网,等高线,规则格网,混合式DEM等,但目前使用最多的还是规则格网GRID和不规则三角网TIN。规则格网的主要优点是数据结构简单,存储量很,便于使用和管理,各种分析与计算非常方便有效等。但不规则三角网相对于规则格网却有着独特的优越性,具体表现在:利于用原始数据作为格网结点,减少了地形简单地区的数据冗余;能够较好地适应不规则形状区域,克服了规则格网对起伏程度变化大的区域描述不够精细的特点;利用
TIN追踪等高线的算法相对简单;不改变原始数据及其精度,保存了原有的关键地形特征[5-7]。因此,本文采用了TIN,而TIN的建立方法有很多,如最近距离算法,最小边长算法,泰森(Thiessen)多边形算法等,为了便于淹没分析的实现,本文提出了鉴于泰森多边形的改进最近距离算法。
鉴于泰森多边形中将所有数据按照某点的顺时针排序思想,研究将最近距离算法进行了优化。此算法的步骤如下:
首先,读入数据,并分别求出Xmax,Ymax,Xmin,Ymin,求出平均值,并将其设为坐标系的原点,同时将其他各坐标分别减去平均值作为相对于原点的坐标。
其次,将所有的数据点按照平均值分成四个象限,在第一象限中取一个数据点作为第一个点,然后根据距离公式搜索与这个点最近的点作为第二个点。第一个点和第二个点可以组成一条平面直线,根据图1所示的方法将组成三角形的点进行优化,筛选掉部分点(第一个点与第二个点组成的直线右侧的点)。
图1 组构三角形点选择
最后,如上图所示,选P1点为第一个点,然后根据距离最近选出第二点P2。由P1,P2组成直线l,将各个点代入直线l中,如果其值大于0,则保留此点;如果其值小于0,则舍去此点,下面搜索时不与考虑。最后在直线l的左侧根据距离最近算法来选择一点组成三角形,即在Pi+1,…,Pn中根据cosP1PkP2(k=i+1,…,n)值最小来选择第三点。组成三角形图如下:
图2 三角形组构图
3. 改进的基于三角形的种子算法
目前,种子填充算法中人们经常使用且较成熟的是扫描线填充算法,算法简单,且由于利用了闭区域边界象素的四连通性,因而其填充效率也较高,对内存的需要量也较小[8]。因此得到了广泛应用,但是它只能适用于特定情况,对于本文的TIN格网,扫描线填充算法不太适用。同时,常规的递归种子填充算法虽然算法简单,容易实现,但是效率低,速度慢。鉴于上述分析,并考虑到Java具有内插器的特点,因此本文提出了改进的基于三角形的种子算法。算法实现分为下面四种情况进行讨论:
第一种情况:如图3所示,如果三角形三个点的坐标值都大于给定高程值,则将这个三角形存入一个三角形数组tri1中,并赋予颜色值为绿色。
图3 第一、二种情况
第二种情况:如图3所示,如果三角形三个点的坐标值都小于给定高程值,则将这个三角形存入另一个三角形数组tri2中,并赋予颜色值为蓝色。
第三种情况:如果三角形一个点的高程值小于给定值,另两点大于给定值,如图4,假设P2Z(给定值),而P1Z,P3Z,则应根据距离加权分别内插出P4,P5点的高程值。然后将△P1P4P5存入数组tri1中,△P1P4P5,△P1P4P5存入数组tri2中,P4,P5赋予绿色,P1赋予蓝色,利用Java内插器线性内插出边上各点的颜色值。
图4 第三、四种情况
第四种情况:如果三角形一个点的高程值大
文档评论(0)