1. 引言
在测井领域,测井数据可视化是通过图形方式将数据信息形象化展示给测井分析家的重要手段 [1] 。在采集、处理、解释等过程中会产生大量的离散类数据,比如解释结论、固井结论、钻井取心等,物理上以表格形式存储。随着测井业务的发展,离散类数据类型不断增长,越来越多。测井可视化能够个性化的展示各类离散数据,也是测井软件可视化重要内容。每类离散数据类型含义不同,要求的绘制效果也不同,因为离散数据的变化性和不确定性,针对每种离散数据类型开发相应的测井图件时效性不足,且开发工作量巨大,很难及时满足现场需求。因此设计和实现一种测井通用离散数据可视化图件,允许现场高度自定义各类离散数据成图,能够满足现场快速响应各类离散数据可视化需求,提升测井成图的灵活性,促进测井业务发展,助力测井数字化转型。
2. 软件设计

Figure 1. Unified visualization system architecture
图1. 统一可视化系统结构
测井统一可视化系统结构如图1所示 [2] ,可视化图件以不同的图形方式给用户提供不同的描述信息;交互分析为用户提供便捷高效的交互服务;消息总线负责绘图内部以及绘图与外部所有的消息交换;矢量图符通过定义一套矢量图符描述语言及解析引擎,实现石油地质符号高质量绘制;绘图缓存通过构建数据和绘图两级缓存机制,实现了可视化高效绘制;序列化提供绘图对象列表及其属性保存和恢复;绘图引擎通过抽象绘制定义了绘制点、绘制线、绘制圆、绘制文本等抽象基本绘制动作;可视化接口服务于二次开发,为用户可访问的可视化接口。可视化服务是可视化系统基于ICE封装的成图服务。
测井通用离散可视化图件是可视化图件数据对象的一种,是可视化图件绘图基础库的核心组成部分之一,具有绘图头、绘图体、数据源是离散类数据等特点,是针对测井离散数据的通用可视化图件,具有高度自定义、高度可扩展等特点。
3. 系统开发与实现
3.1. 图件设计
测井通用离散数据可视化图件基于可扩展标记语言XML定义了一套离散数据绘制描述脚本及解析成图,图件定义了图件描述、是否可编辑、数据源、是否移动限制、图元等描述脚本,基于离散数据绘制描述脚本可以组织任意形状的图形,支持任何离散类数据,成为支持测井离散数据可视化的通用图件。同时为图件定义了添加、切分、删除等交互操作事件,支撑鼠标交互。
图件描述:定义了图件的名称;
是否可编辑:定义图件是否允许鼠标交互编辑;
数据源:定义了图件对应的数据源,对应测井离散数据类型。
是否移动限制:定义了离散数据深度边界鼠标拖动时是否允许越过上下深度层。
图元:如图2所示,图元定义了图像、直线、多边形、字符串、椭圆、弧、弦、饼等类型。

Figure 2. Definition of graphic elements for general discrete data visualization
图2. 通用离散数据可视化图件图元定义
3.1.1. 画笔定义
画笔属性包括颜色、线宽、线型等。颜色采用#RRGGBBAA格式表示,线宽采用序号表示,代表0 mm~1 mm的线宽,线宽定义见表1。线型采用序号表示,线型序号定义见表2。
3.1.2. 字体定义
定义了字体的名称、字体大小、加粗、斜体、下划线、删除线等属性。
3.1.3. 图像定义
图像图元定义了图像的数据源、是否绘制图像边框、边框画笔、平铺模式、图像范围等属性,图像使用矢量图符绘制,实现最佳绘制效果,矢量图符以图符集名称和图符名称唯一标示 [3] ,效果示例如图3所示。
数据源:定义图符对应的离散数据来源,即定义对应的离散表格的列,同时指定图符集,比如LITHO @result,即为LITHO图符集,图符名称对应表格的result列。
边框画笔:绘制边框时所使用的画笔属性,线型、线宽、颜色。
平铺模式:定义图符绘制模式,包括单符号、纵向平铺,横向平铺,全方向平铺等模式。
图像范围:定义图像绘制范围,相对位置。离散数据深度段和所在容器道共同构成绘制区域,横向及纵向方向表示为0~100,横向上0表示左边界,100表示右边界;纵向上0表示上边界,100表示下边界。在此基准上定义图像绘制范围,比如HInitPos = “0~100”VInitPos = “0~100”定义的范围即为离散数据深度段和所在容器道共同构成绘制区域。
3.1.4. 直线定义
直线图元定义了画笔、起点位置、终点位置、箭头样式、箭头尺寸等属性,效果示例如图4所示。
画笔:定义了直线的线型、线宽、颜色;
起点位置:定义了直线的起点,相对位置;
终点位置:定义了直线的终点,相对位置;
箭头样式;定义了不显示、起点、终点、两端等箭头样式,默认不显示;
箭头尺寸:定义箭头的尺寸大小。
3.1.5. 多边形定义
多边形图元定义了画笔、位置点、是否闭合、是否填充颜色、填充颜色、是否显示箭头、箭头尺寸等属性,效果示例如图5所示。
画笔:定义了直线的线型、线宽、颜色;
位置点:定义了构成多边形的位置点,均为相对位置,比如position = “0, 0; 100, 0; 100, 100; 0, 100”,定义的范围即为离散数据深度段和所在容器道共同构成的矩形区域;
是否闭合:定义了多边形是否构成闭合区域,默认闭合;
是否填充颜色:定义多边形是否填充颜色,默认否;
填充颜色:定义多边形的填充颜色;
是否显示箭头;定义了多边形是否在位置点沿着点顺序方向绘制箭头;
箭头尺寸:定义箭头的尺寸大小。
3.1.6. 文本定义
文本图元定义了数据源、边框显示、边框画笔、文本内容、背景是否填充、背景色、颜色、水平对齐、垂直对齐、角度、字体、分栏、自动换行、自适应尺寸,字体颜色、绘制范围等属性,效果示例如图6所示
数据源:定义了文本对应的离散数据来源,即定义对应的离散表格的列;
水平对齐:定义了靠左对齐、水平居中、靠右对齐等方式;
垂直对齐:定义了靠顶对齐、垂直居中、靠底对齐等方式;
角度:定义了文本绘制的角度,范围是0~360,逆时针增大,默认0度,水平右方向;
分栏:定义文本自动分成几栏显示,默认1栏,即不分栏;
自动换行:定义了当文本长度超过显示范围宽度时文本自动换行显示;
字体颜色:定义绘制文本的颜色。
3.1.7. 椭圆定义
椭圆图元定义了画笔、矩形范围、填充颜色等属性,效果如图7所示
画笔:定义了直线的线型、线宽、颜色;
矩形范围:定义椭圆绘制范围,相对位置;
是否填充颜色:定义多边形是否填充颜色,默认否;
填充颜色:定义多边形的填充颜色。
3.1.8. 弧定义
弧图元定义了画笔、矩形范围、起点角度、结束角度等属性,效果示例如图8所示。
画笔:定义了直线的线型、线宽、颜色;
矩形范围:定义了弧的绘制范围,相对位置;
起点角度:定义弧的起始位置点,范围是0~360,正值表示逆时针,负值表示顺时针,水平右为0度;
起点角度:定义弧的结束位置点,范围是0~360,正值表示逆时针,负值表示顺时针,水平右为0度。
3.1.9. 弦定义
弦图元定义了画笔、矩形范围、起点角度、结束角度、是否填充颜色、颜色等属性,效果示例如图9所示。
画笔:定义了直线的线型、线宽、颜色;
矩形范围:定义了弧的绘制范围,相对位置;
起点角度:定义弧的起始位置点,范围是0~360,正值表示逆时针,负值表示顺时针,水平右为0度;
起点角度:定义弧的结束位置点,范围是0~360,正值表示逆时针,负值表示顺时针,水平右为0度;
是否填充颜色:定义多边形是否填充颜色,默认否;
填充颜色:定义多边形的填充颜色。
3.1.10. 饼定义
饼图元定义了画笔、矩形范围、起点角度、结束角度、是否填充颜色、颜色颜色等属性,效果示例如图10所示。
画笔:定义了直线的线型、线宽、颜色;
矩形范围:定义了弧的绘制范围,相对位置;
起点角度:定义弧的起始位置点,范围是0~360,正值表示逆时针,负值表示顺时针,水平右为0度;
起点角度:定义弧的结束位置点,范围是0~360,正值表示逆时针,负值表示顺时针,水平右为0度;
是否填充颜色:定义多边形是否填充颜色,默认否;
填充颜色:定义多边形的填充颜色。
3.2. 序列化
通用离散数据可视化图件采用统一可视化系统序列化机制,实现图件自身的序列化和反序列化,提供图件的保存和恢复。图件定义了版本标识,保证在版本升级后实现新绘图文档向上兼容 [4] 。
可视化系统存储组织逻辑如图11所示,存储节点类型包括画布对象、容器对象、注释对象、数据对象等类型。根节点定义为画布对象,是整个绘图的容器,负责管理所有绘图对象,负责画布、绘图道、深度道、注释对象等对象管理。容器对象可以容纳数据对象,负责道、深度道、注释对象、数据对象等对象管理。数据对象是用来绘制具备数据源的图件。注释对象提供线条、矩形、椭圆和手画线等信息注释。通过图元层层嵌套,组合成丰富多样的综合图件 [5] 。
可视化系统存储采用可扩展标记语言XML,文件以
为根元素,同时记录版本信息。根元素的子元素包括图头、成果表、交会图、综合绘图、文档串打、平面图、油气藏剖面图等成图类型。XML存储文件中,绘图对象使用XML元素Element表示,Element有若干属性构成。绘图对象属性使用XML属性Property表示,由属性类型、绘图对象属性值、绘图对象属性名称、枚举列表、是否可编辑、显示文本等构成。
3.3. 统一数据访问接口
通用离散数据可视化图件基于测井大数据平台的统一数据访问接口实现测井资料、地质资料、录井资料、钻井资料、岩心分析等离散数据的读写访问。图件使用统一的数据访问接口,无需关注统一数据访问接口底层实现细节。当统一数据访问接口支持的数离散据扩充、更改等离散数据格式发生变化时,通用离散数据可视化图件所支持的离散数据自动扩充,不影响图件的业务逻辑 [6] 。
3.4. 矢量图符
石油地质符号是预定义的由基本几何图形构成的图形块,具有特定的名称,作为制图基本图形为图件反复引用,是可视化系统重要组成部分。可视化系统基于XML定义了一套矢量图符描述语言及解析引擎,并形成了解释结论、固井结论、岩性、含油、管柱、井型等多套矢量图符集,通用离散数据可视化图件通过和图符集名称和图符名字引用图符,实现矢量化地质符号绘制,不会受到矢量图形调整影响,图像始终保持清晰,实现最佳绘制效果。
3.5. 通用离散数据可视化图件解析引擎
实现了离散数据可视化图件解析引擎,基于离散数据绘制描述脚本,解析图件基本描述、图元、属性及交互事件等内容,数据源转化为真实的离散类数据源路径,并基于统一数据接口获取真实数据;根据图符名称定位为具体的矢量图符;图元描述转化为绘制动作;交互属性转化为添加、切分、删除等交互操作事件。图件整体以独立图件的形式对外提供服务。最终根据用户定义的离散数据绘制描述脚本解析成任意形状的图形,实现需要的绘图效果。
3.6. 通用离散数据可视化图件实例
通用离散数据可视化图件油气结论的脚本定义示例如下:
<油气结论>
油气结论
OG_RESULT
TRUE
TRUE
上述脚本定义了油气结论的绘制方式,数据源来至任何OG_RESULT离散表格,容器道左边40%位置绘制油气图符,图符由系统定义表提供绘制和填充方式,支持矢量图片的平铺、纵向填充、横向填充和拉升填充,道区域右边60%区域绘制结论解释层号。该对象的单个油气结论可通过鼠标一定顶底界面,且能保证所有结论深度从上大小顺序,且深度不重合。
该油气结论绘制效果如图12所示。

Figure 12. Logging general discrete data visualization chart ogresult example
图12. 通用离散数据可视化图件解释结论实例
3.7. 应用
目前,通用离散数据可视化图件是统一可视化系统的基础内容之一,统一可视化系统作为CIFLog-LEAD产品的核心底层之一已经在现场大批量应用2万井次以上,现场自定义离散数据绘制类型达数十种,图件的扩展性和自定制性受到了现场的肯定。成图实例如图13所示。

Figure 13. Unified visualization system chart example
图13. 统一可视化系统成图实例
4. 结论
本文介绍了通用离散数据可视化图件构成,以及图像、直线、多边形、椭圆、文本、弧、弦、饼等各类图元定义,基于定义的图元通过解析引擎可以实现各种离散数据绘制效果,通过图件序列化实现图件的保存和恢复,最后通过实例给了解释结论离散对象的定义及效果。本文提出的测井通用离散数据库设计和实现,未在国内外同行业软件中有此能力,是一种针对不断变化的离散数据所实现的创新设计及实现,允许现场高度自定义各类离散数据绘制,能够满足现场快速定制各类离散数据可视化的需求,增强了软件的健壮性及适应性。目前的通用离散数据可视化图件的定义是基于XML文件的配置,编辑便利性有所欠缺。下一步,计划开展通用离散数据可视化图件的可视化交互式工具开发,通过工具更高效便利的定制自定义图元,提高图件定制效率。
NOTES
*第一作者。
#通讯作者。