基于SQLite数据文件的配网GIS自动成图方法
2015-09-14胡睿瑾
胡睿瑾
(云南电网有限责任公司昆明供电局,昆明 650011)
基于SQLite数据文件的配网GIS自动成图方法
胡睿瑾
(云南电网有限责任公司昆明供电局,昆明 650011)
主要阐述了从SQLite数据包到配网GIS系统中电网设备数据的自动转换过程。包括通过SQLite数据文件实现移动端和配网GIS系统的数据交互,在配网GIS系统内实现SQLite文件的读取、数据验证、自动成图、自动建立电气拓扑等一系列的自动操作。
SQLite;配网GIS;自动成图
1 前言
配网GIS系统作为配网设备图形数据、属性数据、拓扑数据的管理平台,可以为配网工作人员提供完整的配网网架信息、配网设备信息,为配网管理提供信息化手段。但由于配网设备数量巨大,如采用传统的数据维护手段,逐个地进行手工录入和维护,需要大量的数据录入人员,在配网GIS系统中进行长时间的数据维护工作,且存在维护工作量大、投入资金多、容易出错的问题。
另一方面,随着智能移动设备的发展,通过移动端进行数据采集的技术也日趋成熟。通过移动端进行现场采集,再从移动端将数据导入配网GIS进行自动成图就成为了业务发展的迫切需求。
2 SQLite简介
SQLite是一款轻型的数据库,实现了自给自足的、无服务器的、零配置的、事务性的SQL数据库引擎,是遵守ACID的关系型数据库管理系统,它的设计目标是在嵌入式设备使用,目前已经在很多嵌入式产品中使用[1]。其占用资源非常的低,在嵌入式设备中,只需要很低的内存就够了,并且能够支持Windows/ Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如C#、PHP、Java等。
SQLite具有以下特点:
·SQLite不需要配置,这意味着不需要安装或管理。
·一个完整的SQLite数据库是就是一个单一的跨平台的磁盘文件。
·SQLite是非常小的,是轻量级的,完全配置时小于400KiB,省略可选功能配置时小于250KiB。
·SQLite是自给自足的,这意味着不需要任何外部的依赖。
·SQLite事务是完全兼容ACID的,允许从多个进程或线程安全访问。
·SQLite支持SQL92(SQL2)标准的大多数查询语言的功能。
·SQLite使用ANSI-C编写的,并提供了简单和易于使用的API。
·SQLite可在 UNIX(Linux,Mac OS-X,Android,iOS)和Windows(Win32,WinCE)中运行。
基于以上的特点,本方法采用SQLite作为移动端的数据库,并且将其作为移动端和配网GIS系统间交互的文件格式。
3 配网GIS自动成图
3.1SQLite数据文件的读取
移动端完成数据采集后,只需要将SQLite文件传送给配网GIS,后续的操作由配网GIS系统完成。SQLite的数据文件为*.db类型的文件,本文所述的配网GIS是采用C#开发的Windows应用程序。因此,此处主要描述通过C#对db文件进行解析和读取。
System.Data.SQLite是一个开源的 SQLite类库,现在由SQLite小组维护。这个类库无需.NET Framework支持,它内部包含了一个ADO.NET 2.0引擎,所以.NET开发人员可以利用System.Data.SQLite方便地开发.NET程序。System.Data.SQLite实现了众多的接口和方法,支持对db文件的各类读、写操作。为了便于后续的验证和成图,减少数据通信的次数,本方法通过System.Data.SQLite类库,一次性将移动端上传的db文件读取至配网GIS系统的中进行缓存。
如将db文件的读取至DataSet,代码如下:
3.2数据质量校验
配网GIS系统对数据质量有着严格的要求,因此在生成配网设备之前需要根据配网GIS系统预定义的数据规则进行校验。如果有不满足规则的数据会进行相应的提示,需要将问题数据修改正确后才能进行导入。
为了方便随时对db文件中数据进行校验,满足用户进行离线的需求,将配网GIS系统对数据质量要求进行提炼,得到了配网GIS系统的数据质量校验规则。并把这些规则导出为db文件,将规则数据保存到一个单独的SQLite数据库中,以便于校验工具在离线的情况下读取db文件信息进行数据校验,而无需等到登录系统后再进行校验。
·校验所有必填字段是否有值。
·校验有备选值的字段是否在备选值中。
·校验设备的功能位置是否存在。
·校验技术参数对应的设备是否存在。
·校验馈线的电源点是否正确。
·校验设备的前一构筑是否存在。
·从电源点开始,校验所有构筑设备的顺序是否正确。·校验构筑设备和线缆设备的连接是否正确
3.3自动成图
配网GIS系统中的设备信息只要有3类数据,分别是:属性数据、图形数据、拓扑数据。其中,图形数据和拓扑数据是GIS系统中特有的,本文重点阐述此两类数据的生成,而属性数据和其他的信息系统一样,在此不进行详细阐述。
现代水文考察发现汉江有三源:中源漾水,北源沮水,南源玉带河,均在秦岭南麓陕西省宁强县境内。流经沔县(今勉县)称沔水,东流至汉中始称汉水;自安康至丹江口段,古称沧浪水。
3.3.1生成图形数据
配网GIS系统中主要包括3类图形数据:点、线、面。其中以点和线为主,比如:杆塔、柱上开关、柱上变压器等属于点设备,而导线、电缆等属于线设备。由于Oracle数据库中图形采用MDSYS.SDO_GEOMETRY类型表示,而db文件中的主要是坐标数据(x,y,z),因此需要进行一定的转换才将db文件中的坐标信息写入到数据库中。
为了最大化地复用代码,将点和线图形抽象为IGTGeometry,从而实现对点设备和线设备的统一处理。这需要声明一个图形接口类,以下是伪码:
3.3.2生成拓扑数据
为了保证拓扑数据的正确性,本文采用先图形后拓扑的思路,即等到所有的图形数据都生成完毕后,再生成拓扑关系。由于配网GIS中的拓扑关系属于多对多的关系,采用先图形后拓扑的方法可以避免关系丢失或者不完整的问题。配网GIS中的拓扑数据主要包括2类,分别为包含关系和连接关系。
生成包含关系是采用“多退少补”的思路,即删除已经不存在的关系,增加新建的关系,生成包含关系的伪码如下:
//获取此设备已经包含的线设备信息
var currentContainFeats=PowerNode.GTObject.GetContain-Features();
//在原关系中存在的,在新关系中不存在的,删除
DeleteNotExistOldContainRelation(currentContainFeats);
//在新关系中存在的,在原关系中不存在的,新增
AddNewContainRelation(currentContainFeats);
生成连接关系方法与包含关系类似,同样采用“多退少补”的方法。伪码如下:
//处理构筑节点和前一导线的关系
var targetConn=new List〈IGTKeyObject>{PowerNode. GTObject};
UpdateConnectRelationByDiff(preWireObject.GTObject,targetConn);
//处理构筑节点和后续导线的关系
targetConnFeats=_relatedWires.ToList();
targetConnFeats.Remove(preWireObject.GTObject);
UpdateConnectRelationByDiff(PowerNode.GTObject,target-ConnFeats);
4 结语
本文主要阐述了通过SQLite数据文件为载体,实现db文件到配网GIS系统设备信息的转换过程。主要包括在配网GIS系统内读取db文件,进行数据验证、自动成图、自动建立电气拓扑等一系列的自动操作。本文所述的方法已经在实际配网业务中得到应用,实现了配网GIS设备的自动生成,为提升配网GIS的数据采集效率提供了技术支持手段。
10.3969/j.issn.1673-0194.2015.21.099
TN919
A
1673-0194(2015)21-0191-03
2015-09-07