本发明涉及一种边坡计算模型导入时的自动修复方法,属于地质岩土软件领域。
背景技术
目前,国内一些岩土边坡(滑坡)计算软件,用户在导入边坡计算模型时,由于线型问题或者人为建模(一般都是通过autocad软件建模)时的失误,例如线条断开、重叠等,导致岩土边坡计算软件不能辨识计算模型,用户须重新检查、修改原有cad模型后再次导入;其次,倘若用户根据个人经验或者后期补充勘察认为某段地层线须做适当调整,亦只能重新cad建模而不能直接在原有的计算界面上直接进行调整;对于自动搜索最危险滑动面时,由于现有岩土边坡计算软件未对计算结果进行分类填充形成封闭区间云图,因此,用户无法对滑动面进行快速准确搜索。
请参阅图1,现有的边坡计算模型导入过程,仅判断线条是否为线段、圆弧、且相互连接,如果不是,要求用户再cad软件中修正后再导入,如果是,判断图形是否分层且独立成区域,不是,则进行人工手动分层并手动填充区域,是,则,则可进行边坡安全系数计算、支档结构计算、滑坡推理计算、普通抗滑桩计算、锚索抗滑桩、挡土墙计算。边坡计算模型的应用都必须以导入后的图形为基础,且该图形必须由线段组成且线段连续,并形成独立的封闭区间云图。
现有技术中线条的修复大都必须通过cad软件手动修正后才能再导入。图形线条未形成独立封闭区域,则采用人工手动分层填充,处理速度慢,耗时较长。
技术实现要素:
为了解决上述技术问题,本发明提供一种边坡计算模型导入时的自动修复方法,其能够对导入的图形线条进行自动修复,自动生成连续坡面线和连续岩土线,同时,还能进一步生成封闭区域,完成自动填土。
本发明的技术方案如下:
一种边坡计算模型导入时的自动修复方法,包括图形线条自动修复步骤:
步骤1、导入边坡计算模型;
步骤2、计算图形的最大高度和宽度,设置带标尺的边框,下边框的长度为图形的宽度,左边框和右边框上的顶端纵坐标值大于图形的最大高度值;
步骤3、手动识别出滑动面和水位线,然后对图形中的其余线条进行修正;
步骤4、自动识别坡面线并连接,生成连续坡面线;
步骤5、自动识别岩土线,并对不连续的岩土线进行延长或缩短,生成连续岩土线;
步骤6、完成图形线条的修复。
更优地,所述步骤3中,对其余线条的修正为:对于线段,保持不变;对于折线,将折点处的线条打断,使折线转变为多个线段依次相连,从而将滑动面和水位线之外的所有线条均转变为线段,将得到的线段集合在一起,生成第一线段集合。
更优地,所述步骤4中,生成连续坡面的过程为:
4-1、逐条判断第一线段集合中的线段是否重叠,若重合,则保留重叠线段中的一条,删除多余的重叠线段;
4-2、对第一线段集合中的各线段逐条做中点辅助线,若线段的中点辅助线和第一线段集合中的其他线段无交点,将该线段定义为坡面线;若有交点,说明该线段不是坡面线;判断完毕将该中点辅助线删除;
4-3、将被定义为坡面线的线段按照各线段的横坐标从小到大进行排序,依次连接,若相邻两线段不连续,则自动将后一条坡面线与前一条坡面线连接,直至将全部坡面线连接完毕,形成连续坡面。
更优地,所述步骤4-2为:第一线段集合中的各线段逐条执行如下操作:获取线段的中点坐标值(x,y),以(x,y+k)作起点,以(x,y0)做终点,画中点辅助线,若该中点辅助线与其他线段无交点,则将该线段定义为坡面线,所述y0为左边框或右边框上标尺的最大值,所述k≥0.001。
更优地,所述步骤5的执行过程如下:
5-1、将所述第一线段集合中除坡面线外的其余线段均定义为岩土线,并生成岩土线集合,从而完成岩土线的自动识别;
5-2、岩土线集合中的各线段逐条执行如下操作:
5-2-1、判断岩土线两端点是否均与其他岩土线有相交,若是,说明该岩土线不存在独立端点,不需要处理,选择下一条岩土线重复执行步骤5-2,若否,执行步骤5-2-2;所述独立端点为与其他岩土线不连接且不相交的端点;
5-2-2、判断该岩土线上是否有交点s1,所述交点s1是该岩土线与其他岩土线的交点,若岩土线存在交点s1,执行步骤5-2-3,若岩土线上无交点s1且两端点均为独立端点,则将其删除,选择下一条岩土线重复执行步骤5-2,若该岩土线无交点s1,且仅有一端点为独立端点,则从该独立端点出发,反向延长该岩土线直至与边框或者坡面线相交,生成交点a,将交点a作为该岩土线的新的端点,取消原来的独立端点;然后选择下一条岩土线重复执行步骤5-2;
5-2-3、对该岩土线上的独立端点逐一执行如下操作:计算独立端点与该岩土线上最近交点s1的距离l1,然后以该独立端点为起点做该岩土线的反向延长辅助线,直至与边框或者坡面线相交,判断该反向延长辅助线与其他岩土线是否相交,若无,则将与边框或坡面线的交点命名为交点s2,若有,则将反向延长线上与独立端点最近的交点命名为交点s2,计算该独立端点与该交点s2的距离l2,若距离l1≥距离l2,将该岩土线延长到交点s2,即交点s2作为该岩土线的端点,取消原独立端点,若距离l1<距离l2,将该岩土线缩短到交点s1,即交点s1作为该岩土线的端点,取消原独立端点;然后删除反向延长辅助线,选择下一条岩土线重复执行步骤5-2;
5-3、各条岩土线均经过步骤5-2的操作,使任意一岩土线的两端点必然与其他岩土线的端点或边框或坡面线连接,生成多条连续岩土线。
更优地,所述自动修复方法还包括自动填土步骤:
步骤7、生成点链辅助线;
步骤8、创建初点链;
步骤9、构建每一个初始点链对应的整体性点链;
步骤10、创建由整体性点链形成的封闭区域,生成土层模块。
更优地,所述步骤7为:
7-1、自动记录所有坡面线、岩土线以及边框线段,并将统计到的线段集合在一起,生成第二线段集合;
7-2、从第二线段集合中依次导入其中一条线段li,i为自然数,i的初始值为1,每循环一次,i+1;
7-3、依次导入第二线段集合中其余线段的一条,每循环一次,导入一条其余线段;
7-4、判断线段li是否与导入的其余线段,是,记录交点s3,执行步骤7-5,否,执行步骤7-5;
7-5、判断第二线段集合中的其余线段是否导入完毕,是,执行步骤7-6,否,返回步骤7-3;
7-6、将线段li的端点和交点s3按照横坐标排序,并做点链辅助线,相连两点之间做一条点链辅助线,将所有点链辅助线记录在点链辅助线集合中;
7-7、判断线段li是否全部导入完毕,若否,执行步骤7-2,若是,执行步骤8。
更优地,所述步骤8为:
8-1、统计出所有点链辅助线,并用集合a记录每一条点链辅助线的端点坐标;
8-2、从集合a中查找与左边框的横坐标大小相同的端点坐标,并将该端点坐标标记为端点坐标bj,然后记录在集合b中;j为自然数,j的初始值为1,每标记一次,j+1;全部查找完毕,执行步骤8-3;
8-3、依次导入集合b中的端点坐标bj,每循环一次,j+1;
8-4、依次输入点链辅助线集合中的点链辅助线,每循环一次导入一条点链辅助线;
8-5、判断导入的点链辅助线的端点坐标是否为当前导入的坐标bj,若是,执行步骤8-6,若否,执行步骤8-7;
8-6、创建点链ck,其记录坐标bj和该点链辅助线的另一个端点坐标,每创建一个点链ck,k+1;该点链ck为初点链
8-7、判断点链辅助线集合中点链辅助线是否导入完毕,是,执行步骤8-8,否,执行步骤8-4;
8-8、判断集合b中的坐标点bj是否导入完毕,是,执行步骤9,否,返回步骤8-3。
更优地,所述步骤9为:
9-1、将所有点链ck导入点链集合c,从点链集合中选取一个点链ck,并将被选取的点链ck的最后一个坐标点记录为e;每循环一次,k+1
9-2、依次导入点链辅助线集合中的点链辅助线,每循环一次导入一条点链辅助线;
9-3、判断点链辅助线的端点坐标是否为e,若是,创建点链pkm,其记录点链ck上所有坐标,以及该点链辅助线的另一端点坐标,然后执行步骤9-4;若否,执行步骤9-4;m为自然数,每创建一次点链pkm,m+1;
9-4、判断点链辅助线集合中的各点链辅助线是否均导入完毕,若否,返回步骤9-2,若是,删除点链ck,执行步骤9-5;
9-5、判断点链pkm的最后一个坐标的横坐标是否等于右边框的横坐标,若是,执行步骤9-6,若否,将点链pkm重命名为点链ck,此步骤中k值大于初点链的总数量,避免出现相同k值编号的点链,然后返回步骤9-1
9-6、判断点链集合c中的各点链是否均导入完毕,若是,则点链pkm为整体性点链,执行步骤10,若否,返回步骤9-1。
更优地,所述步骤10为:
10-1、将所有点链pkm统一重命名为点链dx;将所述点链dx集合在一起,生成待排序点链集合m;
10-2、依次导入点链dx,且将该点链dx的第一个坐标点标记为坐标点f;每循环导入一次,x+1;
10-3、依次导入除步骤10-2中的点链dx外的其余的点链dx,并将导入的该条其余点链dx的第一个坐标点标记为坐标点g,每循环一次,导入一条其余点链dx;
10-4、判断坐标点f的纵坐标是否大于坐标点g的纵坐标:
若是,创建点链hy,使点链hy=点链dx,第一次创建点链hy时,y=1,以后每创建一次,y+1;然后执行步骤10-5;
若否,判断坐标点f的纵坐标是否等于坐标点g的纵坐标:若是,则依次分别将点链dx和该条其余点链dx的下一个坐标点标记为坐标点f和坐标点g,该下一个坐标点的横坐标相同,再次执行步骤10-4;若否,创建点链hy,使点链hy=该条其余点链dx,然后执行步骤10-5;
10-5、判断待排序点链集合m中的其余点链dx是否均已逐一导入完毕:
若是,从待排序点链集合m中删除与点链hy等值的点链dx,或删除与点链hy等值的其余点链dx,然后执行步骤10-6;
若否,返回步骤10-3;
10-6、判断待排序点链集合m的点链dx是否均已执行步骤10-2:
若是,则完成排序,由点链hy和点链hy+1前后两组点链分别,构成多边形,形成封闭区域,生成土层模块,自动填土步骤完成;
若否,返回步骤10-2。
本发明具有如下有益效果:
1、本发明自动修复方法能够自动纠错图形线条,用户可先进行滑动面、水位线定义,并自动识别坡面线和岩土线;
2、能够自动构建封闭区域,形成土层模块,自动完成填土;
3、导入dxf计算模型方便快捷,减少因线型问题或者人为操作失误产生的重复建模工作量;
4、边坡模型导入后,经过自动修复,使得图形能够用于边坡安全系数计算、支档结构计算、滑坡推理计算、普通抗滑桩计算、锚索抗滑桩、挡土墙计算。
附图说明
图1为现有技术中边坡计算模型导入流程;
图2为本发明自动修复方法的总流程图;
图3为本发明中图形线条自动修复流程图;
图4为本发明中线条修正流程图;
图5为本发明线条修正前后的图形线条对比图;
图6为本发明中生成连续坡面线的流程图;
图7为本发明中做中点辅助线的流程示意图;
图8为本发明中点辅助线的图形示意图;
图9为本发明中生成连续岩土线的流程图;
图10为本发明岩土线延长或缩短的图形示意图;
图11为本发明中生成点链辅助线的流程图;
图12为本发明生成点链辅助线的图形示意图;
图13为本发明中创建初点链的流程图;
图14为本发明中构建整体性点链的流程图;
图15为本发明中创建封闭区域的流程图。
具体实施方式
下面结合附图和具体实施例来对本发明进行详细的说明。
实施例一
请参阅图2和图3,一种边坡计算模型导入时的自动修复方法,包括图形线条自动修复步骤:
步骤1、导入边坡计算模型;
步骤2、计算图形的最大高度和宽度,设置带标尺的边框,下边框的长度为图形的宽度,左边框和右边框上的顶端纵坐标值大于图形的最大高度值;
步骤3、手动识别出滑动面和水位线,然后对图形中的其余线条进行修正;其余线条的修正过程为:请参阅图4和图5,对于线段,保持不变;对于折线,将折点处的线条打断,使折线转变为多个线段依次相连,从而将滑动面和水位线之外的所有线条均转变为线段,(图5中,虚线为水位线、双点划线为滑动面)将得到的线段集合在一起,生成第一线段集合;本发明所述线段包括直线线段和弧线线段,直线线段的两端点之间的连线为直线,弧线线段的两端点之间的连线为弧线;
请参阅图6,步骤4、自动识别坡面线并连接,生成连续坡面线;
4-1、逐条判断第一线段集合中的线段是否重叠,若重合,则保留重叠线段中的一条,删除多余的重叠线段;
4-2、对第一线段集合中的各线段逐条做中点辅助线,若线段的中点辅助线和第一线段集合中的其他线段无交点,将该线段定义为坡面线;若有交点,说明该线段不是坡面线;判断完毕将该中点辅助线删除;
请参阅图7和图8,所述中点辅助线的实施方式为:
第一线段集合中的各线段逐条执行如下操作:获取线段的中点坐标值(x,y),以(x,y+k)作起点,以(x,y0)做终点,画中点辅助线,若该中点辅助线与其他线段(即第一线段集合中的其他线段)无交点,则将该线段定义为坡面线,所述y0为左边框或右边框上标尺的最大值,若左边框上标尺最大值≥右边框上标尺最大值,则y0为左边框上标尺的最大值,反之,y0为右边框上标尺的最大值;所述k≥0.001;图8中,k=0.001,图中左边的重点辅助线与其他线段没有交点,则对应的线段为坡面线,图中右边的重点辅助线与其他线段产生交点,因此,该对应的线段非坡面线;
4-3、将被定义为坡面线的线段按照各线段的横坐标从小到大进行排序,依次连接,若相邻两线段不连续,则自动将后一条坡面线与前一条坡面线连接,直至将全部坡面线连接完毕,形成连续坡面;
请参阅图9,步骤5、自动识别岩土线,并对不连续的岩土线进行延长或缩短,生成连续岩土线;
5-1、将所述第一线段集合中除坡面线外的其余线段均定义为岩土线,并生成岩土线集合,从而完成岩土线的自动识别;
5-2、岩土线集合中的各线段逐条执行如下操作:
5-2-1、判断岩土线两端点是否均与其他岩土线有相交,若是,说明该岩土线不存在独立端点,不需要处理,选择下一条岩土线重复执行步骤5-2,若否,执行步骤5-2-2;所述独立端点为与其他岩土线不连接且不相交的端点;
5-2-2、判断该岩土线上是否有交点s1,所述交点s1是该岩土线与其他岩土线的交点:
若该岩土线存在交点s1(交点s1可能是1个,也可能是多个),执行步骤5-2-3,
若该岩土线无交点s1且两端点均为独立端点,则将其删除,选择下一条岩土线重复执行步骤5-2,
若该岩土线无交点s1且仅有一端点为独立端点,则从该独立端点出发,反向延长该线段直至与边框或者坡面线相交,判断该反向延长辅助线与其他岩土线是否相交,若无,则将与边框或坡面线的交点命名为交点s2,若有,则将反向延长线上与独立端点最近的交点命名为交点s2,将交点a作为该线段的新的端点,取消原来的独立端点;选择下一条岩土线重复执行步骤5-2;
5-2-3、对该岩土线上的独立端点逐一执行如下操作:计算独立端点与该岩土线上最近交点s1的距离l1,然后以该独立端点为起点做该岩土线的反向延长辅助线,直至与边框或者坡面线相交,生成交点s2,计算该独立端点与该交点s2的距离l2,若距离l1≥距离l2,将该岩土线延长到交点s2,即交点s2作为该岩土线的端点,取消原独立端点,若距离l1<距离l2,将该岩土线缩短到交点s1,即交点s1作为该岩土线的端点,取消原独立端点;然后删除反向延长辅助线;选择下一条岩土线重复执行步骤5-2;请参阅图10,线段c1c2上,端点c1为独立端点,端点c1与该线段上距离最近的交点s1之间的距离为l1,从端点c1反向延长后,仅与左边框产生交点s2,端点c1与交点s2之间的距离为l2,由于l1>l2,因此将该岩土线延长至交点s2,将交点s2作为新的端点,取消原独立端点c1;再看线段c3c4,其中端点c3为独立端点,端点c3与该线段上距离最近的交点s1之间的距离为l1,从端点c3反向延长后,首先与其他线段产生交点s2,因此,将端点c3与交点s2之间的距离记为l2,由于l1<l2,因此将该岩土线缩短至交点s1,将交点s1作为新的端点,取消原独立端点c3;
5-3、各条岩土线均经过步骤5-2的操作,使任意一岩土线的两端点必然与其他岩土线的端点或边框或坡面线连接,生成多条连续岩土线。
步骤6、完成图形线条的修复。
实施例二
请参阅图2,本实施例二在完成图形线条修复的基础上,完成自动填土。
所述自动修复方法的自动填土步骤,包括:
请参阅图11,步骤7、生成点链辅助线:
7-1、自动记录所有坡面线、岩土线以及边框线段,并将统计到的线段集合在一起,生成第二线段集合;
7-2、从第二线段集合中依次导入其中一条线段li,i为自然数,i的初始值为1,每循环一次,i+1;
7-3、依次导入第二线段集合中其余线段的一条,每循环一次,导入一条其余线段;所述其余线段是指除步骤7-2导入的线路li之外的线段;
7-4、判断线段li是否与导入的其余线段相交,是,记录交点s3,执行步骤7-5,否,执行步骤7-5;
7-5、判断第二线段集合中的其余线段是否导入完毕,是,执行步骤7-6,否,返回步骤7-3;
7-6、将线段li的端点和交点s3按照横坐标排序,并做点链辅助线,相连两点之间做一条点链辅助线,将所有点链辅助线记录在点链辅助线集合中;
7-7、判断线段li是否全部导入完毕,若否,执行步骤7-2,若是,执行步骤8;
请参阅图12(为避免虚线混淆,图12中将滑动面改为实线,且未示出水位线),以先导入线段l1为例,多次循环判断后,仅有一条线段与其存在交点s3,因此,生成对应的点链辅助线为t1和t2,第二次导入线段l2,多次循环判断后,仅有一条线段与其存在交点s3,因此,生成对应的点链辅助线t3和t4;
请参阅图13,步骤8、创建初点链:
8-1、统计出所有点链辅助线,并用集合a记录每一条点链辅助线的端点坐标;
8-2、从集合a中查找横坐标与左边框的横坐标大小相同的端点坐标,并将该端点坐标标记为端点坐标bj,然后记录在集合b中;j为自然数,j的初始值为1,每标记一次,j+1;全部查找完毕,执行步骤8-3;
8-3、依次导入集合b中的端点坐标bj,可以从端点坐标b1开始导入,每循环一次,j+1;
8-4、依次输入点链辅助线集合中的点链辅助线,每循环一次导入一条点链辅助线;
8-5、判断导入的点链辅助线的端点坐标是否为当前导入的坐标bj,若是,执行步骤8-6,若否,执行步骤8-7;
8-6、创建点链ck,其记录坐标bj和该点链辅助线的另一个端点坐标,每创建一个点链ck,k+1;该点链ck为初点链
8-7、判断点链辅助线集合中点链辅助线是否导入完毕,是,执行步骤8-8,否,执行步骤8-4;
8-8、判断集合b中的坐标点bj是否导入完毕,是,执行步骤9,否,返回步骤8-3。
请参阅图14,步骤9、构建每一个初始点链对应的整体性点链;
9-1、将所有点链ck导入点链集合c,从点链集合中选取一个点链ck,并将被选取的点链ck的最后一个坐标点记录为e;每循环一次,k+1
9-2、依次导入点链辅助线集合中的点链辅助线,每循环一次导入一条点链辅助线;
9-3、判断点链辅助线的端点坐标是否为e,若是,创建点链pkm,其记录点链ck上所有坐标,以及该点链辅助线的另一端点坐标,然后执行步骤9-4;若否,执行步骤9-4;m为自然数,每创建一次点链pkm,m+1;
9-4、判断点链辅助线集合中的各点链辅助线是否均导入完毕,若否,返回步骤9-2,若是,删除点链ck,执行步骤9-5;
9-5、判断点链pkm的最后一个坐标的横坐标是否等于右边框的横坐标,若是,执行步骤9-6,若否,将点链pkm重命名为点链ck,此步骤中k值大于初点链的总数量,避免出现相同k值编号的点链,然后返回步骤9-1
9-6、判断点链集合c中的各点链是否均导入完毕,若是,则点链pkm为整体性点链,执行步骤10,若否,返回步骤9-1;
请参阅图15,步骤10、创建由整体性点链形成的封闭区域,生成土层模块:
10-1、将点链pkm统一重命名为点链dx;将所述点链dx集合在一起,生成待排序点链集合m;即将所有点链pkm进行排序编号,x的最大值等于点链pkm;例如,将点链p12、p13、p21、p22进行重命名,对应得到点链d1、d2、d3、d4;
10-2、依次导入点链dx,且将该点链dx的第一个坐标点标记为坐标点f;每循环导入一次,x+1;
10-3、依次导入除步骤10-2中的点链dx外的其余的点链dx,并将导入的该条其余点链dx的第一个坐标点标记为坐标点g,每循环一次,导入一条其余点链dx;
10-4、判断坐标点f的纵坐标是否大于坐标点g的纵坐标:
若是,创建点链hy,使点链hy=点链dx,第一次创建点链hy时,y=1,以后每创建一次,y+1;然后执行步骤10-5;
若否,判断坐标点f的纵坐标是否等于坐标点g的纵坐标:若是,则依次分别将点链dx和该条其余点链dx的下一个坐标点标记为坐标点f和坐标点g,该下一个坐标点的横坐标相同,再次执行步骤10-4;若否,创建点链hy,使点链hy=该条其余点链dx,然后执行步骤10-5;
10-5、判断待排序点链集合m中的其余点链dx是否均已逐一导入完毕:
若是,从待排序点链集合m中删除与点链hy等值的点链dx,或删除与点链hy等值的其余点链dx,然后执行步骤10-6;
若否,返回步骤10-3;
10-6、判断待排序点链集合m的点链dx是否均已执行步骤10-2:
若是,则完成排序,由点链hy和点链hy+1前后两组点链分别,构成多边形,形成封闭区域,生成土层模块,自动填土步骤完成;
若否,返回步骤10-2。
以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。