1.一种基于地质图的松散层三维模型构建方法,其特征在于该方法包括:(1)加载区域地质图、区域DEM数据以及基岩面DEM数据,形成区域地层面集合GeoPolygon、区域栅格数据集合GeoDEM和基岩面栅格数据集合BedDEM;
(2)根据区域地层面集合GeoPolygon中地层面的地层代码,提取地层面中的松散层,存入松散层集合GP,并构造松散层边界线集合GL和松散层属性集合AT;
(3)基于区域栅格数据集合GeoDEM和松散层集合GP,获取松散层等高线集合Contour;
(4)读取松散层边界线集合GL中松散层边界线和等高线集合Contour中等高线上所有折点,存入采样点集合GeoPoint,并根据区域栅格数据集合GeoDEM为所有采样点赋予地表高程值SH,以及根据基岩面栅格数据集合BedDEM为所有采样点赋予基岩高程值;
(5)基于地层相似性原理,根据松散层厚度,计算采样点集合GeoPoint中所有采样点的分层埋深高程值;
(6)根据松散层属性集合AT和对应采样点的高程值,构建不规则三角网TIN数据集;
(7)将TIN数据集中数据转化成三角面,存入三角面要素类Tri,构建松散层三维模型。
2.根据权利要求1所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(1)具体包括:
(1‑1)加载矢量区域地质图数据,从中提取区域地层面,存入区域地层面集合GeoPolygon;
(1‑2)加载区域DEM数据,从中提取区域栅格数据,存入区域栅格数据集合GeoDEM;
(1‑3)加载基岩面DEM数据,从中提取基岩面栅格数据,存入基岩面栅格数据集合BedDEM。
3.根据权利要求1所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(2)具体包括:
(2‑1)根据研究区域地质图图例,建立一个地层年代从新到老的松散层地层代码表PC;
(2‑2)从区域地层面集合GeoPolygon中获取每一地层面的地层代码,并将地层代码属于松散层地层代码表PC中的地层面判定为松散层,存入松散层集合GP,并将其地层代码存入松散层属性集合AT;
(2‑3)从松散层集合GP中提取每个松散层的边界线,并存入松散层边界线集合GL={gli|i=1,2,...,m},其中,gli表示第i个松散层边界线,m表示松散层边界线的数量;
(2‑4)将松散层集合GP的地层唯一编号GID,作为松散层边界线集合GL中对应边界线的属性存储,建立GP与GL的关联;
(2‑5)将松散层集合GP的地层代码,存储到松散层边界线集合GL的对应属性中。
4.根据权利要求1所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(3)具体包括:
(3‑1)基于区域栅格数据集合GeoDEM,根据用户指定的等高线间距,利用ArcEngine API生成相应的等高线集合CT;
(3‑2)从松散层边界线集合GL中读取任一边界线gli,采用边界线gli裁切等高线集合CT中所有等高线,将边界线gli内的所有等高线,存入松散层等高线集合Contour;
(3‑3)循环步骤(3‑2),直至遍历松散层边界线GL,得到完整的松散层等高线集合Contour={cti,j|i=1,2,...,m,j=1,2,...,ni},其中,cti,j表示第i个边界线内第j条等高线,m表示松散层边界线的数量,ni表示第i个边界线内等高线的数量。
5.根据权利要求1所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(4)具体包括:
(4‑1)从松散层边界线集合GL中读取任一边界线gli,并从松散层等高线集合Contour中读取其对应的等高线cti,j;
(4‑2)利用ArcEngine API提取边界线gli以及等高线cti,j上所有折点,并存入采样点集合GeoPointi={gpk|k=1,2,...,p},其中,gpk表示第k个采样点,p表示采样点的个数;
(4‑3)根据区域栅格数据集合GeoDEM,为所有采样点赋予地表高程值SH;
(4‑4)根据基岩面栅格数据集合BedDEM,为所有采样点赋予基岩面高程值BH;
(4‑5)将边界线gli的编号,作为对应采样点集合GeoPointi的属性存储,建立边界线与采样点的关联;
(4‑6)循环执行步骤(4‑1)‑(4‑5),直至松散层边界线集合GL被遍历完,得到所有松散层边界线的采样点集合GeoPoint={GeoPointi|i=1,2,...,m},m表示松散层边界线的数量。
6.根据权利要求1所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(5)具体包括:
(5‑1)从松散层边界线GL和松散层等高线集合Contour中读取地层年代最新且尚未读取过的松散层的边界线和等高线,其中,若松散层地层代码表PC中的地层代码最小,则该松散层的地层年代最新;
(5‑2)根据步骤(5‑1)读取的松散层的边界线的编号i,查找其采样点集合GeoPointi,并在采样点集合GeoPointi属性表内构建分层埋深高程值LH字段;
(5‑3)根据地层对比相似性原理,毗邻地层间形态结构具有相似性,故将该松散层边界线上的采样点的分层埋深高程值LH赋值为其地表高程值;
(5‑4)计算步骤(5‑1)读取的等高线上所有采样点的分层埋深高程值;
(5‑5)返回执行步骤(5‑1),直至所有松散层被遍历完。
7.根据权利要求6所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(5‑4)具体包括:
(5‑4‑1)读取GeoPointi中属于步骤(5‑1)提取的等高线上的采样点,并存入等高线采样点ContourPoint={cpo|o=1,2,...,V},其中,cpo表示第o个等高线采样点,V表示等高线采样点个数;
(5‑4‑2)比较所有采样点的地表高程值SH和基岩面高程值BH大小,若SH>BH,表明该采样点正常;若SH<=BH,则表明该采样点异常,在集合ContourPoint删除该采样点;
(5‑4‑3)读取步骤(5‑4‑2)处理后的等高线采样点集合ContourPoint中的任意一个采样点cpo;
(5‑4‑4)计算采样点cpo分层埋深高程值LH=(SH+BH)/2;
(5‑4‑5)循环执行步骤(5‑4‑3)‑(5‑4‑4),直至等高线采样点集合ContourPoint被遍历完,完成所有等高线采样点分层埋深高程值的计算。
8.根据权利要求1所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(6)具体包括:
(6‑1)根据松散层地层代码表PC中的地层编码由小到大的顺序,得到地层年代由新到老的顺序,从松散层边界线GL中读取任一松散层的边界线gli;
(6‑2)若集合GL内无其它松散层年代小于该松散层,则证明该松散层年代新,根据该松散层所有边界线编号,查找相应所有的采样点集合,并执行步骤(6‑3);若集合GL内有其它松散层年代小于该松散层,则证明该松散层年代较老,在读取边界线时,同时读取比该松散层年代新的松散层的边界线,查找相应所有的采样点集合,并执行步骤(6‑4);
(6‑3)将步骤(6‑2)查找到的采样点以地表高程为上表面高程,分层埋深高程为下表面高程,并执行步骤(6‑5);
(6‑4)将步骤(6‑2)查找到的不同地层年代的采样点分情况赋值,若采样点属于地层年代最老的,则以地表高程为上表面高程,基岩面高程为下表面高程;若采样点不属于地层年代最老的,则以分层埋深高程为上表面高程,基岩面高程为下表面高程,并执行步骤(6‑5);
(6‑5)利用ArcEngine API,分别根据采样点上下表面高程,构建上表面和下表面的不规则三角网TIN数据集。
9.根据权利要求1所述的基于地质图的松散层三维模型构建方法,其特征在于:步骤(7)具体包括:
(7‑1)调用ArcEngine API,将不规则三角网数据集TIN内的三角网导出到面要素类Tri;
(7‑2)在三角形面要素类Tri属性表中构建字段ID,与边界线编号发生关联,将边界线属性传递到Tri的属性表内;
(7‑3)调用ArcEngine API,将三角形面要素类Tri转换成3D模型格式文件,构建松散层三维模型。
10.一种基于地质图的松散层三维模型构建装置,包括处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于:所述处理器执行所述程序时实现权利要求1‑9中任意一项所述的方法。