1 .空间数据库
系统空间数据库存储电力管线设备和管网各业务图的地理空间信息, GIS 服务器GeoServer 通过读取空间数据库的实体表中的空间信息确定地物类的位置和几何形状,然后将其在地图上渲染出来。空间数据库实体清单如表
系统通过PostGIS 对空间数据库构建提供支持,空间数据库中地理空间数据统一使用Geometry 数据类型。由于PostGIS 很好地遵守OGC 的SFA 规范, Geometry 数据类型能够支持点、多点、线、多线、多边形、多多边形以及集合对象集等几何类型。G巳ometry 数据类型有两种表现形式: 一种是几何对象的文本表现形式CWKT ) ;另一种是SQL 实现形式,即Canonical Form o 井且PostGIS 可以通过ST_As Text (geometry )和ST一GeomFromEWKT(text )函数实现两种表现形式间的自由转换。
2. 空间数据库实体结构
空间数据库的实体结构如图 所示,空间数据库实体表统一继承于空间基础表(GEO_BASE )。工井俯视图实体表、单线图实体表、接线图实体表存储着可以渲染各种业务图的空间数据,它记录着业务图的各元素形状和位置信息。
土建实体表和电气实体表分别记录的是土建层和电气层的空间数据;剖面实体表存储的是管沟段的横剖面的几何信息和关键属性;管孔实体表和支架实体表则记录着剖面图上的管孔的位置及几何形状。与属性数据库数据相对应的空间土建表、电气表、剖面图表、管孔和支架表继承于空间对象基础表( GEO_OBJECT_BASE) ,GE 。一OBJECT _BASE 的表结构如表
属性与空间数据库关联设计
系统通过GIS 技术实现空间数据的发布功能,通过结合电力管线属性数据与地理数据系统实现系统图文一体化操作,从地图上可以查询和管理设备与管线的地理位置等空间信息,也可以管理设备的相关属性信息。由于系统数据库采用了属性和空间的两层设计结构,因此实现系统的图文一体化操作的关键在于属性数据和空间数据间的关联设计。
属性数据库和空间数据库中各实体表的主键( AUTO_ID )是PostgreSQL 数据库中的序列对象( SEQUENCE )实现由数据库控制为每条记录生成唯一序号。而空间数据库和属性数据库中同一记录的一对一关联则是通过静态ID(STATIC_ ID )实现的, STATIC _ ID 的生成规则通过时间戳生成算法由系统业务逻辑层控制的。
由业务逻辑层控制静态ID 的生成不仅可以保证静态ID 的唯一性,而且可以保证属性数据库和空间数据库中相同记录的静态ID 也是相同的。属性和空间数据库中相同记录的静态ID 的一致性为属性和空间数据的关联操作提供的基础。获取SQL 类型的空间数据Geometry将Geometry转变为WKT形式ST_ AsText(geometry)拆分WKT形式的字符串获得更新后的经纬度判断设备类型OBJECT_TYPE通过STAT IC _ID更新属性数据库中相应记录的经纬度属性数据和空间数据的关联操作包括增加、删除和修改。添加数据记录的关联操作是由系统的业务逻辑层控制的,业务逻辑层会同时控制生成一一对应的属性和空间数据记录,而数据的删除和修改的关联则是通过数据库触发器控制的。在系统执行数据的删除和特定字段的更新操作时,触发器会通过静态ID 字段删除和更新相应数据库中的记录。
系统数据库设计的触发函数包括属性数据删除的触发函数、空间数据删除的触发函数、NAME字段更新触发函数以及经纬度更新的触发函数。其中,经纬度更新的触发函数的流程图如图所示,它的主要功能是在空间数据库中点设备的GEOMETRY 数据发生修改时,更新属性数据库中相应记录的经纬度。