基于开源组件的矿井GIS一张图系统设计与实现

2020-10-22 11:27黎佩东
煤炭工程 2020年10期
关键词:开源矿井轨迹

黎佩东,许 金,何 桥

(中煤科工集团重庆研究院有限公司,重庆 400039)

煤安监函[2016]5号《煤矿安全监控系统升级改造技术方案》明确要求煤矿安全监控系统必须支持多网、多系统融合,必须实现监测监控与GIS技术的有机融合。当前的煤矿安全监控系统,多采用组态软件来实现井下巷道与设备等要素的集中展示[1-3]。组态软件不具有缩放及缩放后改变要素样式的功能,当矿井结构足够复杂,在有限的界面大小内,会出现巷道交叉重叠、设备堆叠排放的情况。不能很好的平衡信息的全面与界面的简要,是组态软件在矿井综合展示业务中的局限。

由此本文在对比现有成熟的GIS组件中,选择PostGIS、Geoserver、Openlayers三款开源GIS组件组合,搭建出了一款能够实现巷道空间位置展示、实时监测设备参数、人员井下轨迹回放的多系统可用的矿井一张图模块,以较低的开发与分发成本满足了新一代矿井安全系统对图形化显示的要求。

1 矿井GIS一张图原理与架构设计

1.1 开源GIS组件选择

现有的市面上商业GIS组件,无论是美国ESRI公司ARCGIS系列还是国内的超图系列软件,其收费方式都是基于分发数来决定[4,5]。考虑到煤矿监控系统对安全的高要求和GIS一张图的推广性,本文全部采用开源GIS组件,进行二次开发。为了安装与部署的方便性,矿井GIS一张图组件应能满足B/S架构进行开发设计。现有国内外使用最广泛,最稳定的开源架构为PostGIS+Geoserver+Openlayers[5-7]。

PostGIS是PostgreSQL的空间数据扩展[8,9],一方面它提供了Geometry数据格式用于储存有空间参考的点线面矢量数据,另一方面它也提供了上百个空间运算的SQL方法,可用于空间数据的转化、关系运算、处理、编辑等功能,配合PostgreSQL数据库的Function类型与PgSQL语言,使得PostGIS成为了当前唯一的内部可编程的空间数据库。

Geoserver是现有开源GIS服务端中功能最丰富的一款,支持包括PostGIS数据库在内的多种地理数据来源,支持wmts、wms、wfs等多种OGC标准的数据发布接口,尤其是其支持slg样式语言对地图样式的修改、支持wfs-t数据修改接口、支持PostGIS中使用SQL进行数据查询等,对于实现矿井一张图模块的全部功能提供了非常强大的支撑[10]。

Openlayers本质是一种WebGIS API。在网页上实现可缩放平移的地图空间的构建,并通过接口获取已经渲染完毕的地图放置其中,或者使用未渲染矢量数据内部渲染展示,是WebGIS API区别与其他网页组件的基本能力,也是在网页上实现地图展示与交互必备工具。Openlayers作为现有开源WebGIS API中历史最长久、功能最丰富的一款,其对于OGC接口的完整支持是搭建开源GIS模块的最佳选择[11-13]。

由此本文选择开源组件PostGIS+Geoserver+Openlayers进行二次开发。

1.2 架构与原理

矿井一张图模块的目的是对井下多类系统设备和实时监测数据的分层展示等。基本架构图如图1所示。

图1 GIS一张图架构

GIS一张图主要包含基于Openlayers的前端网页、GIS服务器、空间数据库和外部接口。数据展现的一般流程为前端通过Openlayer发出请求,Geoserver接受请求,并调用PostgreSQL查询数据,并经过PostGIS运算分析,将结果再由PostgreSQL返回给Geoserver服务器,然后经过渲染或处理传递给Openlayers,最后呈现给用户。具体如下:

1)基于Openlayers的前端网页。前端界面是整个一张图模块的核心,一方面它分别由外部口获取业务数据,由GIS服务器获取地理数据,综合两种数据生成最终展示图形;另一方面它接收用户的编辑操作,并将编辑结果上传至GIS服务器用于显示。以Openlayers API生成的地图为核心,显示获取自GIS服务端的已经渲染完成的巷道图,并根据图层控制树的筛选,显示井下的各类设备以及工作面。

2)GIS服务器。GIS服务器是连接前端网页与空间数据库的桥梁,不同于一般程序无定型的数据结构与前后端交互方式,GIS数据的格式相对复杂且固定,于是一个不需要编程的通用GIS服务端程序便应运而生,而且逐渐具备了独有的常用功能,比如矢量数据渲染为栅格图像并发布。

在一张图模块中,Geoserver服务器对外发布了设备、巷道、工作面的数据接口,提供编辑与查询;发布了人员轨迹生成与巷道拓扑生成的调用接口;通过编写slg渲染样式,发布了渲染后的巷道图像。

3)空间数据库。在一张图模块的架构中,PostGIS空间数据库,承当空间数据存储与空间运算两大功能。其支持的Geometry空间数据格式是便捷、完整存取设备位置、巷道走势、工作范围的保证,也是进行空间运算基础。

4)外部接口。一张图模块的对外接口都是在网页端提供的,主要是为了适配多系统调用减少耦合,分为数据获取接口与功能调用接口:数据获取接口是返回JSON数据的Webservice接口,包括设备的定义与监测数据接口、工作面的定义与监测数据接口;功能调用接口是前端交互的Post Message接口,包括着重显示设备接口、人员轨迹回放接口、设备点击事件回调接口等。

1.3 关键算法

矿井一张图的GIS展现,主要涉及巷道拓扑生成算法,以实现矿井巷道的数字化;人员轨迹回放算法,以实现人员轨迹的融合与回溯;井下各要素空间关系算法,以确定并展现监测点与巷道的空间位置。

1.3.1 巷道拓扑生成算法

用户在前端绘制巷道的时候一般不会考虑到巷道的拓扑是否完整与一致,比如通用数据结构中要求相互连接的三叉、四叉路口必须由三条、四条独立的巷道端点重合而成,而一般用户绘制时只会在主巷道上横画一条新巷道出去,不会做将主巷道打断这一步骤。

为解决用户自绘制巷道拓扑不能使用的问题,提出巷道拓扑生成算法,算法会根据巷道坐标位置自动提取与每一条巷道相交的巷道,并进一步提取相交巷道的端点与拐点,最后使用端点与拐点的集合对巷道进行打断,将打断后的巷道分别保存拓扑表,如图2所示。

图2 巷道拓扑生成算法原理

通过本算法,可以在不要求用户按照拓扑标准绘制巷道、不增加用户绘制工作的情况下,又能获取完整的巷道拓扑数据,以支持巷道路径运算。

1.3.2 人员轨迹回放算法

为保障煤矿人员的安全,需要对煤矿进行活动轨迹进行反演。而当前的人员定位系统多为非精确定位系统,因此获取的人员轨迹只能大致的位置。考虑煤矿井下实际环境以及作业人员实际活动情况,通常来说两个监测点之间的最短巷道距离为作业人员在此监测点的实际轨迹。因此本系统主要基于最短路径算法实现人员轨迹回放。具体实现原理如图3所示:

图3 井下人员轨迹回放原理

1)通过WCF等相关接口从煤矿安监控系统获取人员轨迹列表数据,通过PostSQL获取人员定位设备位置。

2)主程序向前端页面发送轨迹回放指令及人员经过的定位设备列表,前端网页执行显示变化为轨迹回放作准备,并将所有经过的定位设备标注在地图上。

3)前端页面向Geoserver发送定位设备列表数据,Geoserver向PostGIS调用人员轨迹生成算法。

4)在人员轨迹算法中,会遍历获取列表中定位设备的位置,调用以Dijkstra算法为核心的两点间最短路线算法,拼接n-1条最短路径作为人员在井下的完整轨迹输出。

5)Geoserver将人员轨迹算法的结果返回前端页面,前端页面将完整轨迹显示在地图上,并使用定时函数定距前进的方式实现人员图标沿轨迹移动的动画。

从图3可知人员轨迹回放的核心为两点间最短路径的生成。本文基于巷道拓扑数据为基础,采用Dijkstra实现最短路径的生成,拓扑数据是由全部岔路口组成的节点表,以及链接各节点的线段表组成。其算法步骤如下(其中顶点为岔路口组成的节点):①初始时,S只包含源点,即S={v},v的距离为0,U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则正常有权值,若u不是v的出边邻接点,则权值为∞;②从U中选取一个距离v最小的顶点k,把k,加入S中(该选定的距离就是v到k的最短路径长度);③以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值的顶点k的距离加上边上的权;④重复步骤b和c直到所有顶点都包含在S中。

1.3.3 井下各要素空间关系的算法

一方面井下各要素都实际只存在于巷道中、相互间只能通过巷道联系;另一方面用户在绘制巷道与布置设备、关键点时,既可能为了查看方便将要素放置在巷道外,也可能为了美观不按照真实距离比例绘制巷道与布置要素。计算井下各要素空间关系时,必然要考虑到上述情况做特殊处理。

如图4所示,计算设备、关键点与巷道的关系时,首先取与之相交的巷道作为所在巷道,没有相交时,取距离最近的巷道作为所在巷道。计算设备与关键点的关系时,首先去设备与关键点在临近巷道上的最近点作为实际存在点,再获取两个最近点的最短路径,取最短路径的长度作为设备与关键点的实际距离。

图4 井下各要素空间关系算法

井下各要素的空间关系,除了作为其他算法的中间参数之外,也会输出到外部程序作为判断设备安装合规的条件使用。

2 系统实现

2.1 GIS一张图实现

GIS一张图实现流程如图5所示,GIS一张图展现的基本操作步骤为,首先结合煤矿安全监控系统图、矿井通风系统图和采掘工程布置图人工绘制GIS巷道,实现巷道的数字化。绘制巷道时,需要设置巷道的属性,包括巷道类型、所属工作面、所属开采水平、风向、巷道长度、巷道高度、巷道断面类型等。绘制完成后,系统会运用巷道拓扑生成算法检查并生成巷道拓扑关系。然后需要将瓦斯、温度、风速、人员、局扇等进行图元化,即设置各自的图标,并手动绑定到巷道上,然后系统调用井下各要素关系算法,确定巷道与设备的空间位置关系。然后,根据相关规程整理得到各巷道设备安装规则集,即不同矿井、不同类型的巷道应安装的传感器类型、个数。依据规则集和已绘制的巷道设备关系,系统自动评判巷道设备绘制是否合规,并给出提示。最后通过数据接口,将实时采集的数据展现在矿井GIS一张图上。由于传感器类别不同,同时分类别设置了巷道的属性,所属水平,GIS一张图可以根据选分层展现巷道、分类别展现设备等。

图5 GIS一张图实现流程

2.2 系统功能

为确保本系统的独立性和安全性,本系统采用相对独立的方式进行开发和部署。本系统采用Java语言进行开发,Tomcat作物应用服务器容器。开发完成的GIS一张图可以完全嵌入其余任何系统,实现与其他系统的适配。对方系统只需按照约定格式提供数据和按照约定协议进行交互即可。本系统采用addEventListener() 方法,实现事件监听,进行方法与接口的调用。GIS一张图实现的主要功能如图6所示。

图6 GIS一张图系统主要功能

1)矿井巷道空间位置展现。GIS一张图是基于矿井真实巷道布置转化而来。通过GIS一张图可以直观的掌握煤矿的各类巷道分布及巷道间的空间位置关系和运输系统、通风系统、排水系统等矿井各大生产系统的布置。

2)实时数据展现。本系统通过WCF、WebAPI等接口的方式从煤矿安全监控系统、人员定位系统等获取数据,并动态展示实时监测数据。系统采取分系统分类别展示监测点及数据,用于可以随时选择只展示某几个系统或某几类数据。数据展示采用主动获取和被动接受的两种方式。主动获取方式为GIS一张图界面每间隔一定时间去请求各类生产系统,获得最新的数据,并展现到界面上。被动方式为GIS一张图设置监听器,时刻监听是否有新的数据到来,并将监听到的数据刷新到界面上。

对于获取的报警数据,根据报警级别采用不同的颜色进行展现,同时针对不同类别的异常数据可以设置语音报警,以提示用户实时了解矿井安全生产监测状态。

3)人员轨迹回放。采用人员轨迹回放算法,可以快速自动实现历史作业人员的轨迹回放。

4)井下设备关系空间展示。根据获取到的井下交换机环网、分站和传感器数据及对应的设备拓扑关系通过连线的方式展现 GIS一张图上。同时根据获取到控馈关系、传感器断电影响范围等通过关系图和影响区域图的方式展现在GIS一张图中。当某一个传感器超上限断电时,传感器会自动变为报警状态颜色,同其断电影响范围内会突出显示,影响范围内的井下人员也会突出显示在GIS一站图中。

5)安全风险信息展现等。由于GIS具有很强的扩展性和兼容性,该系统可以接入煤矿所有生产系统、监测监控系统和安全管理系统以及视频等。

3 系统应用

该系统现在主要应用在KJ90X煤矿安全监控中,用于支持融合不同厂家的人员定位系统、广播系统、LED显示屏等,并实现各类数据的展现和查看,同时也根据相应授权对各类系统发送指令。由于本系统的相对独立性和可扩展性,本系统也应用在煤矿监管监察中,为监管人员实现煤矿各类监管参数的便捷查询、实时分析提供支撑。

4 结 论

1)矿井GIS一张图系统是基于开源PostGIS+Geoserver+Openlayers组件二次开发构建,实现了矿井巷道与监测监控设备的数字化和井下多系统业务集成与“一张图”数据展示。

2)该系统将各类监测监控系统数据通过一张图的形式展现,使得各类数据的时空相关系更加直观,监管监察人员可以直观的掌握各类数据状态和相邻空间数据状态,从而可为矿山安全防控的信息快速查询,指导决策提供支撑。

3)由于该系统完全采用开源组件开发,且通过外部接口的方式与煤矿各类业务系统进行数据交互,既保持了各类业务系统原有的封闭性和安全性,又具有较强的适用性和推广性。

猜你喜欢
开源矿井轨迹
轨迹
轨迹
五毛钱能买多少头牛
2019开源杰出贡献奖
以机器人研发应用引领矿井“四化”建设
建立三大长效机制 保障矿井长治久安
轨迹
进化的轨迹(一)——进化,无尽的适应
高瓦斯矿井防治瓦斯异常涌出措施的应用
大家说:开源、人工智能及创新