1.单一倾向断层的自动反演方法,具体步骤如下:
步骤1、获取数据与计算基准点
步骤1.1:加载矢量格式的岩层面图层和断层线线图层数据,分别得到上盘岩层面要素集合UpStra={usi|i=1,2,…,n}和下盘岩层面要素集合DownStra={dsi|i=1,2,…,n}以及断层线包含的点集合FLine={fli|i=1,2,…,m};
其中,usi是断层的上盘岩层面要素,dsi是断层的下盘岩层面要素,fli是断层的断层线包含的点,n为岩层面要素的个数,m为断层线包含的点的个数;
步骤1.2:循环取集合UpStra和DownStra中的面要素usi和dsi;若usi与dsi对应岩层的岩石地层单位一致,则执行步骤1.3;否则,继续执行本步骤;
步骤1.3:分别获取面要素usi和dsi的点集UsVi={uij|j=1,2,…,a}和DsVi={dij|j=
1,2,…,b};移除顶点集UsVi和DsVi中各自的重复点;
其中,uij是构成面要素usi的第j个点,dij是构成面要素dsi的第j个点,a为构成面要素usi的点的个数,b为构成面要素dsi的点的个数;
步骤1.4:计算交集
分别计算点集UsVi与点集FLine的交集UsInteri={utj|j=1,2,…,p},点集DsVi与点集FLine的交集DsInteri={dtj|j=1,2,…q};
其中,utj是点集UsVi和点集FLine的公共点,dtj是点集DsVi和点集FLine的公共点,p为交集UsInteri中点的个数,q为交集DsInteri中点的个数;
对交集UsInteri中的点要素按规则1进行排序,生成新的交集UsInter'i={ut'j|j=1,
2,…,p},其中,Point、SubPoint和SubPoint'分别代表点集UsVi、交集UsInteri和交集UsInter'i;对交集DsInteri中的点要素按规则1排序,生成新的交集DsInter'i={dt'j|j=
1,2,…q},其中,Point、SubPoint和SubPoint'分别代表点集DsVi、交集DsInteri和交集DsInter'i;
所述规则1:设点集Point={ptj|j=1,2,…sum},点集SubPoint={sptj|j=1,2,…sub},其中,sum为点集Point中点的个数,sub为点集SubPoint中点的个数,且排序的步骤如下:
1)遍历点集Point,当查找到点ptj满足条件ptj-1∈SubPoint且 时,跳出循环,并记录点ptj-1;
2)查找点ptj-1在点集SubPoint中的位置index;
3)遍历点集SubPoint,将其中下标为index+1到sub的点加入点集SubPoint'中;再次遍历点集SubPoint,将下标为0到index的点加入点集SubPoint';
步骤1.5:计算基准点坐标
针对交集UsInter'i、DsInter'i,分别根据公式(1)、(2)计算两个基准点DaP1(x1,y1)、DaP2(x2,y2)的坐标值:其中,(ut'1.x,ut'1.y)、(ut'p.x,ut'p.y)分别是集合UsInter'i中首尾点的坐标值,(dt'1.x,dt'1.y)、(dt'q.x,dt'q.y)分别是集合DsInter'i中首尾点的坐标值;
步骤2、分解岩层的边界
步骤2.1:对顶点集UsVi进行分解;将其分解为如下几部分:
1)交集UsInter'i;
2)UsVi与左侧相邻岩层的交集InterU1={u1j|j=1,2,…,c},c为交集InterU1中点的个数,且InterU1包含点ut'p;
3)UsVi与右侧相邻岩层的交集InterU2={u2j|j=1,2,…,d},d为交集InterU2中点的个数,且InterU2包含点ut'1;
4)UsVi与UsInter'i、InterU1和InterU2的差集SubU={suj|j=1,2,…,e},e为差集SubU中点的个数;
步骤2.2:分别对集合InterU1、InterU2和SubU中的点要素按规则1进行排序,其中,对以上三个集合,Point均代表点集UsVi,SubPoint分别代表它们本身;
步骤2.3:对顶点集DsVi进行分解;将其分解为如下几部分:
1)交集DsInter'i;
2)DsVi与左侧相邻岩层的交集InterD1={d1j|j=1,2,…,f},f为交集InterD1中点的个数,且InterD1包含点dt'q;
3)DsVi与右侧相邻岩层的交集InterD2={d2j|j=1,2,…,g},g为交集InterD2中点的个数,且InterD2包含点dt'1;
4)DsVi与DsInter'i、InterD1和InterD2的差集SubD={sdj|j=1,2,…,h},h为差集SubD中点的个数;
步骤2.4:分别对集合InterD1、InterD2和SubD中的点要素按规则1进行排序,其中,对以上三个集合,Point均代表DsVi,SubPoint分别代表它们本身;
步骤3、移动岩层
步骤3.1:移动集合InterU1中点的坐标:
a)根据公式(3)计算InterU1中每个点在x、y方向的平均偏移量aveX和aveY:其中,(u.x,u.y)是集合InterU1中首点的坐标值,(x,y)是基准点DaP1的坐标值,k1为InterU1中点的个数;
b)遍历集合InterU1,根据公式(4)修改u1j的坐标值,得到点移动后的集合InterU1'={u1'j|j=1,2,…,c},c为集合InterU1'中点的个数;
其中,(vj.x,vj.y)是当前点u1j的坐标值,(v'j.x,v'j.y)是点u1'j的坐标值,k2为InterU1中点的个数;
步骤3.2:移动集合InterU2中点的坐标:
c)根据公式(3)计算InterU2中每个点在x、y方向的平均偏移量aveX和aveY;此处,(u.x,u.y)是集合InterU2中尾点的坐标值,(x,y)是基准点DaP2的坐标值,k1为InterU2中点的个数;
d)遍历集合InterU2,根据公式(5)修改u2j的坐标值,得到点移动后的集合InterU2'={u2'j|j=1,2,…,d},d为集合InterU2'中点的个数;
其中,(wj.x,wj.y)是当前点u2j的坐标值,(w'j.x,w'j.y)是点u2'j的坐标值;
步骤3.3:合并集合
依次遍历集合InterU1'、SubU和InterU2',把集合中的点添加到集合NewUsVi={nuij|j=1,2,...,s}中,s为集合NewUsVi中点的个数,且s=c+e+d;
步骤3.4:移动集合InterD1中点的坐标:
e)根据公式(3)计算InterD1中每个点在x、y方向的平均偏移量aveX和aveY;此处,(u.x,u.y)是集合InterD1中首点的坐标值,(x,y)是基准点DaP2的坐标值,k1为InterD1中点的个数;
f)遍历集合InterD1,根据公式(4)修改d1j的坐标值,得到点移动后的集合InterD1'={d1'j|j=1,2,…,f},f为集合InterD1'中点的个数;此处,(vj.x,vj.y)是当前点d1j的坐标值,(v'j.x,v'j.y)是点d1'j的坐标值,k2为InterD1中点的个数;
步骤3.5:移动集合InterD2中点的坐标:
g)根据公式(3)计算InterD2中每个点在x、y方向的平均偏移量aveX和aveY;此处,(u.x,u.y)是集合InterD2中尾点的坐标值,(x,y)是基准点DaP1的坐标值,k1为InterD2中点的个数;
h)遍历集合InterD2,根据公式(5)修改d2j的坐标值,得到点移动后的集合InterD2'={d2'j|j=1,2,…,g},g为集合InterD2'中点的个数;此处,(wj.x,wj.y)是当前点d2j的坐标值,(w'j.x,w'j.y)是点d2'j的坐标值;
步骤3.6:合并集合
依次遍历集合InterD1'、SubD和InterD2',把集合中的点添加到集合NewDsVi={ndij|j=1,2,...,t}中,t为集合InterD2'中点的个数,且t=f+h+g;
步骤4、合并岩层
步骤4.1:针对步骤3.3中得到的集合NewUsVi,对其进行遍历,把点添加到集合StraVi中;
步骤4.2:对步骤3.6中得到的集合NewDsVi进行遍历,除首尾点外,依次将其他点添加到集合StraVi中,得到集合StraVi={svj|j=1,2,…,r},r为集合StraVi中点的个数,且r=s+t-2;
步骤4.3:循环执行步骤1.2-4.2,直至上、下盘对应岩层合并完毕,得到合并后的岩层面要素集合SumStra={StraV1,StraV2,…,StraVz},z为岩层面要素的个数,生成并保存反演后的面图层数据。