地震数据采集处理知识检索平台开发

2023-08-04 06:54胡露露王子国李伟张亮陈冠毅罗胜杰
石化技术 2023年7期
关键词:参数信息工区开源

胡露露 王子国 李伟 张亮 陈冠毅 罗胜杰

中海石油(中国)有限公司湛江分公司 广东 湛江 524057

南海西部油田地震数据经过多轮采集、重处理,存在大量地震体,地震采集时间从1981年至今已经有40多年的历史,采集地震体超过100个区块,每次采集的地震又经过多轮重处理,众多的地震体导致科研人员无法迅速了解全部地震数据信息;不同地震体大小、采集处理参数、用途等,研究人员锁定相关参数亦困难;且地震采集处理数据均分散在个人电脑中,无法进行统一的管理。在缺乏统一平台对地震数据管理的背景下,一方面勘探开发跨科室人员难以清晰认识各油田地震采集处理历史,导致重处理数据利用率不高;另一方面,分散的数据不利于进一步创新性的数据分析挖掘工作。因此,急需构建地震数据管理平台。

开发基于开源数据库的地震采集处理知识检索平台,采用开源数据库解决卡脖子问题,达到底层数据库自主可控。且开发地震采集处理知识检索平台,使得科研人员可以快速检索到所需要的采集、处理知识,提高地震数据利用率。开发检索平台显示界面能直观地展示历年的采集、处理信息,将分散的采集数据集中到统一平台,与储量、产量等大数据进行分析进行数据挖掘,为科研生产提供技术支撑。

1 软件架构

1.1 设计方案

基于对平台软件功能需求的分析,设计了软件所要采用的技术路线,如图1所示。平台使用MVC三层架构[1-2],数据存储使用MyBatis框架[3-4],SSH开源框架开发,属于B/S(浏览器/服务器)软件结构。

图1 软件设计方案

1.2 数据库设计

常见的数据库模型有关系型数据库和非关系型数据库两种,本软件平台采用关系型数据库。主流关系型数据库管理系统有Oracle、MySQL、SQL Server、Postgre、DB2等,结合研究院现有数据类型及结构,本平台软件采用PostgreSQL作为后台数据库。

在数据库可视化软件中创建一个数据库,并根据需求设计了5个数据表admin、ac、handle、handle_area,well,分别用来存储用户信息、地震采集数据信息、地震处理数据信息、处理工区信息、井数据信息。

1.3 数据存储

在服务器端编写数据存储程序,将txt、excel等格式的地震采集处理数据解析并存储到Postgre数据库中。编程语言使用Java,存储过程使用Mybatis框架代替了传统的JDBC(Java Data Base Connectivity)数据库连接。

MyBatis是一个开源的持久层框架,它支持自定义的SQL语句查询、高级映射和存储过程,通过注解文件将Java对象或接口映射为数据库中的记录,免除了几乎所有的JDBC程序以及获取参数配置和获取结果集的工作。MyBatis在软件开发三层结构(MVC)的基础上,从业务逻辑层中出持久化层,专门负责数据的持久化操作,使业务逻辑层可以真正地关注业务逻辑的开发。MyBatis相比较于JDBC,在数据库的连接和释放、SQL语句、结果集和缓存方面,表现更加优异。

1.4 Web 端软件开发

Web端应用程序采用MVC架构模式,SSH开源框架开发。SSH由Spring、Struts2和Hibernate三部分组成。Struts2是Struts1技术和WebWork技术的结合,它通过拦截器处理HTTP请求,然后经过Action映射器查找需要调用的Action对象并返回Action对象的代理,Action代理对象从配置管理器中读取Struts2的相关配置,读取完毕后从Action容器中再调用Action对象,最后处理完请求,返回相应的JSP或HTML视图。

Hibernate是一个开源的对象关系映射框架,对JDBC进行了轻量级的对象封装,使程序开发人员可以利用面对对象的编程思想对数据库进行操作。在软件开发三层架构(MVC)的基础上,从业务逻辑层中分离出数据持久化层,使业务逻辑层可以真正的关注业务逻辑的开发。

Spring是一个开源的Java开发框架,核心技术是控制反转和面向切面编程。Spring在表现层提供了与Struts2框架的整合,在数据持久化层可以整合Hibernate技术,业务逻辑层可以记录日志和管理事务等。SSH框架不仅实现了MVC软件架构中Model、View、Controller的彻底分离,而且实现了数据持久化层和业务逻辑层的分离,大大降低各层之间的耦合性,提高了Web程序开发的编程效率,也使后期程序的维护变得更加容易。

1.5 登陆界面与主界面

用户经过Web端软件的登录验证,才能进入到主页面。在登录页面获取用户账号和密码信息,点击登录按钮发送登录动作请求,此动作请求会匹配到AdminLoginAction对象并执行该对象的execute()方法。如果用户账号或者密码数据为空,把此报错信息添加到文件中,如果不为空,调用相关服务,判断数据库中是否有与之匹配的用户账号和密码,如果不存在,把此信息添加到错误动作中,如果存在,用户登录成功,进入到主页面。

用户完成登录验证后进入到主页面,主页面包含查询地震采集信息、查询地震处理信息、查询处理工区信息和井信息4个功能模块。

2 查询地震采集信息

在查询地震采集信息功能模块,Entity(实体类)层创建Ac类,地震采集参数信息类;Dao层(数据访问层)创建AcDao类,负责对数据库CRUD的方法;Service层(业务逻辑层)创建AcService类;Action层(控制层)创建不同地震采集查询参数类,用来显示查询地震采集参数信息。

查询地震采集参数信息的程序流程如图2所示。用户在主界面发送查询请求,匹配显示地震采集参数信息类对象,执行该对象的execute()方法,然后调用acService服务查询相关信息,并将查询结果转发到信息显示页面。在地震采集参数信息显示页面,科研用户可输入关键字查询相应数据信息。

图2 查询地震采集参数信息的程序流程图

3 显示工区位置信息

在查询工区数据信息显示页面,使用了百度第三方开源库作为可视化工具。考虑到信息安全公司内网环境下,需要处理地图离线化问题,这里解决思路有组织验证ak码、修改BMapAPI加载地址为本地文件、跳过远程瓦片下载,直接爬取本地地图瓦片。在相应的Entity层、Service层,Action层编写相应的业务类。查询工区信息时用户在主界面发送查询工区请求,匹配显示工区数据类对象,执行该对象的execute()方法,然后调用acService服务查询相关信息,并将查询结果转发到信息显示页面。

在查询工区显示页面这个界面,科研用户可以查询工区和并结合百度地图,直观的查看工区所处的位置、范围大小等;也可对地震工区做进一步数据分析挖掘工作,例如工区总共做了多少次重处理、重采集、采集工区哪些区域做了重处理、多个重采集和重处理工区之间的重叠区域等。

4 主要技术创新点

(1)首次搭建了研究院专属的地震采集处理信息统一后台管理库,并将分散、繁杂的地震数据信息存储到PostgreSQL数据库中。

(2)以B/S软件架构开发了一款地震采集处理平台检索软件,科研人员可根据关键字快捷地查询所需的关键数据信息,提高工作效率。

(3)使用功能强大、开源且国产的百度地图作为可视化第三方库,并在公司内网环境下,成功探索出百度地图的编程离线使用方法,供科研人员在地图上直观查看历年地震采集处理信息,有力支撑了勘探开发科研业务。

猜你喜欢
参数信息工区开源
基于BIM技术的建筑构件参数信息交互研究
基于SolidWorks和Excel二次开发零部件参数化设计研究
关于铁路编组站减速顶工区标准化建设研究
BIM参数信息在管网运维平台上的应用研究
五毛钱能买多少头牛
模拟输注系统的设计与应用
精确发现溢流研究及在西北工区现场应用
铁路隧道定额工区长度和通风管线路工程量计算规则探讨
耀眼的橘红色——河南省焦作市公路局养护工区养护机械队速写
大家说:开源、人工智能及创新