《毕业论文-基于似三棱柱的三维水文地质体建模技术研究28743.docx》由会员分享,可在线阅读,更多相关《毕业论文-基于似三棱柱的三维水文地质体建模技术研究28743.docx(21页珍藏版)》请在三一文库上搜索。
1、基于似三棱柱体的三维水文地质体建模研究基于似三棱柱体的三维水文地质体建模技术研究目 录引言21孔隙地下水含水层系统概念模型31.1含水层的空间分布特点31.2承压含水层系统建模数据源31.3三维水文地质体模型特点32水文地质钻孔模型构建方法42.1钻孔数据结构设计42.2 水文地质钻孔建模方法43分层界面三角网(TIN)73.1三角网模型数据结构73.2三角形生成算法74基于三角形区域的线性插值94.1加密点生成算法94.2线性插值算法105基于矩形区域的双三次样条插值函数构造125.1双三次B样条函数插值函数求解方法125.2二次加密点的生成136 基于似三棱柱体的三维地质体模型构建方法14
2、7结论与展望17摘要:以盐城市水文地质钻孔实际检测含水层数据为基础,研究了盐城地区孔隙地下水承压含水层系统三维地质模型的构建的一般技术路线,并在VC+环境下使用计算机可视化技术(VTK)设计实现了地质体建模系统原型的开发。首先设计钻孔数据模型,根据水文地质钻孔标准化卡片绘制水文地质钻孔模型,使用逐点插入法构建初始三角网,以此为基础,建立各含水层分层界面的初始DEM;之后再根据三角形区域的线性插值算法实现对初始DEM的加密,为了满足二元插值函数的计算要求,本文设计了一种生成各分层界面计算节点规则矩形格网的算法;最后利用该加密后的计算节点矩形格网,使用二元双三次B样条函数进行二次加密,构建具有最优
3、模拟效果的基于似三棱柱的三维含水层模型。关键字:水文地质钻孔;孔隙地下水;逐点插入法;线性插值;三维地质体建模;引言三维水文地质建模,往往是为了后续开展孔隙地下水流场数值模拟与可视化工作服务的。只有在一个准确、合理的水文地质体模型的基础上,才能使地下水的数值模拟误差控制在有效的范围以内;另外由于地质体模型的构建所使用到的初始采样数据一般比较稀疏,根据原始采样数据建立起的地层模型模拟效果较差。因此如何能够根据实际探测到的地层采样数据,通过不同的插值算法,构建起精度满足要求、模拟效果较好的最佳地质体模型,便成为了首先要考虑定的问题。一般说来,如果研究区域的采样点数据是以矩形点阵排列的,可以通过采用
4、基于矩形区域代数插值函数、矩形区域的样条插值函数、矩形区域的最小二乘插值函数等对地质体表面进行逼近。但在实际问题中,采样点往往并不能够以矩形点阵的形式排列,此时,可以采用基于三角形区域的插值、康斯曲面以及移动曲面拟合法等插值算法对地质体表面进行加密。由于三维模型表面常常采用三角网来表示,因此本文选择基于三角形区域的线性插值函数作为地质体表面的逼近算法。然而基于三角形区域的线性插值实际上是以平面去逼近曲面。虽然在整个区域上可以保证“连续”,但是在连接处却是不光滑的,即一阶导数不相等。因此需要使用样条函数对地层表面模型进行平滑。在三角形插值的基础上构建规则矩形格网,之后在此矩形格网上使用二元样条函
5、数进一步内插,最终形成整个区域上光滑、连续的地质体表面模型。在加密后的地质体表面模型基础上,构建不同含水层界面的TIN模型。针对水文地质钻孔数据特点,考虑到含水层存在缺失的情况,设计可以识别不同含水层情况的三维地质体建模算法。水文地质体建模所采用的空间数据通常有似三棱柱、四面体、六面体等数据模型。由于水文地质钻孔被可近似表示为垂直的,且含水层分层界面DEM采用的是不规则三角形格网(TIN)结构;又由于地层中经常出现缺失的情况,直三棱柱往往会退化为四面体或者四棱锥。而直三棱柱、四面体或者是四棱锥,都可以统一采用似三棱柱的数据模型加以表示。似三棱柱可以精确模拟承压含水层对象的表面与内部结构,灵活性
6、较强、生成算法较为简单。因此对于水文地质体的三维建模而言,似三棱柱是具有较高的实用价值和应用前景的一种空间数据模型。1孔隙地下水含水层系统概念模型1.1含水层的空间分布特点孔隙地下水含水层在空间上分布相对均匀,连续性较好。从上至下依次可划分为潜水含水层、第一承压含水层、第二承压含水层、第三承压含水层、第四承压含水层。不同的含水层之间一般由透水性很弱的隔水层加以间隔。地下水赋存于岩层的孔隙中,其分布范围与含水层的分布范围是基本一致的。1.2承压含水层系统建模数据源由于孔隙地下水系统埋于地下,只有通过水文地质钻探与地球物理勘探的手段揭示含水层与隔水层的空间分布特征。其中水文地质钻探获取到的水文地质
7、钻孔数据是描述孔隙地下水系统水文地质结构的基础的数据,也是孔隙地下水系统三维水文地质体模型构建的主要数据源。水文地质钻孔数据中,描述水文地质结构的数据有:钻孔地面高程、含水层的顶底板高程、隔水层的顶底板高程、含水层与隔水层的厚度、含水层与隔水划分数据、含水层岩性数据等。1.3三维水文地质体模型特点水文地质钻孔数据的精度是由一定区域范围的水文地质勘查精度决定,在空间上呈离散分布,对于那些勘察盲区的水文地质结构只有通过水文地质专家根据第四系地层的沉积规律与自身的经验推断获取。另外,由水文地质钻探获到的反映水文地质结构的数据是一成不变的,仅反映勘探时刻的含水层与隔水层的空间分布情况,不能动态描述含水
8、层与隔水层随着地下水位下降其空间结构也发生变化的特点。因此水文地质钻孔数据具有时间性的特点,构建的三维水文地质模型是一个静态模型,反映了某一水文地质钻探时间的隔水层与含水层的空间分布情况。2水文地质钻孔模型构建方法水文地质钻孔模型可近似视作为具有一定直径和高度的分段圆柱体。不同的分段代表不同的含水层,不同的含水层种类,应以不同的颜色加以区别。由于钻孔模型是规则的几何体,因此可以采用规则格网数据模型来表示水文地质钻孔。规则格网数据模型,即结构化网格数据模型,内部是由具有规则拓扑结构的单元组成,而其外部的几何形状则是不规则的。它本质上可以看作是一系列等间距规则分布的点集,按照指定的结构(规则)分布
9、形成的三维网格数据。2.1钻孔数据结构设计设计的水文地质钻孔数据结构中应包含钻孔的位置信息、含水层信息,以及钻孔编号信息。水文地质钻孔数据结构Class CBoreInt id; /钻孔编号 double3 positionCoord; /钻井坐标float height; /钻孔深度int layerNumber; / 包含含水层层数vectorhydroCategory; /包含含水层的种类vectorhydroDepth; /包含的各含水层的层底深度;2.2 水文地质钻孔建模方法为了区分出不同含水层之间的隔水层,将潜水含水层和第一承压含水层之间的隔水层记为第一隔水层,依此往下分别记作第二
10、隔水层、第三隔水层、第四隔水层和第五隔水层。这样一来,含水层从上往下正常的顺序应为:潜水含水层、第一隔水层、第一承压含水层、第二隔水层、第二承压含水层、第三隔水层、第三承压含水层、第四隔水层、第四承压含水层、第五隔水层。为了便于管理,自上往下依次编号为0、1、2、3、4、5、6、7、8、9。含水层与编号的对应关系如表2.1所示。表2.1 含水层编号含水层编号含水层名称0潜水含水层1第一隔水层2第一承压含水层3第二隔水层4第二承压含水层5第三隔水层6第三承压含水层7第四隔水层8第四承压含水层9第五隔水层每一个水文地质钻孔是由一系列的分段圆柱拟合而成的,每一个分段圆柱对应于一种含水层介质。上一层的
11、圆柱底面,对应于下一层的圆柱底面。生成时首先需要确定钻孔的分段数,也即包含的含水层层数k,之后指定圆柱体的圆周拟合数i,该拟合数决定了圆柱体圆周的圆滑程度。确定了这两个参数之后,依据如下算法,即可绘制出三维水文地质钻孔:(1)从数据库中读取钻孔位置信息和含水层信息,创建一个钻孔对象CBore aBore。(2)对于每一个钻孔对象,分段数k = aBore.layerNumber;圆周拟合数i需要手动指定,可以设置为10;另外还需要指定圆周半径rMax 和rMin。此处应令rMin = 0 deltaRad = (rMax - rMin)/(2- 1);(3)对于每一个圆柱分段ki,获取层底圆周
12、面中心点位置坐标,(x0,y0,z0 aBore. hydroDepth ki);(4)根据层底圆周面中心位置坐标,计算圆周拟合点坐标:for(int j=0 ; j 2 ; i+) radius = rMin + j * deltaRad; /计算圆周半径jIndex = j * dim0; /计算点的索引for(int i = 0 ; i RadiansFromDegrees(i *angel );x0 = radius * cos(theta) + x0;x1 = radius *sin(theta) + y0;Index = i + kIndex + jIndex;points-Ins
13、ertPoint(Index ,x);(5)将每一层对应的的含水层编号赋给分段圆柱,最终形成VTK可识别的规则格网数据文件。导入到VTK可视化管线中显示。如图2.1所示。图中为了较为清楚地展示模型的属性与特征,在z方向上做了拉伸处理。图2.1 三维水文地质钻孔建模3分层界面三角网(TIN)3.1三角网模型数据结构三角网由一系列的三角形单元组成,每一个三角形由可拆解为三个有向边。每个有向边又是有起点和终点两个端点确定的。基于此拓扑关系,设计数据结构如下:(1) 点数据结构Class CPoint Int id /点索引号 float x y z; /点的位置坐标 int layerCategor
14、y; /所属含水层种类 int zkBelong; /点所属钻孔的编号;(2) 有向边数据结构Class Cline Int id /有限变索引号 long p0; /边起始点索引 long p1; /边终点索引 int useCount; /边被使用次数(3) 三角形单元数据结构Class CTriangle int id; /三角形索引号 long L0; /第一边索引long L1; /第二边索引long L2; /第三边索引TIN三角网,即将三角形数据CTriangle对象依次排列并编号形成的动态数组对象。3.2三角形生成算法含水层分层界面可以采用TIN方法来进行建模。TIN方法利用所
15、有的采样点离散数据,按照优化组合的原则,把这些离散点连接成相互临街但不相交的三角形单元。对于TIN模型来说,Delaunay三角网在地形拟合方面表现得最为出色。由Delaunay三角形构成额TIN三角网可写作D-TIN。D-TIN的生成算法很多,包括分治算法、三角网生长法、逐点插入法等。本文采用三角网生长法生成水文地质体含水层分层界面三角网。建模时各分层界面上的离散点,实际上为钻孔的原始采样点、与各地层的交点以及内插点。根据钻孔数据获取到每一层面所包含的离散点集合。采用三角网生长算法得地层界面三角网。本文三角形生长算法设计实现过程如下:(1)在同一层的离散点中任取一点p0,选择离它最近的一点p
16、1连接成有向边L0,作为基准边。(2)遍历剩下的所有点,搜寻与基边两端点连线组成夹角最大的点。组成第一个三角形。将第一个三角形推入TIN三角网数组。三角形三边的可拓展属性均初始化为1。该属性值为1表示该边只为一个三角形的边,如果为2,则表示为两个三角形的公共边。一个边最多被两个三角形共享,因此,该属性值只可能为1或者2。(3)对于三角网数组中的三角形k,遍历其每一个边。对于每一个有向边,首先判断是否属于可扩展边,即其扩展属性是否为1。如果可扩展,将与该边共三角形而不共边的那个点作为基准点。(4)遍历剩余所有离散点,如果与基准点在该有向边异侧,则求取其与该有向边两端点连线夹角。找到该夹角最大的离
17、散点,形成新的三角形,并将该三角形推入数组。(5)每一个三角形三边依照(3)(4)两步扩展完毕后,三将网数组当前三角网索引k自增1。重复步骤(3)(5)。当k的值与三角网数组中包含三角形个数相同时,退出循环。此时所有的点都已经纳入到三角网中。三角网生成完毕。TIN的拓扑结构是:三角网中包含的其实是每一个三角形的索引,每个三角形包含了三个有向边的索引,有向边包含了两个离散点的索引。离散点作为基础的几何数据,包含了每个点的位置和属性数据。最终生成的三角网效果如图3.1所示:图3.1 分层界面的Delaunay三角网生成4基于三角形区域的线性插值由于每一层的离散点个数较少且分布不均匀。无法满足孔隙地
18、下水流模型数值模拟计算的要求,而且生成出来的地质体较为突兀,模拟效果较差。因此就需要对整个研究区域做插值处理。由于本文的侧重点在于地质体模型的建立以及美化,因此可以将加密点按照规则格网的形式加以排列,以便于平滑。为了方便后续要进行的地下水流模型数值计算过程中,在根据规则格网的点进一步做内插加密操作时,应将代表地下水位监测井和开采井的离散点纳入加密点集合中。由于已经建立起了初始三角网,且根据初始离散点的分布特征,所以采用基于三角形区域的线性插值方法。这一步骤,是为了得到规则的含水层分层界面DEM规则格网。4.1加密点生成算法在对三角网做插值操作之前,首先需要生成定义规则格网的一系列格网点。格网点
19、的生成原则应遵循如下两点:(1) 考虑到研究区域范围,点与点的间距定为10公里,即10000米。(2) 离散点应呈规则分布,取平面坐标位于三角形内部的离散点做内插。可以选取一个水位地质钻孔离散点作为起始点,采取延展法向四个方向扩充加密点。算法如下:(1) 以基准点(X0,Y0,Z0)为起点,X坐标增加10000米,Y坐标不变,创建新的点对象(X, Y,0);(2) 遍历三角网中每一个初始三角形,寻找包含该点对象的三角形单元;(3) 搜寻结果不为空,则将该点推入格网点数组,线性插值出该点的Z值,更新点坐标为(X,Y,Z);(4) X增加10000米,Y不变,重复(2)(3)两步。(5) 如果搜寻
20、结果为空,则X = X0,Y坐标增加10000米。创建新的点对象(X, Y,0);(6) 同样方式,遍历初始三角形数组,寻找包含该点对象的三角形单元;(7) 搜寻结果不为空。则将点(X, Y, 0)推入各网点数组,线性插值获取z值,更新点坐标为(X , Y ,Z);(8) Y增加10000米,X不变。重复(5)(6),直到搜寻结果为空,表明基准点东北方所有各网点生成完毕,令X = X0 10000;Y = Y0,开始生成第二个方向上的所有离散各网点(9) 依此生成基准点东南、西北、西南方向以及东南西北方向线上的所有离散格网点。并经过线性插值操作,最终计算出加密后的含水层分层界面DEM。如图4.
21、1所示图4.1 规则格网离散点的生成4.2线性插值算法基于三角形区域的线性插值算法如下:设有三角形区域如图4.2所示。其顶点记为Ai =(xi , yi );三个顶点对应的值记为u( xi , yi );图4.2 三角形单元示意图则线性插值函数可写为:Ux,y=i=13ujj(x,y) 其中 1x,y= x- x2x3-x2-y- y2y3-y2x1- x2x3-x2-y1- y2y3-y22x,y= x- x3x1-x3-y- y3y1-y3x2- x2x1-x3-y2- y2y1-y33x,y= x- x1x2-x1-y- y1y2-y1x3- x1x2-x1-y3- y1y2-y1U(x
22、,y)在空间表示一个平面方程。使用平面来逼近曲面。该方法又称为“板法”。由于在整个区域上,相邻三角形公共边对应有两个公共节点,两点决定一条直线,而这个直线即为相邻平面的交线。因此该方法可以保证相邻单元在连接处连续。但是无法保证平滑。因此如果想要得到模拟效果较为光滑的水文地质体模型,就需要在线性内插得到所有规则格网点的基础上,利用样条函数,进行第二次内插。最终插值效果如图4.2所示:图4.2 初始加密格网点的生成5基于矩形区域的双三次样条插值函数构造5.1双三次B样条函数插值函数求解方法插值的方法主要可以分为全局插值、分块插值以及移动曲面拟合法两类。由于格网DEM差值单元为规则矩形区域,所以可以
23、使用基于矩形区域的代数插值或者分片插值来获得全局函数。但是由于此处格网数目较多,逼近多项式会出现高次项而引起龙格(Rung)现象,导致函数值出现震荡;而利用分片矩形的小区域代数插值逼近,即分片插值又使得整体区域虽然可以消除龙格现象,且有较好的连续性,但光滑性较差。一种较好的解决办法就是使用基于矩形区域的样条函数。由于三次样条函数具有次数低、二阶导数连续,连接处较为光滑等优点,本文通过构造二元双三次B样条函数作为规则格网矩形区域上的插值函数。基于DEM的样条函数插值问题,可等价为如下问题:即对于给定的N + 1个规则分布的离散格网点,(xi,yj),i=n,jn,固定yt,则有Uxs,yt=i=
24、0nj=0mCij3xs-xihx3yt-yjhy=i=0nij3x-xihx取t = 0,1,2m,对于每一个yt,都可写出一个包含n+1个方程的方程组,最终求解得到ij第二步:记ix= 3x-xihx(y)=3y-yjhx=0x01x00x11x1nx0nx10xn1xnnxn=0x01x00x11x1nx0nx10xn1xnnxn第三步:求解:lt=(ux0,yt,ux1,yt,uxn,yt)Tgs=(uxs,y0,uxs,y1,uxs,ym)Tpx=(0x,1x,nx)Tqy=(0x,1x,nx)Tt=(0t,1t,nt)TCs=(Cs0,Cs1,Csm)Trx=(r0x,r1x,rm
25、x)T第四步:建立方程组t= lt解出Cij的值,从而确定差值曲面U(x,y),求解完毕。根据该插值函数。计算各二次加密点的值。5.2二次加密点的生成对于规则格网点额进一步与加密,即“二次加密”,应尽可能均匀全面地分布在整个区域中。除了要求要有足够的密度以保证三维地质模型的光滑性外,还应考虑到后续工作中地下水流场模型的验证与校核工作,因此二次加密点应遵循如下原则生成:(1) 首先应包含地下水水位监测井采样数据、地下水开采井采样数据。(2) 应对格网进行适当加密,在每个格网内部,延X和Y方向均匀地划分二级加密点。最终形成经过二次加密后的离散采样点集合。对每一层含水层分界面重复上述插值操作,记录每
26、个采样点所属的分层界面,最终得到所有分层界面离散采样点的集合,通过调用三角网生成算法,重新生成各含水层分界面TIN三角网。该三角网即为平滑连续的分层界面模型。6 基于似三棱柱体的三维地质体模型构建方法似三棱柱体建模是以已经生成好的各层TIN三角网为基础,在相邻的分层面之间构建一系列的似三棱柱单元。由于本文将钻孔数据近似成为了竖直的圆柱体,因此似三棱柱的形态仅包括如图6.1所示的三种类型。 、图6.1 基于竖直钻孔的似三棱柱的三种类型对于上图中的几种类型三棱柱,为了统一数据结构,均视作由六个顶点p0,p1,p2,p3,p4,p5组成的数据结构。其中p0,p1,p2构成下三角形,p3,p4,p5构
27、成上三角形。三角形顶点排列方向应一致。本文均已顺时针排列。如图6.2所示。图6.2 似三棱柱单元组成结构为了便于绘制,首先设计似三棱柱单元数据结构:Class CPrism Int id /三棱柱索引号 int p0,p1,p2; /上三角形顶点索引int p3,p4,p5; /下三角形顶点索引int category; /三棱柱所属含水层编码每一个含水层,即是由一系列这样的三棱柱对象组成。一个含水层对象,可以用一个以三棱柱对象为元素的动态数组对象来表示。似三棱柱的生成过程,是把每个三角形的三个顶点所属分层界面种类进行比较,并按照一定的规则向下扩展而形成的。地层编码已经设计成为了自上往下顺序排
28、列。建模的主要过程如下:(1) 由于不同层加密离散点在平面位置上是相同的,因此可以根据每一层具有相同平面位置属性的加密点序列,生成一个具有钻孔数据结构CBore的虚拟钻孔。经过该步骤操作之后,整个区域密集均匀分布着很多虚拟钻孔。(2) 生成第li(i=0)层含水层:获取第一层地层分界面三角网,对于每一个小三角形单元,向下寻找地层层底深度。寻找算法如下a) 设置当前搜寻地层编码int p,如果p aBore.hydroCategory.size()。表示搜寻的地层编码已经超出该虚拟钻孔所包含的的地层数,那么此时只需将地层层底深度设置为顶层深度 减去aBore.hyDrodepth数组中的最后一个
29、元素即可;b) 如果p aBore.hyDroCategoryp , 那么将钻孔地层深度数组中最后一个层底深度作为该含水层层底深度。d) 如果li aBore.hyDroCategoryp;层底深度z = 层顶深度 - aBore.hyDroDepthp - 1;e) 如果li = aBore.hyDroCategoryp;z = 层顶深度 - aBore.hyDroDepthp ;p+;(3) 重复(2)的a) b)过程,建立起每一个含水层不同三棱柱所对应的顶底板离散点索引;(4) 根据建立好的索引,对于每一个含水层的每一个三角形单元,依次创建对应的似三棱柱单元对象。创建完毕后推入含水层三棱
30、柱动态数组中。(5) 重复(4),建立起所有的含水层的三棱柱序列,形成数据文件,导入到VTK可视化管线中渲染显示。如图6.3、6.4所示。图6.3 水文地质体线框模型图6. 4 水文地质体实体模型7结论与展望基于似三棱柱的三维地质体建模近年来发展较为成熟。实践证明似三棱柱在实际建模中可以满足大多数的建模要求。本文已有研究成果的基础上,提出了一种构建具有较优的平滑性和模拟效果的三维水文地质体模型的技术路线。即:根据原始水文地质钻孔采样数据,首先根据三角网生成算法计算出初始三角网经过线性插值运算、B样条函数插值运算两次插值,对原始不均匀分布较为稀疏的钻孔点,进行“二次加密”,最终形成较为密集且分布
31、均匀的加密钻孔;之后在该加密后的钻孔采样点的基础上,提出了一种基于不同含水层的三棱柱扩展算法,并根据该算法开发了三维水文地质体建模原型系统。结果证明,用双三次等距B样条函数来加密格网点数据,获得的二阶平滑的曲面,可以满足模拟效果与精度的要求,是一种可行的模型构建算法。本文提出的基于不同含水层的似三棱柱扩展生成算法,得到了较为理想的效果。本文的研究成果,主要是针对孔隙地下水流场模拟进行的。因此接下来要面对的问题就是:如何将以构建好的三维水文地质体模型与三维孔隙地下水流模型(又称“地下水有限元模型”)结合,并结合土层压缩模型最终构建出三维水文地质体与地下水三维流场有机耦合的动态模型。主要解决的问题包括:水流场模型计算参数的提取,地下水有限元模型参数的率定、参数分区的划分、参数赋值、水流场可视化等。由于水文地质图很少存在地层相交的情况,因此本文没有考虑到特殊地层相交的情况,而在工程地质模型构建中,这一情况确实普遍存在的。另外,对于含水层尖灭的分类与处理方面,并没有提出一个较为可行与普适的技术路线,对于整体的模拟效果有一定的影响。19