基于TIN的改进种子算法研究与实现

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


基于 TIN 的改进种子算法研究与实现
许长辉,孙久运,高井祥
中国矿业大学环境与测绘学院,江苏徐州(221008)
E-mail:tian0114xiao@
摘 要:在对目前广泛使用的扫描线填充算法分析基础上,结合生成 DEM 的不规则三角 网算法实际,本文提出了一种适用于基于三角形进行 DEM 建模的快速种子填充算法,并 给出了算法实现过程和达到效果, 所得结果证明对地学及相关领域具有一定的实际应用性。 关键词:数字高程模型,种子算法,不规则三角网,淹没分析
1. 前言
区域填充是计算机图形学的基本问题 之一,种子填充算法是区域填充的一种重 要算法,它广泛应用于交互式绘图系统和 数字图像处理中。递归种子填充算法是从 填充区域内部的一点开始,并由此出发找 到区域内的所有像素。这种算法的优点是 算法简单,易于实现,也可以填充有孔的 平面区域 。但是它也有存储空间大、信 息冗余、效率低等缺点。针对这种缺点, 任继成等提出了改进的区域填充扫描线算 法 ,在未知边界的种子填充算法中具有 非常高的填充效率,但在其他情况中不一 定适用,如基于数字高程模型的分析等。 数字高程模型 (DEM) 是以数字形式存 储表示物体位置高程值的集合, 目前已广泛 应用在测绘、工程、军事、环境规划、水利 等领域。 郭利华等在基于DEM的洪水淹没分 析中探讨了关于洪水淹没分析有关的一些 问题 ,丁志雄等在基于GIS格网模型的洪 水淹没分析方法中研究了基于格网的洪水 淹没分析方法 ,但是对于三维离散数据进 行淹没分析, 目前还没有很好的方法和实现 过程。本文正是基于此,利用原始的三维离 散点坐标数据, 使用目前广泛使用的不规则 三角网构成三维模型, 然后基于所构成的三 角网探讨实现淹没分析。
[4] [3] [2] [1]
格网,混合式 DEM 等,但目前使用最多 的还是规则格网 GRID 和不规则三角网 TIN。规则格网的主要优点是数据结构简 单,存储量很,便于使用和管理,各种分 析与计算非常方便有效等。但不规则三角 网相对于规则格网却有着独特的优越性, 具体表现在:利于用原始数据作为格网结 点,减少了地形简单地区的数据冗余;能 够较好地适应不规则形状区域,克服了规 则格网对起伏程度变化大的区域描述不够 精细的特点;利用 TIN 追踪等高线的算法相对简单;不 改变原始数据及其精度,保存了原有的关 键地形特征[5-7]。 因此, 本文采用了 TIN, 而 TIN 的建立方法有很多,如最近距离算 法,最小边长算法,泰森(Thiessen)多 边形算法等,为了便于淹没分析的实现, 本文提出了鉴于泰森多边形的改进最近距 离算法。 鉴于泰森多边形中将所有数据按照某 点的顺时针排序思想,研究将最近距离算 法进行了优化。此算法的步骤如下: 首先,读入数据,并分别求出 Xmax, Ymax,Xmin,Ymin,求出平均值,并将 其设为坐标系的原点,同时将其他各坐标 分别减去平均值作为相对于原点的坐标。 其次,将所有的数据点按照平均值分 成四个象限,在第一象限中取一个数据点 作为第一个点,然后根据距离公式搜索与 这个点最近的点作为第二个点。第一个点 和第二个点可以组成一条平面直线,根据 图 1 所示的方法将组成三角形的点进行优
-1-
2. DEM 的建立
DEM 有多种数据结构表现形式, 如离 散点 DEM,不规则三角网,等高线,规则


化,筛选掉部分点(第一个点与第二个点 组成的直线右侧的点) 。 l
单,容易实现,但是效率低,速度慢。鉴 于上述分析, 并考虑到 Java 具有内插器的 特点,因此本文提出了改进的基于三角形 的种子算法。算法实现分为下面四种情况 进行讨论: 第一种情况:如图 3 所示,如果三角
Pn Pi+ Pi+ P P P
形三个点的坐标值都大于给定高程值,则 将这个三角形存入一个三角形数组 tri1 中,并赋予颜色值为绿色。
P1(x1,y1,z1)
图 1 组构三角形点选择
最后,如上图所示,选 P1 点为第一 个点,然后根据距离最近选出第二点 P2。 由 P1,P2 组成直线 l,将各个点代入直线 l 中,如果其值大于 0,则保留此点;如果 其值小于 0,则舍去此点,下面搜索时不 与考虑。最后在直线 l 的左侧根据距离最 近算法来选择一点组成三角形,即在 Pi+1, Pn 中根据 cosP1PkP2 k=i+1, …, ( …, n) 值最小来选择第三点。 组成三角形图如 下: P2(x2,y2,z2)
图 3 第一、二种情况
P3 3, 3, 3) (x y z
第二种情况:如图 3 所示,如果三角 形三个点的坐标值都小于给定高程值,则 将这个三角形存入另一个三角形数组 tri2 中,并赋予颜色值为蓝色。 第三种情况:如果三角形一个点的高 程值小于给定值,另两点大于给定值,如 图 4, 假设 P2Z, , P3>Z, 则应根据距离加权分别内插出 P4,P5 点 的高程值。然后将△P1P4P5 存入数组 tri1 中,△P1P4P5,△P1P4P5 存入数组 tri2 中,P4,P5 赋予绿色,P1 赋予蓝色,利 用 Java 内插器线性内插出边上各点的颜 色值。 P1 1, 1, 1) (x y z P5
图 2 三角形组构图
3. 改进的基于三角形的种子算 法
目前,种子填充算法中人们经常使用 且较成熟的是扫描线填充算法, 算法简单, 且由于利用了闭区域边界象素的四连通 性,因而其填充效率也较高,对内存的需 要量也较小[8]。因此得到了广泛应用,但 是它只能适用于特定情况,对于本文的 TIN 格网,扫描线填充算法不太适用。同 时,常规的递归种子填充算法虽然算法简
-2-
P2(x2,y2,z2)
P4
P3(x3,y3,z3)
图 4 第三、四种情况
第四种情况:如果三角形一个点的高 程值大于给定值,另两点小于给定值,如


图 4, 假设 P2>Z (给定值)而 P1的三角形三点均赋予蓝色,而三点都小于 给定高程值的三角形三点均赋予绿色。其 他两种情况就要根据实际情况,依据上式 求出高程值等于给定高程值的点,然后分 别将三角形拆分,分别赋予不同的颜色存 储于不同的三角形数组中。
4. 实例效果
试验数据使用了多组给定点的三维坐 标 x,y,z 来进行三维建模以及淹没分析。 首 先读入三维坐标数据,并显示到屏幕上, 然后通过鉴于泰森多边形的最近距离算法 生成 TIN,如图 5 所示。
( z 2 − z) 2 = ( z − z3 ) 2
(1)
( x 2 − x) 2 + ( y 2 − y ) 2 ( x − x3 ) 2 + ( y − y 3 ) 2
由 P2,P3,P4 在一条直线上可得另 一个方程式

y −y y − y2 =− 3 x − x2 x3 − x
(2)
由式(1)和式(2)联立可解得 P4 点的平面坐标:
y4 =
− b ± b 2 − 4ac 2a (±号根据 y2
a = ( z − z3 ) 2 − ( z 2 − z) 2 b = 2 y3 ( z 2 − z ) 2 − 2 y 2 ( z − z3 ) 2
图 5 优化的最近距离算法生成的 TIN
和 y3 的大小来取舍) 其中,
基于所生成的 TIN,结合 Java 颜色内 插器的应用,生成的三维模型分别见图 6
(x −x)2 c=(z−z ) y −(z2−z) y − 3 2 2*(( −y)2(z2−z)2−(y−y2)2(z−z3)2) 和图 7。图 6 给出了给定某一高度值时的 y 3 (y −y2) 3
2 2 3 2 2 2 3
− b ± b 2 − 4ac x4 = 2a (±号根据 x2 和 x3
的大小来取舍) 其 中 ,
淹没分析图,图 7 显示在原始状态下,即 不进行淹没分析时的三维建模图。
a = ( z − z3 ) 2 − ( z 2 − z) 2
b = 2 x 3 ( z 2 − z ) 2 −2 x 2 ( z − z 3 ) 2
(y −y)2 c=(z−z ) x −(z2−z) x − 3 2 2 *((−x)2(z2−z)2−(x−x)2(z−z3)2) x 3 2 (x −x) 3 2
22 3 2 22 3
同理可得 P5 的平面坐标,高程值即 为给定的高程值。线性内插出 P4 和 P5 点 坐标后,就可以根据算法流程图中的步骤 对所有情况进行分类赋予不同的颜色值。 对于三角形三点高程值均大于给定高程值
-3图 6 淹没分析图

相关文档
最新文档