首页/文章/ 详情

MiningPy---一个小巧的块体模型(Block Model) API

1年前浏览2910

1 引言

大部分采矿规划软件都内置块体模型(Block Model)功能,但这些软件有一定的局限性:一方面是价格不菲的商业性软件,另一方面功能太多,短时间内不容易掌握。而MiningPy是一个用Python语言编写的功能相对单一的块体模型API,能够满足要求不太高的块体模型操作,包括块体索引(ijk)、基于几何和属性的块体重构、块体旋转、计算模型框架(原点、尺寸、旋转、外延等)、验证块体模型的内部块缺失、检查模型是否规则等。

MiningPy能够在Python中直接预览块体模型和dxf文件,也能导出与ParaView兼容的块体模型,关于ParaView参看【软土地层开挖和支护模拟(Excavation and Support of Soft Soil)---Part 3】此外,MiningPy提供了与商业采矿计划软件包的交互功能,例如Maptek Vulcan,GEOVIA Whittle,COMET,Minemax Scheduler/Tempo和Datamine。

2 核心API

MiningPy的核心函数共有15个,以miningpy.core.YYY的形式调用,YYY代表如下函数:

(1) ijk---根据块体的xyz坐标计算其ijk的索引值

(2) xyz---与(1)正好相反,根据块体的ijk索引计算其xyz坐标

(3) rotate_grid---采用右手规则和旋转矩阵方法,旋转块体

(4) group_weighted_average---块状模型属性的加权平均数

(5) nblocks_xyz---在模型不旋转情况下x,y,z轴上的块体数目

(6) model_origin---块体模型网格的原点,即最小xyz坐标值的点

(7) block_dims---估算不旋转情况下块体x、y、z的尺寸

(8) check_regular---检查块体模型中的块是否置于一个规则的网格上

(9) check_internal_blocks_missing---检查在一个规则的块体模型中是否存在有缺失的内部块(10) vulcan_csv---将pandas.Dataframe块体模型转换成Vulcan导入兼容的CSV格式

(11) vulcan_bdf---从Vulcan块模型创建一个Vulcan块定义文件

(12) geometric_reblock---将一个普通的块体模型聚合或分割为更大或更小的块

(13) index_3Dto1D---将块体中心点的三维数组xyz转换为一维索引

(14) index_1Dto3D---将IJK索引转换回块体中心点的坐标xyz

(15) grade_tonnage_plot---创建并返回品位-吨位(grade-tonnage)表,品位-吨位表示截止品位对矿产储量的影响。

3 可视化函数

MiningPy提供的可视化函数共有8个,以miningpy.visualisation.YYY的形式调用,YYY代表如下函数:

(1) plot3D---创建完全互动的3D vtk块体模型图

(2) export_html---输出块体模型的块体和属性,并将数据嵌入到paraview glance html应用程序中,以实现可视化

(3) plot3D_dxf---创建完全交互的3D vtk图,dxf必须是字符串或三角化图

(4) export_dxf_html---导出dxf文件并将数据嵌入paraview glance html应用程序,以实现可视化

(5) dxf2vtk---将dxf保存为.vtp(vtk polydata)文件格式,以便在paraview中打开用于外部查看。

(6) blocks2vtk---将块体模型的块体和属性导出到vtk文件中,以便在paraview中进行可视化

(7) blocks2dxf---将块体模型的块体和属性导出到vtk文件中,以便在paraview中进行可视化

(8) face_position_dxf

4 与Maptek Vulcan集成

MiningPy提供了与Maptek Vulcan集成的功能。目前可以使用的函数有12个,以miningpy.vulcan.YYY的形式调用,YYY代表如下函数:

(1) vulcan_dir_to_path

(2) bdf_from_bmf

(3) create_bdf

(4) bmf_to_csv

(5) csv_to_bmf

(6) pandas_to_bmf

(7) bmf_to_pandas

(8) mine_block_model

(9) set_variable

(10) create_variable

(11) strings_to_dxf

(12) dxf_to_strings

5 应用实例

[例子1] 下面的代码用来手工建立一个块体模型,也可以按照这种方法读取一个大的数据集,代码执行结果如下图所示。

    import pandas as pdimport miningpyblockModelData={'x': [5,5,15],'y': [5,15,25],'z': [5,5,5],'tonnage': [50,100,50],}blockModel=pd.DataFrame(blockModelData)blockModel.plot3D(xyz_cols=('x','y','z'),dims=(5,5,5), col='tonnage', }

    [例子2] 下面的代码读取一个csv文件,然后生成块体模型,如下图所示。

      import pandas as pdimport miningpyblockModel = pd.read_csv('block_model.csv')blockModel.export_html(    path='blockmodel.html',    xyz_cols=('x', 'y', 'z'),    dims=(1, 1, 1),  )

      [例子3] 下面的代码读取一个dxf文件,然后进行三角化处理,生成表面模型。

        import hashlibimport osimport miningpyimport ezdxfwith open('block_model.dxf') as bm:    dxf_raw = bm.read()dxf_raw = dxf_raw.replace("\r\n", "\n")temp_file=hashlib.md5(dxf_raw.encode(encoding='UTF-8')).hexdigest()with open(temp_file, 'w') as file:    file.write(dxf_raw)miningpy.export_dxf_html(temp_file, output='dxf_triangulation.html')os.remove(temp_file)

        来源:计算岩土力学
        FLAC3D3DECParaView
        著作权归作者所有,欢迎分享,未经许可,不得转载
        首次发布时间:2022-11-26
        最近编辑:1年前
        计算岩土力学
        传播岩土工程教育理念、工程分析...
        获赞 123粉丝 881文章 1732课程 0
        点赞
        收藏
        未登录
        还没有评论

        课程
        培训
        服务
        行家

        VIP会员 学习 福利任务 兑换礼品
        下载APP
        联系我们
        帮助与反馈