TIN三角网说明程序
不规则三角网(TIN)VB 6.0编程实现
2 等高线 生成 D M 的高精度 方法 ) E 对 原始 等高 线位 置利 用 形 态 变 换 进 行 保 护 , 得原 使
YU m —q .L U n I i I Ho g—b 。
(n tueo o rp i fr t nE gn eigo in P oic , h n c u 3 0 1 C n ) Is tt f i Gega hcI omai n ier f l rvn e C a gh n 105 , h a n o n Ji i
0 引 言
数字高 程模 型 ( E 是地 理 信息 系统 地 理数 据 库 中 D M) 最 为重要 的空间 信息 资 料 和赖 以进 行 地形 分 析 的核 心 数 据 系统 …。 目前 , 世界各主 要发 达 国家都纷 纷建 立 了覆 盖 全 国的 D M 数据系统 。D M 作 为地球空 间框 架数据 的基 E E
本 内容 , 是各 种 地理 信 息 的载 体 , 国家 空 间数 据 基 础设 在
计未 知格 网点 的高程要 在 一 定范 围内搜 索落 在 其 中 的 已 知点 数据 , 计 算 它 的 加权 平 均 值 。如 果 搜 索 到 的 点 都 再 具有 相 同的高 程 , 待插 值 点 的高 程 也 是 此 高 程 值 。结 那 果导 致在 每条等 高线 周 围的狭 长 区域 内具有 与等 高线 相 同 的高程 , 易产 生 “ 田效应 ”4。 梯 _ J
关键词 : 字高程模型 ; 数 标识码 : B 文章 编号 : 7 5 6 (0 2 0 0 0 — 3 1 2— 87 2 1 )5— 2 3 0 6
不规则三角网(TIN)
不规则三角网(TIN)Ⅰ 数字高程模型(DEM)地球表面高低起伏,呈现一种连续变化的曲面,这种曲面无法用平面地图来确切表示。
于是我们就利用一种全新的数字地球表面的方法——数字高程模型的方法,这种方法已被普遍广泛采用。
数字高程模型即DEM(Digital Elevation Model),是以数字形式按一定结构组织在一起,表示实际地形特征空间分布的模型,也是地形形状大小和起伏的数字描述。
DEM有三种主要的表示模型:规则格网模型,等高线模型和不规则三角网。
格网(即GRID)DEM在地形平坦的地方,存在大量的数据冗余,在不改变格网大小情况下,难以表达复杂地形的突变现象,在某些计算,如通视问题,过分强调网格的轴方向。
不规则三角网(简称TIN,即Triangulated Irregular Network)是另外一种表示数字高程模型的的方法(Peuker等,1978),它既减少了规则格网带来的数据冗余,同时在计算(如坡度)效率方面又优于纯粹基于等高线的方法。
不规则三角网能随地形起伏变化的复杂性而改变采样点的密度和决定采样点的位置,因而它能够避免地形起伏平坦时的数据冗余,又能按地形特征点如山脊,山谷线,地形变化线等表示数字高程特征。
Ⅱ TIN的基本知识在TIN中,满足最佳三角形的条件为:尽可能的保证三角形的三个角都是锐角,三角形的三条边近似相等,最小角最大化。
TIN 是基于矢量的数字地理数据的一种形式,通过将一系列折点(点)组成三角形来构建。
形成这些三角形的插值方法有很多种,例如Delaunay 三角测量法或距离排序法。
ArcGIS 支持Delaunay 三角测量方法。
TIN 的单位是英尺或米等长度单位,而不是度分秒。
当使用地理坐标系的角度坐标进行构建时,Delaunay 三角测量无效。
创建TIN 时,应使用投影坐标系(PCS)。
TIN 模型的适用范围不及栅格表面模型那么广泛,且构建和处理所需的开销更大。
获得优良源数据的成本可能会很高,并且,由于数据结构非常复杂,处理TIN 的效率要比处理栅格数据低。
第五章 不规则三角网TIN建立1
子集凸壳的生成 所谓凸壳是指数据点的自然极限边界,为包含所有数据点的最小凸多边形。
下面给大家介绍格雷厄姆凸壳生成算法,步骤如下:
(1)找出点集中ቤተ መጻሕፍቲ ባይዱ坐标最小的点P1 (2)将P1点和点集中其他各点用线段相连, 并计算这些线段与水平线的夹角 (3)按夹角大小对数据点进行排序,如果夹角 相同,则按距离排序。设得到的序列为P1、 P2、…Pn (4)依次连接所有点,得到一多边形,根据凸 多边形原理,删去边界序列中的非凸壳顶点。最 后,得到凸壳点集。
第一节
1.2 TIN的三角剖分准则
概述
(4)张角最大准则:一点到基边的张角为最大。 (5)面积比准则:三角形内切圆面积与三角形面积或三角形面积与周长平方之 比最小。 (6)对角线准则:两三角形组成的凸四边形的两条对角线之比超过给定限定值 时,对三角形进行优化。
通常将在空外接圆准则、最大最小角准则下进行的三角剖分称为Delaunay三角形, 简称DT。
面是由最近的三个顶点所组成的三角形面,是TIN描述地形表面的基本单元。TIN 中的每一个三角形都描述了局部地形倾斜状态,具有唯一的坡度值。
数据和TIN的类型 构建TIN的原始数据根据数据点之间的约束条件可分为无约束数据域和约束数据域 两种类型。 无约束数据域是指数据点之间不存在任何关系,即数据分布完全呈离散状态,数据 点之间在物理上相互独立。
第一节
1.1 TIN的基本概念 什么是TIN??
概述
基于不规则三角网的数字高程模型(Based on Triangulated Irregular Network DEM) 就是用一系列互不交叉、互不重叠的连结在一起的三角形来表示地形表面。
TIN的基本要素 用来描述TIN的基本要素有三个:节点、边、面。 节点是相邻三角形的公共顶点,也是用来构建TIN的 采样数据。 边是指两个三角形的公共边界,是TIN不光滑性的具 体反映。边同时还包含特征线、断裂线及区域边界。
不规则三角网(TIN)的建立分析
2018/10/22 5
数据和TIN的类型
用来进行TIN构建的原始数据根据数据点之间的约束 条件可分为无约束数据域和约束数据域两种类型。
2018/10/22
3
不规则三角网(TIN)的建立
T:三角化( Triangulated )是离散数据的三角剖分 过程,也是TIN的建立过程。位于三角形内的任意一点 的高程值均可以通过三角形平面方程唯一确定。 I:不规则性( Irregular ),指用来构建TIN的采样 点的分布形式。TIN具有可变分辨率,比格网DEM能更 好反映地形起伏。 N:网( Network ),表达整个区域的三角形分布形 态,即三角形之间不能交叉和重叠。三角形之间的拓 扑关系隐含其中。
平方之比最小。
对角线准则:两三角形组成的凸四边形的两条对角线之比。这一准
则的比值限定值,须给定,即当计算值超过限定值才进行优化。
2018/10/22
10
说明:
1)三角形准则是建立三角形格网的基本原 则,应用不同的准则将会得到不同的三角网。 2)一般而言,应尽量保持三角网的唯一性, 即在同一准则下由不同的位置开始建立三角 形格网,其最终的形状和结构应是相同的。 3)空外接圆准则、最大最小角准则下进行 的三角剖分称为Delaunay (译为狄洛尼或德 劳内)三角剖分(Triangulation),简称DT。 空外接圆准则也叫Delaunay法则。
扩张生长算法与收缩算法过程刚好相反,是从一个 三角形开始向外层层扩展,形成覆盖整个区域的三角 网。
2018/10/22 15
不规则三角网(TIN)的建立
不规则三角网(TIN)的建立算法
马仕航 1410040222
2016/11/20
1
TIN概述
5.1.1 TIN的理解 5.1.2 TIN的三角剖分准则
5.1.3
点
三角剖分算法分类与特
2016/11/20
2
TIN的基本概念
不规则三角网(Triangulated Irregular Network 简称TIN):是用一系列互不交叉、互不重叠的连接在一 起的三角形来表示地形表面。TIN既是矢量结构又有栅格 的空间铺盖特征,能很好地描述和维护空间关系。
20
2、逐点插入算法 :
• 1)定义包含所有数据点的最小外界矩形范围,并以此作 为最简单的凸闭包。 • 2)按一定规则将数据区域的矩形范围进行格网划分(如 限定每个格网单元的数据点数)。 • 3)剖分数据区域的凸闭包形成两个超三角形,所有数据 点都一定在这两个三角形范围内。 • 4)对所有数据点进行循环,作如下工作(设当前处理的 数据点为P):
将等高线作为特征线的方法;
自动增加特征点及优化TIN的方法。
2016/11/20
25
等高线离散点直接生成TIN方法
该方法直接将等高线离散化,然后利用常用TIN的生成 算法,该方法没有考虑离散点间原有的连接关系,模拟 的地形就会失真,具体表现为三角形的边穿越等高线和 存在平三角形的两种情况。 在实际应用中该方法较少使用。
无约束数据域是指数据点之间不存在任何关系,即 数据分布完全呈离散状态,数据点之间在物理上相互 独立。
约束数据域则是部分数据点之间存在着某种联系, 这种联系一般通过线性特征来维护,如地形数据中的 山脊线、山谷线上的点等。
2016/11/20
三角网构造原理范文
三角网构造原理范文三角网(Triangular Irregular Network,TIN)是一种常见的地理信息处理技术,用于表示从离散的点数据构造出来的地形表面模型。
TIN 是由彼此相邻的三角形构成的网络,其中每个节点代表一个地理位置,每个三角形由三个节点和三个边形成。
建立TIN的过程即为三角网构造。
1.建立节点:首先,根据已有的点数据集,确定准确的节点位置。
通常情况下,节点的位置是根据地理坐标系统来确定的,可以采用全球定位系统(GPS)或其他测量技术来获取。
2.确定边界:在建立三角网之前,需要确定地理区域的边界。
边界的确定可以根据已知的地理特征或者其他边界信息进行。
边界的设定对于三角网的建立和运算具有重要的影响,因此需要特别注意。
3. 建立三角形:通过连接相邻节点来建立三角形。
通常情况下,建立三角形的方法有多种,如最近邻法、Delaunay三角化方法等。
最近邻法是指通过选择每个节点最近的k个节点来构造三角形,而Delaunay方法则是指通过满足一定准则的连线来构造。
4.生成TIN:在建立完所有的三角形之后,即可生成完整的三角网。
在这个过程中,可能会涉及到节点的添加、删除或移动等操作,以使得生成的三角网更加精确和逼近实际地形。
1.描述准确:使用三角网可以准确地描述地形表面的形状和特征,因为每个三角形都是由实际的地理位置点构成的。
2.灵活性强:三角网构造可以根据实际需求进行扩展或缩减。
通过添加或删除节点,可以更改三角网的细节和精度,使其能够适应不同的应用场景。
3.数据连续性好:相邻三角形之间共享边界,使得数据在空间上具有连续性。
这种连续性有助于进行空间分析和模拟。
4.计算效率高:基于三角网的地理分析和计算通常是高效的,因为三角网结构紧凑且计算规模相对较小。
总之,三角网构造是一种常见且重要的地理信息处理技术,广泛用于地形分析、地形建模和地理数据可视化等领域。
通过精确地描述地形表面,三角网构造可以为地理信息系统提供基础数据,为地理空间分析提供支持,进一步推动地理信息科学的发展和应用。
不规则三角网(TIN)生成的算法
可见,由于步骤(3)的处理,保证相邻的数据点渐次插入,并通过搜寻加入点的影响三角网(Influence Triangulation),现存的三角网在局部范围内得到了动态更新。从而大大提高了寻找包含数据点的三角形的效率。
5.3
当不相交的地形特征线、特殊的范围边界线等被作为预先定义的限制条件作用于TIN的生成当中时,必须考虑带约束条件的Delaunay三角网。最简单的处理方法是所谓的“加密法”,即通过加密约束线段上的数据点,将约束数据转换为普通数据,从而按标准Delaunay三角形剖分即可。尽管该方法加大了数据量并改变了原始数据集,但由于简单易行、稳定可靠,在许多情况下可以很好地满足需要。该方法唯一的问题在于如何恰当地确定特征线上加密数据点之间的距离,一般取平均数据点间距的一半或更小即可。以下内容主要介绍直接处理约束线段的算法。
定义2:令单点集M和线段端点集E之并为V(V=M∪E),如果在V的每个Delaunay三角形的外接圆范围内不包含任何与三角形的顶点均通视的其它点,而点Pi与Pj(Pi,Pj∈V)当且仅当连线PiPj不与L中的任何约束线段相交叉(除在端点处外)时才互相通视,那么称这个Delaunay三角网为V由L约束的Delaunay三角网(朱庆,陈楚江,1998)。
(a)三角形与等高线相交;(b)三角形的三个顶点都位于同一条等高线上
图5.3.3对等高线进行不合理三角化的例子
将等高线作为特征线生成三角网一般有两种算法:将等高线作为特征线的方法、自动增加特征点及优化TIN的方法。
将每一条等高线当作断裂线或结构线时,对三角形而言,至多只能从同一等高线取两个点。图5.3.4显示了一个考虑等高线特性的Delaunay三角网。
(1)搜寻分别对应x-y,x+y最大值及x-y,x+y最小值的各二个点。这些点为凸闭包的顶点,且总是位于数据集的四个角上,如图5.1.2(a)中的点7,9,12,6所示;
Tin三角形图的原理和应用
Tin三角形图的原理和应用概述Tin(Triangulated Irregular Network)三角形图是一种用于地理空间分析和地形建模的数据结构。
它被广泛应用于地理信息系统、计算机图形学和地质学等领域。
本文将介绍Tin三角形图的原理和应用,并说明其优势和局限性。
原理Tin三角形图是由一系列连接的三角形组成的网络。
每个三角形节点都有一个高度值,可以表示地形的高程,从而形成一个地形模型。
Tin三角形图的生成包括以下步骤:1.数据采集:首先需要收集地理空间数据,如地形高程数据、地理坐标数据等。
2.数据加密:将采集到的数据通过插值等方法进行加密,生成更密集的数据点。
3.构建拓扑关系:根据加密后的数据点,使用Delaunay三角剖分算法构建拓扑关系,生成三角形网格。
4.优化和筛选:对生成的三角形网格进行优化和筛选,确保其满足拓扑条件和几何要求。
5.存储和索引:将生成的Tin三角形图存储在数据库或文件中,并建立索引以便快速检索和查询。
应用Tin三角形图具有广泛的应用领域,下面列举几个常见的应用场景:地形建模Tin三角形图可以用于地形建模,可以根据高程数据生成真实的地形模型。
在地理信息系统中,地形建模可以用于地形分析、景观设计、地质勘探等领域。
地形分析Tin三角形图可以进行各种地形分析,如坡度分析、坡向分析、流域分析等。
这些分析可以帮助我们理解地形的特征和变化。
地质勘探Tin三角形图可以用于地质勘探,根据地形的变化和特征,可以预测矿产资源的分布、地质灾害的潜在风险等。
Tin三角形图在地质学研究中有很重要的应用价值。
计算机图形学Tin三角形图在计算机图形学中也有广泛的应用。
它可以用于建模和渲染三维物体、地形和景观等。
Tin三角形图可以提供更加真实和细致的图形效果。
优势和局限性Tin三角形图相比其他地理空间数据结构,具有以下优势:•真实性:Tin三角形图通过采集真实的高程数据和地理坐标数据来生成地形模型,具有高度的真实性。
数字地面模型 第五章 不规则三角网(TIN)的生成 Voronoi图与Delaunay三角形
2.5 Delaunay三角网生成的算法
经过30多年的研究,自动生成Delaunay三角网的算法已趋于成熟:它们基本 上可分为分治算法、逐点插入法、三角网生长法等3类。其中前两类较第3类在应 用上更加广泛;但即使这两类算法也分别存在着时间和空间效率上的缺陷,使它 们的应用受到了一定的限制。 Shamos和Hoey首次提出了一个用分治算法的思想实现的生成V-图的算法。它 后来被Lewis和Robinson加以改进并应用于生成D-三角网。该算法是不断地将数 据分割为两个近似相等的子集,直至子集中的点数不大于4而生成子三角网,然 后逐级合并生成最终的三角网。分治算法是通过递归地执行同一源代码而实现的
成开放的区域外,其余每个点都形成一个凸多边 形。
2.3 Delaunay三角网
Delaunay三角网是V-图的伴生图形,它是相互邻接且互不重叠的三角形集合。 D-三角网的定义是:有公共边的V-多边形称为相邻的V-多边形。连接所有相邻 的V-多边形的生长中心所形成的三角网称为D-三角网。
D-三角网的外边界是一个凸多边形,它由连接V中的凸集形成,通常称为凸壳。 D-三角网具有两个非常重要的性质。
2.4 Delaunay三角网产生的基本准则
空圆法则:任何一个 Delaunay 三角形 的外接圆的内部不能包含其他任何点, 也称狄洛尼法则。 Lawson 的“最大化最小角原则”:每 两个相邻的三角形构成的凸四边形的 对角线,在相互交换后,六个内角的 最小角不再增大。 Lawson 的“局部最优方法 (LOP)” :交 换凸四边形的对角线,可获得等角性 较好的三角网。
• 不规则三角网是通过从不规则分布的数据点生成的连续三角面来逼 近地形表面。
1.2
不规则三角网的基本要求
TIN模型根据不规则分布于区域的离散点集P(实测高程点),将区域 划分为相连的三角面网络,它要求:
TIN构网算法.doc
TIN构网算法自动联结三角网构网法一、形成最佳三角网的条件用三角网法绘制等值线,是在三角形的三条边上用线性内插方法寻找等值点,这种方法的机理是将每个三角形看作是空间的一个平面,这就要求在每个三角形的三个顶点内的地貌形态无明显的变化,故此希望将其中最靠近的三个点构成三角形,以符合上述机理,使插补的等值点精度较高,更好的反映地貌的实际形态。
符合这些条件的三角形称之为“最佳三角形”。
建立最佳三角形的条件,最常用的方法是,用邻近离散点组成三角形时,应尽可能使三角形均为锐角三角形,或使三角形的三条边长近似相等,这是较为理想的情况。
但在实际中,往往是首先确定三角形的一条边(即两个顶点),在确定第三个顶点时,可使第三个顶点与已知两点所形成的夹角最大,从而使形成的三角形为“最佳三角形”。
二、使用的数据结构及控制变量说明(定义)控制变量的说明n~离散点的个数L~构网完成后形成的三角形个数M~构网完成后形成的边数K~计数器,记录目前正在用来扩展的三角形计数号二、点、线、三角形的说明点的定义:Type point = record x,y:real线的定义:Type line =record P1,P2:point三角形定义:Type ver = record I,J,R :int由以上三个定义可以引出下面的说明:点组:array[1...N] of point线组:array[1...M] of line三角形组:array[1...L] of ver*在本章中后续内容中,这些说明直接引用而不再解释其含义。
*点组、线组、三角形组为动态组,以便节省内存。
三、构网的步骤(原理)自动联结三角网方法构网的步骤如下:(一)确定第一个三角形从n个离散点中任取一点作为P1,然后在其余的离散点中找出距P1最近的点P2,利用余弦公式计算剩余点与第一点、第二点的夹角的余弦值,将余弦值最小(即夹角最大)的那个点作为P3,至此第一个三角形已形成,并记录三个点号,计数器分别开始计数:即K=L+1。
不规则三角网(tin)的构建与应用-(5313)
第一章绪论1.1研究背景地球是人类生活和活动的承载体。
多年以来,我们为了更充分的认识自然客体和改造自然,总在不懈的努力尝试用不同的方式方法来描述、表达人所处的环境,其中地形图就是一个有代表性的测绘表述变迁的缩影。
从最开始的象形符号抽象的雏形到后来的在二维介质上对三维表面进行地形写景图,地貌写景图等描述是一个进步,但写景方式不具备可量测性,所以还是很局限的。
随着测绘技术发展,地形的表达也由写景式的定性表达过渡到了以等高线为主的矢量化表达。
航空摄影测量,遥感技术提供的影响都在对三维现实世界的模拟。
但是有一个矛盾体,那就是对于地形表面形态而言,一方面我们尽可能的从几何角度去理解和描述以解决实际应用中的可量测性;另外一个方面它本身是一种三维景观现象,对于其表述要考虑生理视觉感受,我们总是希望能够尽可能的直观形象逼真。
从20世纪四十年代开始的计算机图形学、计算机辅助制图等相关学科和理论的发展,使得在测绘领域,在图形表达表述方面发生了从模拟表达时代走向了数字表达时代,有了质的飞跃。
其中地理信息系统(GIS )及数字高程模型(DEM )学科或技术显得尤为重要。
地理信息系统,简称GIS (Geographical Information System ),它源于20世纪60年代初期加拿大测量学家Tomlinson 的“把地图变成数字形式的地图,以便计算机进行处理与分析”的观点,但是在技术工具处理中,则是利用计算机存贮、处理地理信息,并且在计算机软、硬件支持下,把各种资源信息和环境参数按空间分布或地理坐标,以一定的格式或者分类输入、处理、存贮、输出,用以满足其应用需要的人机交互系统。
因此GIS 的本质是在二维地理空间基础上实现对地下、地表和空中诸地理信息的数字化表达和管理。
当然地理信息系统技术发展到当前,功能不再是当初的局限于查询、检索和制图,而是丰富到空间分析、建模、决策等诸多方面,在数据管理上则从简单的栅格数据、矢量数据管理转向多元数据融合,在现实生活中应用的很活跃,也很充分。
不规则三角网生成的算法培训资料
生成三角形网格。
优化处理
对生成的三角形网格进行优化, 如删除冗余的三角形、调整三角 形的形状等,以提高TIN的质量
和精度。
Part
03
不规则三角网生成算法实现
数据准备
数据来源
确定数据来源,如地图数据、卫 星遥感数据等,并了解数据的格 式和精度要求。
不规则三角网生成的 算法培训资料
• 引言 • 不规则三角网生成算法基础 • 不规则三角网生成算法实现 • 算法优化与改进 • 实践操作与问题解答
目录
Part01Fra bibliotek引言主题简介
三角网是地理信息系统(GIS)中用于表示三维表面的一种数据结构,由一系列三角形面 片组成。不规则三角网(TIN)是一种特殊的三角网,它能够更好地表示地形表面的不规 则性和复杂性。
案例总结
总结成功案例的经验教训, 为算法在实际应用中提供 参考和借鉴。
Part
05
实践操作与问题解答
实践操作流程
导入数据
将需要生成不规则三角网的数据 导入到软件中,确保数据格式正 确无误。
结果输出
将生成的三角网导出为所需格式, 如GeoTIFF、Shapefile等。
参数设置
根据数据特征和需求,设置合适 的参数,如阈值、最小三角形边 长等。
优化策略
减少计算量
通过优化算法,降低计算 复杂度,提高计算效率。
空间索引
利用空间索引技术,快速 定位和筛选符合条件的点, 减少不必要的计算。
并行计算
将算法拆分成多个子任务, 利用多核处理器进行并行计 算,提高计算速度。
改进方法
STEP 02
不规则三角网
不规则三角网(TIN )生成算法一、三角剖分的标准:空外接圆法:任意四点不能共圆最大最小角法:三角网内的最小角尽可能的大最短距离和准则:形成的三角形三边之和应满足最优解——三边之和最短张角最大准则:面积比准则: 三角形的内切圆面积/三角形面积或三角形面积/三角形周长的平方的值最小对角线法则:但插入另一个点时,寻找四边形对角线最短的那条边作为新的三角网二、Delaunay 符合的标准:三、递归生长算法的基本思路:四、凸闭包收缩法:先找到包含数据区域的最小凸多边形,并从该多边形开始从外向里逐层形成三角形网络五、逐点插入法生成TIN 的思路:首先提取整个数据区域的最小外边界矩形范围,以此作为最简单的凸闭包->按一定法则将数据区域的矩形范围进行格网划分,限定每个格网单元平均拥有的数据点数->根据数据点的(x,y )坐标建立分块索引的线性链表->剖分数据区域的凸闭包形成两个超多边形->按照3建立的顺序链表顺序往4的三角形中插入数据点:先找到包含数据点的三角形,进而连接该点与三角形的三个顶点,简单剖分该三角形为三个新的三角形->分别调整新生成的三个三角形及其相邻的三角形,交换公共边->重复5~6,直到所有数据点都被插入到三角网中六、三角网TIN数据类型:无约束数据域——无约束TIN 约束数据域:内部约束及外部约束七delaunay法则:当三角形外接圆内不包含任意其他点,且其三个顶点相互通视时形成的三角网为一个带约束条件的delaunay法三角形八、带约束条件的delaunay Lawson LOP交换:在带约束的delaunay法则满足的条件下,由两相邻三角形组成的凸四边形的局部最佳对角线才被选取九、在TIN生成中如何考虑地形特征线三角剖分时要求TIN三角网中得三角形满足形态最优和无地形线穿越三角形的要求,主要有:三角形初始剖分->判断剖分三角形是否满足三角形形态比最大原则->判断特征线是否穿越剖分三角形->剖分点选择。
不规则三角网TIN的建立
数字高程模型
不规则三角网(TIN) 的建立算法
2019/3/25
马仕航 1410040222
1
TIN概述
?5.1.1 TIN的理解 ?5.1.2 TIN的三角剖分准则 ?5.1.3 三角剖分算法分类与特 点
2019/3/25
2
?TIN的基本概念
不规则三角网(Triangulated Irregular Network 简称TIN):是用一系列互不交叉、互不重叠的连接在一 起的三角形来表示地形表面。TIN既是矢量结构又有栅格 的空间铺盖特征,能很好地描述和维护空间关系。
2019/3/25
3
不规则三角网 (TIN)的建立
2019/3/25
11
?关于delaunay 三角网
? 1934年Delaunay提出了Voronoi图的对称图, 即Delaunay三角网(用直线段连接两个相邻 多边形内的离散点而生成的三角网)。
– Delaunay 三角网的特性:
? 不存在四点共圆; ? 每个三角形对应于一个Voronoi图顶点; ? 每个三角形边对应于一个Voronoi图边; ? 每个结点对应于一个Voronoi图区域; ? Delaunay图的边界是一个凸壳; ? 三角网中三角形的最小角最大。
2019/3/25
20
2、逐点插入算法 :
? 1)定义包含所有数据点的最小外界矩形范围,并以此作 为最简单的凸闭包。
? 2)按一定规则将数据区域的矩形范围进行格网划分(如 限定每个格网单元的数据点数)。
如何在ArcGIS中使用不规则三角网(TIN)详细介绍
如何在ArcGIS中使⽤不规则三⾓⽹(TIN)详细介绍01概述提到不规则三⾓⽹(TIN)就得先了解数字⾼程模型(DEM),地球表⾯⾼低起伏,呈现⼀种连续变化的曲⾯,这种曲⾯⽆法⽤平⾯地图来确切表⽰。
于是我们就利⽤⼀种全新的数字地球表⾯的⽅法数字⾼程模型的⽅法,这种⽅法已被普遍⼴泛采⽤。
数字⾼程模型即DEM(DigitalElevationModel),是以数字形式按⼀定结构组织在⼀起,表⽰实际地形特征空间分布的模型,也是地形形状⼤⼩和起伏的数字描述。
DEM有三种主要的表⽰模型:规则格⽹模型,等⾼线模型和不规则三⾓⽹。
格⽹(即GRID)DEM在地形平坦的地⽅,存在⼤量的数据冗余,在不改变格⽹⼤⼩情况下,难以表达复杂地形的突变现象,在某些计算,如通视问题,过分强调⽹格的轴⽅向。
不规则三⾓⽹(简称TIN,即TriangulatedIrregularNetwork)是另外⼀种表⽰数字⾼程模型的的⽅法(Peuker等,1978),它既减少了规则格⽹带来的数据冗余,同时在计算(如坡度)效率⽅⾯⼜优于纯粹基于等⾼线的⽅法。
不规则三⾓⽹能随地形起伏变化的复杂性⽽改变采样点的密度和决定采样点的位置,因⽽它能够避免地形起伏平坦时的数据冗余,⼜能按地形特征点如⼭脊,⼭⾕线,地形变化线等表⽰数字⾼程特征。
02TIN的基本知识在TIN中,满⾜最佳三⾓形的条件为:尽可能的保证三⾓形的三个⾓都是锐⾓,三⾓形的三条边近似相等,最⼩⾓最⼤化。
TIN是基于⽮量的数字地理数据的⼀种形式,通过将⼀系列折点(点)组成三⾓形来构建。
形成这些三⾓形的插值⽅法有很多种,例如Delaunay三⾓测量法或距离排序法。
ArcGIS⽀持Delaunay三⾓测量⽅法。
TIN的单位是英尺或⽶等长度单位,⽽不是度分秒。
当使⽤地理坐标系的⾓度坐标进⾏构建时,Delaunay三⾓测量⽆效。
创建TIN时,应使⽤投影坐标系(PCS)。
TIN模型的适⽤范围不及栅格表⾯模型那么⼴泛,且构建和处理所需的开销更⼤。
不规则三角网(TIN)的建立共30页
2、要冒一次险!整个生命就是一场冒险。走得最远的人,常是愿意 去做,并愿意去冒险的人。“稳妥”之船,从未能从岸边走远。-戴尔.卡耐基。
梦 境
3、人生就像一杯没有加糖的咖啡,喝起来是苦涩的,回味起来却有 久久不会退去的余香。
不规则三角网(TIN)的建立 4、守业的最好办法就是不断的发展。 5、当爱不能完美,我宁愿选择无悔,不管来多么美丽,我不愿失 去今生对你的记忆,我不求天长地久的美景,我只要生生世世的轮 回里有你。
45、自己的饭量自己知道。——苏联
41、学问是异常珍贵的东西,从任何源泉吸 收都不可耻。——阿卜·日·法拉兹
42、只有在人群中间,才能认识自 己。——德国
43、重复别人所说的话,只需要教育; 而要挑战别人所说的话,则需要头脑。—— 玛丽·佩蒂博恩·普尔
44、卓越的人一大优点是:在不利与艰 难的遭遇里百折不饶。——贝多芬
TIN三角网的实现C++程序
/*程序名称:不规则三角网(TIN)的生成实例核心算法:三角形生长算法单位:南京大学金陵学院城市与资源学系日期:2009年11月9日至14日编程语言:Borland C可执行语句行数:373行*/#include<stdio.h>#include<conio.h>#include<math.h>#include<alloc.h>#include<graphics.h>struct Ps /*数据点的存储结构*/{int ID;float X;float Y;};struct Ts /*生成三角形的存储结构*/{int IB1;int IB2;int IB3;};void Open(char *fnm) /*打开源数据文件的函数*/{clrscr();textcolor(11);cprintf("TIN Create Demo");gotoxy(1,2);cprintf("Nov 2009");gotoxy(1,3);cprintf("Nanjing University Jinling College");printf("\n\nEnter the source data filename:\n\n>");scanf("%s",fnm); /*输入文件名*/while(fopen(fnm,"r")==NULL) /*若打开文件不成功则出现提示并重新输入*/{printf("Can't open this file.\n\n>");scanf("%s",fnm);}}int Size(char *fnm,int *ptr_N) /*读取文件头并检测数据量的函数*/{FILE *fp;int i=0,j=0,k=0;char c,t[5];fp=fopen(fnm,"r");c=fgetc(fp);while(c!='=') /*文件头为点的个数,格式为“N=200”等,故文件指针移动到‘=’时开始读取数据。
DELAUNAY三角网算法
同该基边两端点距离和最小的点,以该点为顶点, 以该基边为边,向外扩展一个三角形(仅满足空 椭圆特性)并放入三角形链表。 3、按照上述第2步,对控制边链表所有的线段进 行循环,分别向外扩展。
7
4、依次将新形成的三角形的边作为基边,形成新 的控制边链表,按照上述第2步,对控制边链表所 有的线段进行循环,再次向外扩展,直到所有三 角形不能再向外扩展为止。
8
1
二、Delaunay(德洛内)三角网
1、定义:一系列相连但不重叠的三角形的集合,而且 这些三角形的外接圆不包含这个面域的其他人任何点。
2、性质:(1)、每个Delaunay三角形的外接圆不包 含面内其他任何点,即Delaunay三角网的空外接圆 性质。这是创建Delaunay三角网的一项判别标准。 (2)、在由点集V中所能形成的三角网中, Delaunay三角网中三角形的最小角度是最大的。
Voronoi三角形是Delaunay图的偶图 。
4
四、算法 1、分割归并法 2、逐点插入算法 3、三角网增长法
逐点插入法:
1、遍历所有散点,求出点集的包容盒,得到作为点 集凸壳的初始三角形并放入三角形链表。
2、将点集中的散点依次插入,在三角形链表中找出 其外接圆包含插入点的三角形(称为该点的影响三角 形),删除影响三角形的公共边,将插入点同影响三 角形的全部顶点连接起来,从而完成一个点在 Delaunay三角形链表中的插入。
2
3、优点:结构良好,数据 结构简单,数据冗余度 小,存储效率高,可适 应各种分布密度的数据。
p1
p4
p2 p3
p6
p5
3
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
TIN三角网存储与显示
21513129 贺佳伟
程序设计与实现的基本思路:采用面向对象的思想,自定义算法实现过程中需要的点、边、面类。
程序中定义的变量
protected:
inti;
POINT P[10];//点集
public:
bool f;//返回true/false实现鼠标输入散点代码如下
CMy21513129View::CMy21513129View()
{
// TODO: add construction code here
f=false;//f初值设为假
}
if(f)
{
CClientDCdc(this);
CPen pen;//创建画笔
pen.CreatePen(PS_SOLID,6,RGB(255,0,0)); //定义画笔属性CPen*pOldpen=dc.SelectObject(&pen); //把点画大
dc.Ellipse(point.x,point.y,point.x+3,point.y+3);
P1.push_back(point);
}
定义容器
/////////////////////容器///////////////////
vector<CPoint> P1;//点
vector<Line> L2;//线
vector<Polygon> P3;//面
线数据存储结构体
struct Line //直线结构体
{
CPoint p1;
CPoint p2;
};
面数据存储结构体
struct Polygon //多边形结构体,这里选用三角形{
CPoint p1; //CPoint是一个坐标类
CPoint p2;
CPoint p3;
};
散点生成
本次实验通过三种方式实现散点的读入,分别是随机生成、鼠标输入、文本读入(txt文档)。
1.随机生成
随机生成x 个点模拟一般建立TIN的点文件,将这x个点放入全局变量点数组中。
x可以通过修改宏定义#define PNUMBER 10,从而定义不同个数的随机点。
TIN生成后,可以在MFC窗口自动绘图显示。
2.鼠标输入
通过鼠标取点读入点数据,并存储到vector<CPoint> P1中。
3.文本读入(txt文档)
利用事先设置好测试数据文档读入散点,并存储到vector<CPoint> P1中。
程序中用到的自定义函数
void CMy21513129View::displaynumf();//左下角显示三角形个数void CMy21513129View::displaynump();//左下角显示点个数boolIsPointsBuildTriangle(int p1, int p2, int p3);//判断该三角形是否存在
boolIsPointInCircle(intt,int r1,int r2,int r3);////判断序列号为t的点是否在该三角形外接圆内
void CMy21513129View::Triangle(CPoint p1, CPoint p2, CPoint p3)//绘制三角形
bool CMy21513129View::IsLine(CPoint p1, CPoint p2) //判断是否存在此线段
bool CMy21513129View::IsT(CPoint p1, CPoint p2,CPoint p3)//判断容器中是否已经存在此三角形
程序中的事件处理程序
void CMy21513129View::OnMouseMove(UINT nFlags, CPoint point)//读取鼠标所在位置点的坐标
void CMy21513129View::OnGeneratePoints()//随机生成点
void CMy21513129View::OnMouse()//鼠标读点
void CMy21513129View::OnLButtonDown(UINT nFlags, CPoint point)//鼠标响应
void CMy21513129View::OnTin()//Tin实现
void CMy21513129View::OnPoint()//生成点注记
void CMy21513129View::OnLine()//生成线注记
void CMy21513129View::OnSurface()//生成面注记
void CMy21513129View::OnQCsj()//清屏并清除存处数据
void CMy21513129View::OnSaveV()//保存点坐标
void CMy21513129View::OnSaveE() //保存边关系
void CMy21513129View::OnSaveF() //保存面关系
void CMy21513129View::OnText()//文本读入
void CMy21513129View::OnMtpgx()//面拓扑关系
void CMy21513129View::OnXtpgx()//线拓扑关系
程序中使用的算法
由离散样本点生成Delaunay三角网有多种算法,每个算法的执行效率都不一样,本次程序采用一种最简单,最低效,但是算法逻辑最清晰的一种。
Delaunay三角网必须满足的一个条件是任何一个三角形的外接圆都不能包含其他任何一个样本点,具体步骤如下:
●枚举所有可能的三角形
●判断其外接圆是否不包含任何其他样本点的,如果满足,则记录
该三角形,直到所有三角形枚举完毕。
输出文件的存储结构
点产生后,可输出点文件。
TIN三角网绘出后,可输出边文件和面文件。
文件均以txt格式存储。
点文件有三列,第一列为编号,第二列为x坐标,第三列为y坐标。
边文件有三列,第一列为编号,第二到第三列为该边的两个端点
的编号。
面文件有四列,第一列为编号,第二到第四列为三角形三个顶点的编号。
菜单设计
状态栏显示鼠标坐标位置
本次在程序中实现在状态栏显示鼠标坐标位置具体实现步骤如下:1. 打开ResourceView,右击Menu菜单,插入Menu,在空白处双击,Caption中填入Point。
为Point设置下拉菜单,ID为ID_INDICATOR_POINT;Caption为point;Prompt为X:XXXX,Y:YYYY。
2.打开MainFrm.cpp,在indicators数组中的第二个位置添加ID_INDICATOR_POINT。
3.将MainFrm中的成员变量m_wndStatusBar修改为公有变量,并在视图类中添加头文件#include "MainFrm.h"。
4.利用类向导添加鼠标移动消息处理函数WM_MOUSEMOVE(),代码可
以在源程序中查到:
程序实现过程中改进之处
1.经核查发现点存储缺乏第一个点已纠正。
2.本次程序采用一种最简单,最低效,但是算法逻辑最清晰的一种,但是由于要比较所有可能三角形,所以消耗的时间较长,数据量较大时,不宜使用(亲测1000个点耗时5min以上)。
具体步骤如下:
枚举所有可能的三角形。
判断其外接圆是否不包含任何其他样本点的,如果满足,则记录该三角形,直到所有三角形枚举完毕。
3.实现在状态栏显示鼠标坐标位置、点个数和三角形个数。