复杂空间曲面的拟合方法
技术领域
本发明涉及一种复杂空间曲面的拟合方法。
背景技术
地质勘探研究中,由于地下的地质构造极其复杂,需要处理的数据量非常巨大,加之数据分布又很不平衡,采用科学计算可视化的方法,将科学计算过程中产生的数据及计算结果转换为图形或图像在屏幕上显示出来并进行交互处理,为专业研究者提供直观有效的地质信息,为进一步的地质勘探研究奠定基础。因此,科学计算可视化在地质勘探领域的应用具有重要的意义。
空间曲面根据其连续性可分为两部分;连续曲面(不含断层)和非连续曲面(含断层)。后者根据其包含的断层类型,又可以分为两种:含正断层的空间曲面和含逆断层的空间曲面。
本发明所述的复杂曲面,是指含有逆断层的非连续空间曲面,包括含有多重逆断层和正逆断层投影重叠的非连续空间曲面。
在地质勘探的科学可视化研究中,涉及大量的复杂空间曲面的拟合,而其中很重要的一步就是对空间曲面的网格化处理。网格化主要做法是由原始数据确定构建网格的边界,在每一个网格点周围搜索若干靠近的离散点,用以逐一内插网格点高程,建立一个网格数字高程模型(Digital Elevation Model,简称DEM)。利用得到的网格DEM即可拟合出空间曲面。
到目前为止,连续曲面网格化的理论和技术已经比较成熟,软件实现也趋于成熟。连续曲面网格化通常采用的算法包括规则矩形网格化法和不规则三角形网格化法。前者具有外推性好的特点,但是有些原有数据会丢失精度且实现程序较复杂。后者具有不丢失原始数据且实现简单的特点,但外推性较差。相对于连续曲面网格化而言,非连续曲面网格化技术发展则比较缓慢。究其根本原因在于非连续曲面的复杂性。复杂空间曲面在平面的投影存在交叠甚至多重交叠,难以仅利用平面投影信息还原复杂曲面,因此,需要充分利用三维空间的信息对复杂曲面进行空间网格化。
综上所述,探索一种复杂曲面的空间网格化算法,解决含有断层特别是逆断层的空间曲面拟合问题,具有广泛的理论价值和实践意义。
在非连续曲面的网格化的研究中,目前主要采用的解决方法是对断层采用专门的处理技术,常用的处理方法有:分块法、断层面法、层位复原法、断层轨迹法。
分块法是根据断层轨迹,把研究区域划分成若干个断块,每个断块的边是由断层轨迹和切割线(可以看作是落差为零的断层的轨迹)所组成。根据假设,变量在每个断块上是连续的,因此可以用普通的克金插值技术分别对每个断块进行网格化处理。由于这些断块互不重叠,将每个断块上的网格数据合在一起便是整个研究区域的网格数据体。该法的优点是简单,实用。当每一块区域内数据点足够多时,即使有很复杂的断层也可以得到比较合理的网格数据体。但该法的缺点是当断层复杂时,并且有些断块上数据点不足时,该法无能为力,而且该方法在断层轨迹线端点附近会产生插值跳跃,需要特殊处理。
断层面法的基本思想是分别建立断面和断块的网格数据体,然后把这些网格数据用专门手段结合起来得到一个统一的数据体。这种方法只适用于倾斜断层,而且要求有足够的测量数据可用于建立断层网格。尽管看起来这一方法可以处理任意条断层,实际上却是不可能的。它受限于这样几个因素:(1)必须要有足够的测量数据用于建立断面网格;(2)当断层在绘图区内消退时,必须进行专门处理;(3)每个断块上必须有足够的测量数据用于建立该部分的网面网格。
层位复原法是利用断层的位置、落差和层面受到断层影响的部分建立一个反映垂直位移的网格。用内插法把层面复原到产生断层前的形状。最后把复原层面的网格数据和垂直位移的网格数据叠加起来即得到真正的网格数据体。层面复原法需要断层的位置信息和垂直位移的信息。它只能处理垂直断层,通常用一条沿着断层缝隙的中间走的线来表示断层轨迹,即断层的位置。
断层轨迹法是通过采用直接或间接的近似手段描述断层对数据相关性的影响,从而可把整个绘图区作为一个整体进行插值。断层轨迹法处理数据如同常规的网格化算法一样。但该方法同样需要有关断层位置的信息,以便确定用哪些数据来计算网格结点值或改变某些数据的常规加权系数。有时还需知道断层三要素数据:断距、走向和倾角。断层轨迹法的主要特点在于把网格化过程中最复杂的一部分工作交由程序完成,使用户操作简单化。
地质构造的复杂性决定了非连续曲面中断层分布和构造的复杂程度,在实际的地质数据中,复杂空间曲面在平面的同一投影区域含有多重逆断层(如图1)或是同一投影区域正逆断层投影相互交叠(如图2)的情况常有发生。上述几种方法均是在二维平面上解决上判断断层分割情况,难以解决多重投影重叠的问题,因而无法实现含有任意复杂断层情况下的曲面拟合。
一般情况下,空间曲面的原始采样数据是一系列分布不均匀的离散点,传统的网格化方法都是在二维平面上判断断层分割情况,当非连续曲面存在逆断层时,曲面在平面的投影有重叠部分,这些离散点在平面的投影坐标存在多个高程值;当非连续曲面存在正断层时,曲面在平面的投影存在空白区域,空白区域没有离散点的投影。因此传统的网格化算法对含有正断层和逆断层的复杂曲面进行处理时实现方法比较复杂,并且无法对存在多重断层分割的曲面进行网格化。
网格化过程中,待插值网格点的插值结果依赖于附近测线上种子点的数据,是否正确选取种子点数据,决定了待插值网格点插值的结果的准确性。当存在断层时,传统的网格化方法不能判断待插值点与种子点是否被断层穿越,可能选择的待插值网格点与种子点被断层分割,造成插值结果不正确。下面我们以被一重断层分割的空间曲面为例讨论断层对网格化的影响。
当存在正断层时,如图3中左图,B1是CDP1(CDP[7]是Common Depth Point的缩写,即共深度点)上的种子点,B2是CDP2上的种子点,D1、D2为待插值点,层位1被正断层分割。若待插值点D1选用种子点B2进行插值,所得到的结果显然会有较大的误差。当存在逆断层时,如图3中右图,B3是CDP3上的种子点,B4、B5是CDP4上的种子点,D3、D4为待插值点,层位2被逆断层分割。若待插值点D3选用种子点B5进行插值,所得到的结果也显然不正确。因此,传统的网格化插值方法在遇到有断层分割的情况下需要进行改进。
此外,由于实际的采样数据比较稀疏,充分的利用所有原始数据,对于保证插值的准确性有很重要的意义。从图3中可以看出,没有逆断层的情况下,同一CDP在同一层位上有且仅有一个Z值(即DEM中每个网格点的高程值),如图3左图中CDP1;存在逆断层的情况下,同一CDP在同一层位上有多个Z值,如图3右图中CDP4。对逆断层附近点进行插值时,例如对待插值点D3进行插值时,若能利用B4数据信息,显然插值结果会更准确。
由于断层对插值的准确性有显著的影响,由上述分析也可见,同一投影区域仅有一重断层时直接在平面上判断断层分割已经比较复杂,当同一投影区域多重断层时,其复杂程度更高,难以采用传统的网格化算法实现复杂空间曲面的拟合。
发明内容
为了克服现有技术的上述缺点,本发明提供了一种复杂空间曲面的拟合方法,在三维空间中有效地解决了复杂空间曲面投影交错的问题,实现了任意断层情况下的复杂空间曲面拟合。
本发明解决其技术问题所采用的技术方案是:一种复杂空间曲面的拟合方法,包括如下步骤:
(1)获取工区范围及原始数据;
(2)读取曲面数据,划分大小网格,完成曲面原始数据投影;
(3)读取断层数据,直接绘制断层线或投影断层数据,并拟合断层面;
(4)采用空间网格化插值算法对所有的待插值点进行插值:
设层位数据投影的种子点记为Bi,所有种子点放入集合Ui={B1,B2,...,Bn},1≤i≤n,n为原始的种子点个数;待插值点记为Dj,则所有待插值点的集合V={D1,D2,...,Dm},1≤j≤m,m为带插值点的个数;记完成插值的点为D′i,则所有已插值点集合Uk={D′1,D′2,...,D′m},0≤k≤m;
插值开始前,集合Ui中存放所有的原始种子点,集合Uk为空,k≥2,集合V中存放所有待插值点;
第一步,从集合Ui中取出一个种子点Bi,递归搜索临近点,判断种子点与临近点之间是否被断层分割:如果被分割,则该临近点不是待插值点;如果不被分割,则该临近点是待插值点,需要插值;
第二步,对需要插值的点,采用基于矩形网格多重剖分的快速搜索方法搜索与该点临近且不被断层分割的种子点,对该点进行插值;若找到的种子点数大于等于两个,用反比例加权法对Dj点的高程值进行估计;若找到的种子点数少于两个,直接将种子点的值赋于Dj;
第三步,验证插值是否正确,确保断层分割区域有多个不同高程值,且每两个值都是被断层分割的;
第四步,将插值后的点Dj标记为种子点,放入集合Uk,并且从集合V中删除Dj;
第五步,判断集合Ui是否为空,若集合Ui不为空,则跳至第一步;若集合Ui为空,再判断集合V是否为空,若集合V不为空,令Ui=Uk,依次进行第一步到第四步并将插值后的点放入集合Uk+1;若集合V为空,则插值完毕;
(5)拟合空间曲面。
所述种子点与临近点之间是否被断层分割的判断方法如下:
设B为种子点,D为待插值点,Z1、Z2分别为B、D上的层位高程值,F1、F2分别为B、D上的断层高程值;
①当B、D上都有断层点时,如果满足条件Z1≥F1且Z2≤F2,或者满足条件Z1≤F1且Z2≥F2,则B、D点被断层分割;
②当B上有断层点,D上没有断层点时,如果满足条件Z1≥F≥Z2,或者满足条件Z1≤F≤Z2,则B、D点被断层分割;
③当B上没有断层点,D上有断层点时,如果满足条件Z1≥F≥Z2,或者满足条件Z1≤F≤Z2,则B、D点被断层分割;
④其余情况下,B、D点不被断层分割。
与现有技术相比,本发明的积极效果是:通过将平面的断层投影拟合成空间中的断层面,利用断层信息作为约束条件对网格点进行插值,以消除断层对网格点插值的影响,解决了含有任意复杂断层(包括正断层和逆断层)的非连续曲面网格化问题,并通过矩形网格多重剖分的快速搜索算法实现快速网格化,可实现含有任意断层的复杂空间曲面拟合,该方法具有高效性。
附图说明
本发明将通过例子并参照附图的方式说明,其中:
图1是含有二重逆断层的复杂曲面示意图;
图2是含有正逆断层和逆断层的复杂曲面示意图;
图3是含有正断层和逆断层的层位示意图;
图4是本发明方法的实现流程图;
图5是相邻点被逆断层分隔的示意图;
图6是不同查找范围的算法时间效率的比较示意图;
图7是逆断层大小对插值效率的影响示意图。
具体实施方式
复杂曲面的空间网格化算法的核心思想是将二维数据三维化,利用三维空间中更为丰富的数据信息来判断各种断层存在情况下对网格点插值的影响,以保证插值的合理性和准确性。
如图4所示,本发明方法包括如下步骤:
(1)获取工区范围及原始数据;
(2)读取曲面数据,划分大小网格,完成曲面原始数据投影;
(3)读取断层数据,直接绘制断层线或投影断层数据,并拟合断层面;
(4)采用空间网格化插值算法对所有的待插值点进行插值;
(5)拟合空间曲面。
上述步骤(4)中采用如下空间网格化插值算法:
层位数据投影的种子点记为Bi,所有种子点放入集合Ui={B1,B2,...,Bn},1≤i≤n,n为原始的种子点个数;待插值点记为Dj,则所有待插值点的集合V={D1,D2,...,Dm},1≤j≤m,m为带插值点的个数;记完成插值的点为D′i,则所有已插值点集合Uk={D′1,D′2,...,D′m},0≤k≤m。
插值开始前,集合Ui中存放所有的原始种子点,集合Uk为空,k≥2,集合V中存放所有待插值点。
第一步:从集合Ui中取出一个种子点Bi,递归搜索临近点,判断所找到的临近点是否需要插值。
第二步:对需要插值的点,采用基于矩形网格多重剖分的快速搜索方法搜索与该点临近且不被断层分割的种子点,对该点进行插值。若找到的种子点数大于等于两个,用反比例加权法对Dj点Z值进行估计;若找到的种子点数少于两个,直接将种子点的值赋于Dj。插值计算公式如下:
其中
式(2-1)中,权系数W
i表示种子点对待插值点的影响程度,Z为D
j点Z值,n为种子点个数,待插值点到种子点的距离为d
i,1≤i≤n,p
i为第i个种子点的Z值,
为B
i点的Z值,D为查找范围。
第三步:验证插值是否正确。确保断层分割区域CDP有多个不同Z值,且每两个值都是被断层分割的。
第四步:将插值后的点Dj标记为种子点,放入集合Uk,并且从集合V中删除Dj。
第五步:判断集合Ui是否为空,若集合Ui不为空,则跳至第一步;若集合Ui为空,再判断集合V是否为空,若集合V不为空,令Ui=Uk,依次进行第一步到第四步并将插值后的点放入集合Uk+1;若集合V为空,则插值完毕。
空间网格化插值方法中最重要的是判断种子点与待插值点之间是否被断层分割,相邻点被断层分割存在三种情况:a.被断层线分割;b.被正断层分割;c.被逆断层分割。
空间曲面的投影被断层线分割时即在三维空间曲面被垂直断层面分割,这种情况下的投影为一条曲线。空间曲面被正断层面分割时,投影区域的曲面网格点不需要插值。这两种情况下断层的分割情况都比较容易判断。
下面主要介绍相邻点是否被逆断层分割的判断条件。
在空间中判断相邻点是否被逆断层分割,有图5中所示的三种情况,图5为有逆断层的层位剖面图,其中B为种子点,D为待插值点,Z1、Z2分别为B、D上的层位Z值,F1、F2分别为B、D上的断层Z值。
①当B、D上都有断层点时,如果满足条件Z1≥F1且Z2≤F2,或者满足条件Z1≤F1且Z2≥F2,则B、D点被断层分割。
②当B上有断层点,D上没有断层点时,如果满足条件Z1≥F≥Z2,或者满足条件Z1≤F≤Z2,则B、D点被断层分割。
③当B上没有断层点,D上有断层点时,如果满足条件Z1≥F≥Z2,或者满足条件Z1≤F≤Z2,则B、D点被断层分割。
④其余情况下,B、D点不被断层分割,D点需要插值。
插值拟合算法的插值过程是通过搜索离散点来计算待插值点的值,通常搜索过程的效率决定了插值算法的效率。传统的规则矩形网格法,当离散点分布不均匀时,拟合过程中对离散点的搜索效率低,这就导致了等值线生成效率不高。因此本算法采用了基于矩形网格多重剖分的快速搜索方法来查找种子点,以提高对离散点的搜索效率,从而提高空间网格化方法的效率。
(1)时间复杂度分析
若待插值的网格数为M,则空间网格化插值方法耗时近似为:
式(2-2)中,T表示算法总运行时间;M表示待插值网格数,M=S+2D-F,S表示给定区域的网格总数;F表示正断层投影区域网格点个数;D表示逆断层投影区域网格点个数;t1表示查找一个网格点所需时间,N表示查找网格圈数,t2表示判断一次相邻两个网格点是否被断层分隔所需时间。
为了验证空间复杂曲面空间网格化算法的时间效率,进行了如下仿真实验。
首先分析查找种子点范围对插值算法效率的影响。本算法采用了多重网格划分的方法来提高插值效率。
如图6所示,图中曲线展示了一重网格划分情况下和二重网格划分情况下插值的所耗时间,一重矩形网格划分插值耗时呈线性增加趋势,二重矩形网格划分的插值时间明显较前者大幅减少,且随着离散点数量的增加插值时间基本呈线性趋势并趋于稳定。且在二重网格划分时,查找圈数越少,插值效率越高。
接下来分析逆断层大小对插值算法效率的影响。当存在逆断层时,判断相邻两个网格点是否被断层分割会增加耗时,且逆断层区域网格点需要完成两个层位Z值的插值,也会增加插值耗时,从图7可以看出,断层范围越大插值耗时越多,且插值时间基本呈线性增加。
(2)空间复杂度分析
复杂曲面空间网格化算法需要建立矩形网格数据结构,耗费了一定的存储空间。矩形网格的存储空间为O(m),其中m=N+M,N为种子点个数,M为待插值网格点个数。