GIS开发组件(精选8篇)
GIS开发组件 篇1
1. 引言
地理信息系统(GIS,Geographic Information System)是随着地理科学、计算机技术、遥感技术和信息科学的发展而发展起来的一个学科。它是计算机硬件、软件、地理数据以及系统管理人员组织而成的对任一形式的地理信息进行高效获取、存储、更新、操作、分析及显示的集成。
随着计算机技术的飞速发展,特别是组件式软件技术的出现,使利用已有的可扩展组件开发定制GIS系统成为一种趋势。国内外不少学者和开发商都推出了各自的GIS组件,这些产品的发布极大地促进了GIS软件的发展,但在互操作性、可移植性、数据共享等方面任存在一定的局限性。
Silverlight是微软开发的Web前端应用程序开发解决方案,是微软丰富型互联网应用程序(Rich Internet Application)策略的主要开发平台之一,以浏览器的插件方式运行,提供Web应用程序中多媒体(含影音流与音效流)与高度交互性前端应用程序的解决方案,它的图形处理模块内核采用的是WPF技术。WPF技术是微软最新的图形处理框架,它引入了一种新的图形合成引擎使2D/3D渲染效果以及动画效果绚丽。
高生产效率是微软技术的一贯特点,Silverlight也不例外,因而如果将它应用到GIS系统中将会大大提高效率。首先,由于WPF是对之前的图形处理技术更高层次的封装,因此可以带来更快的开发速度。其次,WPF支持硬件(GPU)加速,使得渲染图像的速度大大加快。最后,由于Silverlight是以插件的方式运行,使得系统的响应速度也得到了大大的提升。
介于以上优势,可以看出选择Silverlight开发GIS系统将会是一种趋势,所以开发一款基于Silverlight技术的可扩展GIS组件是十分有意义的。
2. 设计分析
2.1开发工具选择
整个组件基于.NET Framework 3.5,使用VS2008开发;地图渲染及呈现采用Silverlight技术;客户端与服务器端通信使用WCF通信框架;语言主要采用C#,部分使用C++。
2.2组件设计
本组件采用敏捷开发模式和面向组件的设计思想。敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。它让开发人员可以把精力集中在软件功能本身而不是繁杂的文档,并且它要求开发人员实时与客户保持联系,这样就使得开发人员能够随时得到反馈,从而保证产品的可用性;面向组件的开发更加注重接口设计的易用性、可扩展性。因此,本组件通过在Silverlight图形处理库的基础上封装一套通用的GIS接口,可以方便地调用其API以实现浏览查询及分析等功能。此外,良好的接口扩展性使得一些特定的功能可以轻松地通过重写的方法实现。
3. 设计实现
本组件实现了多种空间数据格式的解析,包括ESRI的Shape文件(二进制文件),Sql Server 2008的空间数据库,Oracle Spatial空间数据库,Tab文件等矢量数据格式,以及Sid文件、ECW文件等图像数据格式。其中以Shape文件最为重要,对它数据的读取方法如下:首先使用System.IO.Stream类的Open方法将.SHP文件以流的方式打开,然后先使用Stream.Read方法读取它头文件里的必要信息(如Bounding Box,存贮的记录数量及存储的几何图形类型等),随后遍历索引文件(.SHX)得到每条记录在.SHP文件中的位置以及长度,最后调用Stream.Read方法在.SHP文件中取得每条记录的空间坐标信息。
Silverlight控件Map的实现。本组件实现一个Map控件,它继承自Canvas类,用户在开发时只需要将Map拖入自己的Xaml文件,然后设置相应的数据源文件以及绘图样式等就可以轻松和Map进行交互。Map控件本身内置了一些基本功能,如地图拖拽、放大、局部放大等。这些功能是通过处理System.Windows.Controls.Canvas的Mouse Move,Mouse Wheel和事件来实现的,Mouse Move是鼠标在Map控件上移动时触发的系统事件,Mouse Wheel是鼠标在Map控件上时滚轮滚动所触发的事件。下面是主要代码片段。
支持多种绘图样式。预先定义的一些基本的点线面的样式。可以根据指定属性值的不同使用不同基本样式的Value Style,指定属性满足某个正则表达式后采用特定基本样式的Regex Style,以及基于某个特定数值属性的大小在某个平面内画相应多的点以表示数值密度的Dot Density Style等高级样式。下面是Value Style实现代码的主要片段。
实现在地图上绘制各种图形。用户可以在地图上绘制各种图形,包括矩形、椭圆、三角形等。这些功能主要是由Track Interactive Overlay实现的,它是通过处理鼠标的点击和释放事件来实现功能的。下面是实现画线功能的主要代码片段。以画线为例,在每次Mouse Click事件触发时,把鼠标当前点加入到Track Interactive Overlay的vertices里,然后在Mouse Move事件里将之前vertices数组里面最近的点与鼠标当前的点击点之间绘制直线,最后当用户双击鼠标左键时触发Move Ended事件并将is In Tracking字段设置为False表明用户已经结束操作。
多种地图工具。在Map控件里预实现了多个工具。Logo Map Tool:让用户可以添加自己公司的Logo呈现在地图上;Mouse Coordinate Map Tool:在地图边角位置显示当前鼠标位置的坐标信息。Mouse Map Tool:切换鼠标在地图上所显示的图标(有手状等);Overlay Switcher Map Tool:在地图包含多个图层时,可以使用它在图层之间方便切换;Pan ZoomBar Map Tool:使用它可以方便地对地图进行放大缩小移动等。
空间几何运算。支持矢量数据的空间拓扑运算,包括判断两个多边形是否相交,某个点是否在一个多边形内,某个多边形是否包含另一个多边形等等。这项功能是通过集成另一个开源组件Gis Sharp Blog.Net Topology Suite实现的。使用时会先由本组件中表示几何图形的Base Shape类调用自己的Get Well Known Binary方法得到空间坐标信息(WKB),然后调用Net Topology Suite中WKBReader.Read(byte[]data)方法实例化相应的Geometry,随后调用Geometry的空间运算方法。如判断两条线是否最少有一个交点,就可调用Geometry.Intersects(target Geometry),如果方法返回值是True,就表示相交,反之则不相交。
投影系的转换。支持对当前主流的投影系的坐标转换,包括EPSG 4326(ESRI采用的标准投影系)和EPSG 900913(Google采用的投影系)。投影系转换功能的实现也是通过集成第三方开源组件Sharp Map实现的。组件将业界流行的各个投影系的坐标转换参数信息存储在SRID.csv文件中,当用户需要进行坐标Projection转换时,组件会将SRID.csv文件读取到内存中,并根据用户传入的SRID信息,从SRID.csv文件中将对应的投影系坐标转换参数信息取出来。然后用户调用Convert To External Projection(double x,double y)方法生成Sharp Map类库里相应的Coordinate System对象,最后根据这两个对象生成Coordinate Transformation对象,通过调用Coordinate Transformation的Transform方法就可以得到转换后的坐标信息了。
4. 算法优化
早先的算法是每一个Map只由一张图片组成,这样就导致每次只要用户稍微拖动地图就会导致当前地图的坐标发生变化进而重新绘制地图,效率十分低下。为了解决这个问题,本组件引入Tile的概念,用户一旦设置Multi Tile的属性后组件会将整个地球划分为一个4*4的矩阵,每次都只是绘制包含了地图的几个Tile,这样只要地图位于这四个Tile内部,无论用户怎么拖动地图都不需要重新绘制,从而大大减少绘图次数,提升了效率。
算法的主要实现方式如下:首先在Overlay里有个字段cached Images,它用来缓存每次绘制的图片以及这个图片属于的四个Tile信息,缓存图片都是以四个Tile为单位,然后在Overlay的Draw方法里面会去判断Tile Type这个属性,如果用户将其设置为Multi Tile,Overlay就会调用Get CellsFrom Extent方法算出绘制当前地图所需要的Tile集合,然后在cached Images里面寻找有无满足条件的缓存图片,如果有就直接返回此缓存图片,从而达到减少重新绘制地图次数的目的。如图1所示。
5. 应用
在车辆追踪系统应用中,有以下基本需求:首先,系统要能够即时显示管理车辆的代号、位置、速度等基本信息。其次,用户能够在地图上绘制一些限制区域,一旦车辆脱离限制区域运行,系统可以报警,以便管理员进行进一步的处理。最后,要求系统具有报表功能,可以根据客户的需要将相关的数据以一定的格式导出。
基于以上需求,目前已成功应用该组件开发了一套公司车辆追踪系统。效果图如图2所示。
6. 结束语
本组件实现了一套完整的Silverlight控件库,包括Silverlight Edition.dll,Silverlight Map Suite Core.dll,其中前者包含了所有直接与用户交互的Silverlight控件以及一些高级对象如Overlay等的实现,使用户可以方便调用它们来构建自己的GIS系统,后者实现了核心功能,如数据解析、呈现等;最后,在实际工程中实现了基于该组件的车辆追踪系统。
参考文献
[1]杨正华.城市GIS空间数据共享初探[J].测绘通报,2003,(5):55-57.
[2]阎正.城市地理信息系统标准化指南[M].北京:科学出版社,1999.
[3]刘满仓.城市空间数据基础信息更新机制与技术方法[J].三晋测绘,2003,10(3):13-16.
[4]龚健雅,杜道生,高文秀.GIS专题数据综合的研究[J].地理与地理信息科学,2003,19(3):1-5.
[5]陈泽民.电子地图的数据交换(CNSDTF)实现[J].现代测绘,2003,26(3):14-19.
[6]宋卫锋,崔崧,刘允才等.分布式GIS地图数据的组织与发布[J].计算机工程,2003,29(14):192-194.
GIS开发组件 篇2
基于GIS组件式地下热水管理信息系统设计
针对山西省地下热水资源开发及管理的现状和发展趋势,基于当前组件式GIS软件开发技术,构建了地下热水管理信息系统.阐述了地下热水管理信息系统的设计原则、开发方法和系统结构,介绍了该系统的信息查询、数据统计、地图输出和数据维护等主要功能,以及数据库的设计.
作 者:王国芳 WANG Guo-fang 作者单位:山西农业大学资源环境学院,山西,太谷,030801刊 名:河北农业科学英文刊名:JOURNAL OF HEBEI AGRICULTURAL SCIENCES年,卷(期):13(8)分类号:P641.8关键词:GIS 地下热水 组件技术 组件式地理信息系统
GIS开发组件 篇3
1 组件式GIS
组件式GIS(Components GIS,缩写为ComGIS)技术的基本思想就是把GIS各大功能模块根据性质的不同划分为几个控件,每个控件完成不同的功能。各个GIS控件之间,GIS控件与其它非GIS控件之间,可以方便地通过面向对象的可视化的软件开发工具集成起来,形成满足用户需要的GIS应用,控件分别实现不同的功能(包括GIS和非GIS功能),根据需要把实现各种功能的控件搭建起来构成应用系统。组件式GIS系统具有直接嵌入MIS开发工具,不需GIS语言二次开发和产品大众化的特点。
2 基于组件式GIS的矿井救援系统软件平台的开发
本系统平台是在Visual Basic.NET 2003环境下进行GIS软件平台的开发,采用的是组件式GIS产品MapX。MapX是MapInfo公司向用户提供的具有强大地图分析功能的ActiveX控件产品,是一种基于Windows操作系统的标准控件,能支持绝大多数标准的可视化开发环境如Visual C++,Visual Basic等。MapX提供了各种工具、属性和方法。每个Map对象主要包括Datasets,Layers,Annotations三个对象集合。其中Layers主要用于操作地图的图层,DataSets用于访问空间数据表,Annotation用于在地图上增加文本或者符号。Map对象有一些主要的属性,如Zoom用来设置放大级别(在地图上显示的大小),Rotation控制地图的旋转角度,CenterX和CenterY用于设置x和y的坐标系,GeoSet是在GeoManager中建立好的.GST文件,控制程序中显示的地图,可以使用GeoSetManager程序来管理GeoSet文件(*.GST),可以调用GeoDictionary Manager程序进行修改,指向用户程序数据所在的位置。Datasets用于实现地图与数据的绑定。Annotations集合提供了操纵地图中文字和符号的简单方法。Annotations位于所有其它图层的上方并且不与任何数据连接,Annotations包括AddSymbol在Annotations中增加符号,AddText在Annotations中增加文本,Remove删除特定的标注等属性。
系统平台的开发大致可分为四个基本步骤:
1)启动Visual Basic.NET 2003,创建一个新工程,在“工程”菜单下选择“部件”项,在“部件”对话框中勾选MapXtreme V6.5选项,然后在窗体上添加一个MapXtreme控件;
2)通过地图控件属性框或编写代码,向MapXtreme控件中添加地图数据;
3)编写程序代码来调用地图属性、事件和方法;
4)调试、编译运行。
如GIS软件平台中地图图层的显示的实现方法可通过定义Map对象,并设置其Layers字符串属性来实现。下面的代码就是将存放在系统软件默认文件夹下的名为“主图”的Gst文件添加到MapXtreme控件中进行显示。
其中EnableMapPath函数(Function)根据传入参数(“主图”)返回制定地图的绝对路径,通过MapGeoserLoader加载地图到MapControl1和MapControl2中。
地图的放大、缩小及漫游可以通过设置MapXtreme控件的ZoomLayer属性来加以实现,而当地图放大时可以通过Pan方法进行漫游。例如,当选中“放大”(或“缩小”)按钮后,按下鼠标左键,并拉出一个矩形框时,将放大(或缩小)显示此矩形内的图形;而当选中“漫游”按钮后,按下鼠标左键,将执行图形漫游功能(代码略)。
3 结束语
现在国内矿井救援系统软件平台的开发基本上都要嵌入原先的矿井信息管理等系统,集成各种数据库等,因此采用组件式GIS进行嵌套,无需额外的GIS二次开发语言,GIS控件开发技术,占用资源少,编程过程简单、灵活、易用,便用系统的操作和维护;系统开发成本低、可扩展性强,由于组件接口的稳定性,平台的提升和系统规模及功能需求的扩展不会影响系统源代码,所以系统具有极大的延展性和灵活性。
参考文献
[1]胡武强,胡丹.基于MapXtreme2004的WebGIS系统的研究[J].计算机应用与软件,2006(1):313-317.
[2]王宝山,冯永玉.基于空间的矿山地理信息系统应用软件开发[J].辽宁工程技术大学学报,2005,24(4):104-107.
GIS开发组件 篇4
基于组件GIS的国土资源管理信息系统的研究-以泉州市为例
国土资源管理信息系统是建立国土资源管理现代化、服务社会化、政务公开化的基础,也是政府部门网上工程的重要内容之一.基于此,利用GIS组件技术、计算机技术、数据库技术和软件开发技术,结合泉州市各级县、乡国土资源的实际情况,进行泉州市国土资源管理信息系统的`设计,从数据收集、数据入库、系统结构与功能设计、关键技术、系统功能实现及网上发布等方面进行了阐述,从而实现国土资源信息的现代化管理,大大提高国土资源的使用效率.
作 者:李建成 况代智 LI Jian-cheng KUANG Dai-zhi 作者单位:泉州师范学院,资源与环境科学学院,福建,泉州,36 刊 名:地矿测绘 英文刊名:SURVEYING AND MAPPING OF GEOLOGY AND MINERAL RESOURCES 年,卷(期): 25(2) 分类号:P208 关键词:国土资源 国土资源管理信息系统 MapObjects 组件GIS 数据库基于组件技术的GIS研究与应用 篇5
关键词:组件技术,组件式GIS,应用
概述
近年来, 计算机技术和应用在生活中全面普及, 依赖计算机应用系统的支持和帮助的工作越来越多, 以数据处理作为其中大多数的应用系统的核心, 计算机管理的信息受到各种属性数据的限制, 以及空间信息。而它具有数据量大、结构复杂等特点, 一般的图形管理系统、数据库系统都难以进行处理, 然而, 这些直接导致地理信息系统的出现, 同时也促使地理信息的管理成为一门单独的课题。由计算机硬件、软件、管理人员地和理空间数据共同组成地理信息系统 (简称GIS) , 对空间有关的信息以有效地存储、获取、更新、分析、管理和显示等各种形式。随着科技的发展, 人们十分关注地理信息系统的应用和发展。据悉, 属性数据从地理空间的角度来处理能得到意想不到的效果, 地理信息与现实生活中的85%的信息有关, 例如属性数据间的内在规律可以通过GIS的空间分析工具挖掘出来;同时也可以使属性数据处理的可视化程度提高等。
1 组件式GIS的研究
经过近40年的发展, 地理信息系统 (GIS) 在空间数据的获取能力、处理与分析能力、储存与管理能力以及输出与显示能力等等方面都获得了非常大的进步。随着深入开展GIS在各个领域的应用, 而GIS组件化的趋势也愈来愈明显, GIS朝着组件化发展方向之一。GIS可以从软件模块集成和开发的技术发展历程划分为几个发展阶段。
从分散到集中的过程是发展历程中的一个重大进步, 也就是从GIS模块发到集成式GIS。GIS组件化就是从集成式GIS发展到模块化GIS开始的, 然而, GIS组件化趋势因为核心式GIS变得越来越明显, 这时组件式GIS和Web GIS作为组件化的标准形式。
从发展过程来看, 了解这一历程, 从而对GIS组件化的趋势可以更充分地认识。虽然在功能上传统的GIS平台较为成熟和完善, 主要依赖于GIS平台技术应用GIS的广度和深度, 随着不断扩展和深入GIS的应用, 其平台在开发技术上已经比较落台, 用户提出了更新、更高的要求给GIS技术, 要求GIS实现空间数据、空间分析的无缝集成和提供广域空间信息共享, 从封闭走向开放。于是, 逐渐暴露了出传统GIS平台的缺陷, 具体表现在以下几方面: (1) 普通的开发技术人员难以掌握传统GIS, 由于系统复杂而庞大, 阻碍着自身的推广和发展, 从而导致开发周期过长。 (2) 相对海量数据的管理和分析难以应付, 无法基于WEB发布数, 无法应用分布式环境, 其操作系统平台受到限制, 更无法跨平台运行。 (3) GIS与多媒体技术及其它专业系统、专业模块的高效无缝集成受到单纯的二次开发语言的限制, 从而导致了应用局限。
仅靠其平台自身很难合理妥善地解决这些缺陷, 融合新的计算机技术作为唯一的出路, GIS应用体系和理论体系通过人们对新技术的应用来推动其发展和完善。随着人们加快开发软件技术和计算机技术, 特别是组件式软件技术的应用和Internet的出现, 无论是GIS应用系统的开发方式, 还是GIS平台的设计思想, GIS也自然而然迎合这些起着变化的趋势和革命性的发展。近年来, 人们使GIS的前沿技术向组件式GIS发展, 并慢慢转变为主流发展趋势。目前, 已经有Geo Media Map Objects Arc Objects等作为商业化的COMGIS平台。
组件式GIS的英文字为Components GIS, 其缩写为COMGIS, 是以一组具有允许跨语言应用的组件提供的、某种标准通信接口的GIS, 这种组件就是GIS组件, 指基于组件对象平台。可以通过标准的通信接口来实现GIS组件与其他组件之间或GIS组件之间的交互, 甚至也可以跨计算机实现这种交互。
在GIS软件开发中, COMGIS是面向组件式软件和对象技术的应用。在新一代GIS应用中, COMGIS提供了全新的开发工具。相比传统GIS, 它具有多方面的特点, 其中包括:跨语言使用、无限扩展性、无缝集成、易于推广、成本低、Internet应用以及可视化界面设计等。
2 组件技术在GIS中的应用
首先, GIS的发展受到版本升级困难、低水平重复开发长期的制约。从狭义上说GIS算是计算机系统, 主要是处理地理数据的输出、输入、查询、管理、分析和辅助决策的。因此, 组成相对比较固定系统的功能模块, GIS系统中的基础软件模块通常为输出、输入、查询、管理、分析等, 为了极大地提高开发的效率, 把它们做成组。但事实上在开发新系统时, 由于受到复用代码的有效手段的缺乏, 开发者对相应的代码不得不进行重新编写。
其次, 在使用传统的开发技术中, 人们大多采用紧耦合的结构体系作为GIS系统。在一定程度上, 虽然这种做法使其自身的健壮性和应用系统的运行效率得到保证, 但极大的不利更新新的版本。
最后, 在系统集成中, 传统GIS软件有的在GIS应用分析模型基与础软件之间, 它的数据交换通道通过文件存取方式来建立。但这种方式相对于大量而频繁地交换数据的情况就不适合了, 且系统整合性差, 应用分析模型与GIS基础软件都是相互独立;而有的应用分析模型直接使用GIS软件提供的二次开发语言编制, 前一种模式的缺陷虽然得到解决, 但GIS难以开发复杂的应用模型, VC、VB等专业程序设计语言往往不能与GIS所提供的二次开发语言相比;有的应用模型直接利用VC、VB等语言开发, 并对GIS软件的内部数据结构进行直接访问, 但这样使应用开发的难度增加了, 有的应用模型通过与动态数据交换 (DDE) 建立GIS之间的快速通信。这是在DDE技术发展起来以后, 频繁的文件数据交换所带来的效率降低的缺陷可以避免, 对第一种集成方式的改进, 也避免了从GIS外部直接访问GIS数据结构的代价。应用模型与GIS是分离的, 此拼接仍然是有缝的。
结语
组件式GIS提高了系统的开发效率, 降低了系统的开发难度, 同时使系统的开放性与灵活性增强了。另外, 组件式GIS在与Internet应用方面、MIS耦合也同样具有明显的优势。
参考文献
GIS开发组件 篇6
城市地下各类管线是一个城市重要的基础设施,担负着信息传输、能源输送等工作,也是城市赖以生存和发展的物质基础[1,2]。但由于多方面的原因,淮安市现有地下各类专业管线的资料残缺不全,且有关资料精度不高或与现状不符,造成在建设施工中时常发生挖断或挖坏地下管线,造成停气、停水、停暖、通信中断、污水四溢等严重事故,并且因为缺乏相应的事故分析能力,对事故响应时间不够及时。另一方面,现有的地下专业管线的资料都以图纸、图表等形式记录保存,采用人工方式管理,效率低下。随着时代和科学技术的发展,城市的现代化步伐日趋加快,城市建设、管理、发展的矛盾日益突出。采用高新技术和方法来高效管理地下各类专业管线,满足决策、管理部门和施工单位的需要已成为城市信息管理当务之急[1]。
二、相关理论与技术基础
1、地理信息系统
地理信息系统(GIS)[2][4]是以采集、存储、分析和描述整个或部分地球表面(包括大气层在内)与空间和地理分布有关的数据的空间信息系统[8]。GIS是以计算机为基础的新兴技术,围绕着这项技术的研究、开发和应用形成了一门交叉性、边缘性的学科,主要涉及地理学、测量学、制图学、摄影测量与遥感、计算机科学等领域。
GIS是管理和研究空间数据的技术系统,主要由硬件设备、计算机软件、数据和用户四大要素组成。硬件设备包括数据存储设备、输入设备(如数字化仪、扫描仪、全数字摄影测量工作站等)、输出设备(如矢量绘图仪、栅格式绘图设备等);数据包括与地理实体相关的各种定量数据和定性数据,用户则是地理信息系统服务的对象[2]。它可以对空间数据按地理坐标或空间位置进行各种处理、对数据(包括地理实体的空间数据和属性数据)的有效管理、研究各种地理实体及相互关系,通过对多种地理要素的综合分析,迅速地获取满足应用需要的信息,并以地图、图形或数据的形式表示处理的结果[3]。
2、地下管线系统
地下管线系统是以城市地下管线信息为主要对象的空间信息系统,地下管线信息自身有确定的空间定位,能够自成体系,它是系统空间信息[6]的一种组成部分,主要是由城市各职能部门和各有关行业的实体以各自成熟运行的专业(或专题)GIS以一定方式集成为一体,在GIS基础上开发出来的综合性系统。它与GIS系统一样都包含数据采集、数据编辑、数据存储管理、查询与空间分析五个部分[5][7]。城市地下管线信息系统是城市地理信息系统重要的组成部分,是GIS在城市管理中的现实应用,是对GIS的发展和延伸。
地下管线分为地下管道和地下电缆两大类。各大类仍可向下细分,各类管线又设有不同的建筑物、构筑物以及附属设施,具体如表1所示。这些建、构筑物和附属设施按照其本身的运转特性有机结合,构成城市的生命线工程。以给水管网为例,它是一个由各种管道、水源、泵站、水塔、调节阀(减压阀,止回阀等)、用户等多种设施构成的庞大而复杂的输水管道系统。
三、地下管线系统的设计
根据对整个项目的需求分析和客户业务流程建立系统的业务模型如图1所示。
1、系统的结构设计
根据地下管线信息系统的需求,系统应用计算机技术、地理信息系统技术、信息管理技术、测绘技术,集GIS、MIS于一体,城市地下管线信息系统采用“外业勘测-内业成图-建立管理信息系统”的管理模式,采用客户端-应用服务器-数据库服务器的三层构架模式具体框架图如图2所示。
2、功能模块的设计
根据地下管线系统的需求,按照结构化系统分析和设计思路,地下管线信息系统分为编辑模块、数据查询统计模块、管线分析模块、数据检查模块、管线设计模块、图形数据输出及数据转换六大功能模块组成。功能模块如图3所示。
(1)图形编辑功能
地图输入实现MapObjects地图数据格式*.shp格式的图形输入,对于其它地图数据格式如AutoCAD的Dxf,南方测给CASS软件数据格式,dat文本文件数据格式的图形数据进行格式转换,然后再转入到系统中来。
地图的显示和打印模块可完成对地图进行放大、缩小、漫游及分层管理等操作和图件的打印。
地图编辑主要完成对地图的点、线、面等图形对象进行添加、删除、复制、拖动、裁剪等操作,并能对图形的属性数据进行编辑。
地图测量提供用户量度点、长度、面积等方法,而视窗变换可以让用户可以任意放大、缩小、移动、返回前一视窗、快速放大、快速缩小,重做与恢复等。
(2)查询功能
查询模块要能够完成属性数据的浏览、查询、修改等操作。采用点选、矩形选择、多边形选择等工具进行交互式的选择查询范围,构造SQL条件查询,另外还要求能实现图形数据和属性数据的关联。
(3)管线分析
一个成熟的系统应具备一定的分析和帮助功能,一旦地下管线发生一些突发事情,系统能帮助管理者做到以下几方面的分析:
事故分析:当出现事故时,能找到事故点,及对周围管线的影响;
应用缓冲区分析:即定距离空间模式,分析管线及关闭障碍点对服务区域的影响;
数字地面功能:分析管线的三维立体状况;
断面分析功能:自动提供任意地点的管线横断面,标出各管线断面的尺寸,里程和间距,同时自动提供任意管线的纵断面图,可观察管线的走向与坡度等信息;
交叉分析:分析管线的立体交叉情况。
(4)数据统计
地下管线管理系统最终还要完成对管理的数据、信息分类统计,帮助决策者做出合理的判断。
(5)数据检查功能
程序检查:数据转换时生成合理的属性数据缺省值,用户编辑图形时能保证数据的合理性与正确性;
入库数据检查:确保入库数据准确,包括管线属性内容检查,点号、线号重号检查,自流管线埋深检查防止出现倒流情况,在拟建管线的交叉情况检查。
(6)图形输出
图形输出模块要能按任意比例输出所需的任何一块管线图,相应的属性数据输出至报表,或输出至Excel文件。
四、实现
地下管线系统基于C/S模式开发。服务器端负责管理客户的访问,界面图如图4所示;客户端主要提供内业人员对管线数据的管理功能。
五、结论
本文在广泛参考国内外有关地理信息系统的文献的基础[8][9][10]之上,通过对国内外现有的有关地理信息系统开发技术、方法的比较和分析,针对地下管线信息系统开发中的一些关键技术-ComGIS、GIS控件(MapObjects)、系统数据编码和组织模型C/S模式体系结构等进行研究,提出了相应的算法,设计并实现了城市地下管线系统。
摘要:目前城市的地下管线错综复杂,传统的人工管理方式已不能满足行政管理部门的决策和各专业管线单位的管理需要。为此文章在对地理信息系统研究的分析的基础上,分析了地下管理系统的开发模式和实现技术,确定了基于GIS组件二次开发的控件和算法,设计并实现了城市地下管线信息系统,在实际的应用中取得了较好的效果。
关键词:地下管线,地理信息系统,三维可视化,属性编码
参考文献
[1]张望军.清远市给排水管网管理系统的开发建设[J].给水排水.2001_4.
[2]姚敏,张柏,张树清.基于构件的地理信息系统[J].应用软件开发模型研究.2001.10(1)41-45.
[3]赵文东.詹永照.高尚兵.基于提升方法的SPECK算法的研究[J].计算机工程与设计,2008,7(14):144-146.
[4]Holger Cartner,Andreas Bergmann,Jochen Schmidt.Object -Oriented modeling of data sources as a tool for the intergration of heterogeneous geoscientific information[J].Computers & Geosciences 27(2001)975-985.
[5]李军,庄大方.地学数据集成的理论基础与集成体系[J].地理科学进展.2002(6),137-139.
[6]John W.Satzinger Robert B.Jackson Stephen D.Burd著.朱群雄等译.电子工业出版社,2003.9.
[7]杜良法,李先军.复杂条件下城市地下管线探测技术的应用[J];地质与勘探;2007年03期;119-123.
[8]Pfister,H,Gross,M;Point-Based Computer Graphics[M]; IEEE Computer Graphics and Applications,(S0272-1716);2004年.
[9]杨华.VB与MATLAB COM组件在GPS数据处理中的应用[J];矿山测量;2006年01期;42-44.
GIS开发组件 篇7
随着我国农村经济的迅速发展, 农村用电量猛增, 使得我国农村电网结构日益复杂, 综合管理工作也出现了一定的难度。农村配电网线路管理系统的出现, 大大提高了管理的工作效率。但是, 由于农村配电网不仅具有地域分布广、线路复杂、设备量大等特点[1], 而且电力信息系统中的数据具有其本身的特性-与地理位置相关, 单独的MIS系统不能对农村配电网实现形象化、直观化和高效的管理[2]。
随着GIS技术的迅速兴起和逐渐普及, GIS已开始在我国农村配电网管理中得到初步应用。GIS和计算机管理技术相结合, 能够实现配电网信息管理的地图化、系统数据的可视化以及图形和数据信息的关联。传统的GIS虽功能齐全, 但系统过于庞大[3], 组织方式难于适应农村配电网管理的工作流程。组件式GIS因其具有二次开发周期短、成本低等优点[4], 正符合了近年来由于农村电网的复杂性而对农村配电网管理工作提出的高效性要求。从而可以帮助提高我国农村配电网管理的效率和水平, 促进我国农村电力行业的科学化管理。
鉴于农村配电网线路管理的复杂性和组件式GIS进行农村配电网线路管理的优势, 本文进行了基于组件式GIS的农村配电网线路管理系统的设计与实现。
1组件式GIS
组件式GIS (ComGIS) 是面向对象技术和组件软件技术在GIS软件开发中的应用。它所依赖的技术基础是组件式对象模型 (COM) ActiveX控件。ComGIS基于组件对象平台, 具有标准的接口, 允许跨语言应用。GIS组件之间以及GIS组件与其他组件之间可以通过标准的通信接口实现交互, 这种交互甚至可以跨计算机实现。
ComGIS的基本思想就是把GIS的各大功能模块划分为几个控件, 每个控件完成不同的功能。各个GIS控件之间, 以及GIS控件与其他非GIS控件之间, 可以方便地通过可视化的软件开发工具集成起来, 形成最终的GIS应用。控件如同一堆各式各样的积木, 它们分别实现不同的功能 (包括GIS和非GIS功能) , 根据需要把实现各种功能的“积木”搭建起来, 就构成应用系统。
ComGIS不依赖于某一种开发语言, 可以嵌入通用的开发环境 (如 Visual Basic、VC++、PB和 Delphi) 中实现GIS功能, 使用ComGIS可以实现高效、无缝地进行系统集成。ComGIS与用户和客户程序之间主要通过属性、方法和事件交互[5], 如图1所示。
属性、方法和事件是控件的通用标准接口, 适用于任何可以作为ActiveX容器的开发语言, 具有很强的通用性。这就为农村配电网管理系统的开发者提供了方便, 系统开发者可以选择自己熟悉的开发环境进行开发, 从而省去了以往用传统GIS开发系统时, 学习专门二次开发语言所需的时间, 尽可能快地完成系统的开发。
2系统分析和设计
2.1总体架构
由于C/S架构具有客户端运行速度快的优点, 因此系统采用C/S架构, 系统总体框架如图2所示, 由后台数据库层、数据库引擎层、前端应用系统层组成。空间数据库MapInfo Pro保存地图图形数据, 属性数据库SqlServer存储配电网线路和设备等不包含图形信息的属性数据。空间和属性数据库引擎均采用ADO, 通过数据库引擎可以方便用户操作空间和属性数据库数据。前端应用程序使用MapX与VB相结合实现用户界面, 完成特定功能。
2.2功能分析
系统主要完成农村配电网线路和设备的离线管理, 主要包括以下几部分功能[6]。
(1) 图形显示:
将地图以不同的方式呈现给用户, 便于用户在地图上进行操作。包括地图的放大、缩小、漫游、选择、图层控制、放大镜、鹰眼图等。
(2) 线路图维护:
是系统的核心部分, 包括配电网中配电线路 (包括设备) 的绘制、切改、删除等操作以及在此操作过程中属性数据库的同步更新。
(3) 空间和属性信息互查:
主要实现配电线路、设备的图形信息和属性信息的紧密结合。包括在地图上由配电线路、设备的位置查询相应的属性信息和已知某线路、设备的属性信息在地图上定位该线路或设备。
(4) 空间统计:
使用户可以在地图上使用不同的选择工具按照不同的统计方式对配电线路和设备进行多种类型的统计。
(5) 线路图输出:
实现将配电线路、设备的线路图以不同的约束条件, 按照多种输出格式呈现给用户, 便于用户进行管理和分析。
(6) 台账管理:
是对配电线路和设备的属性信息进行管理。该功能模块同图形显示、线路图维护、空间信息查询、空间统计等空间数据操作模块紧密相连, 使用报表将配电线路和设备的属性信息以及以不同方式进行统计的属性信息呈现给用户。
2.3数据库设计[5]
农村配电网线路管理系统数据库的建立是进行配电网管理工作的前提。根据现有农村配电网线路管理系统的实际情况, 系统中线路和设备的非空间属性信息已经存储在关系型数据库中, 为了既充分利用以前的信息资源, 又充分发挥现有组件式GIS技术在数具库组织方面的优越性, 新系统采用GIS和关系型数据库相结合的混合建库模式。在GIS的每个图层所对应的关系表中存贮线路和设备的唯一标识 (ID号) ;而在关系型数据库中, 存储线路和设备的非空间属性信息, 关系型数据库的每一个关系表中都以线路和设备的ID号作为关键字, GIS图层表和关系型数据库中的关系表之间通过唯一标识字段ID号建立关联。具体数据库设计如图3所示。
3系统实现
3.1软件环境
本文采用VB6.0, MapX4.5, Mapinfo Pro8.0, SqlServer2000等开发工具进行系统的开发建设。VB是一种新型的程序设计语言, 为程序设计人员提供了用于应用程序界面设计的图形对象, 提高了项目开发速度。MapInfo Pro是美国GIS厂商MapInfo 公司推出的优秀的桌面地理信息系统解决方案。MapX是MapInfo公司推出的GIS二次开发组件, 采用基于MapInfo Pro的相同的地图化技术, 可以实现MapInfo Pro具有的绝大部分地图编辑和空间分析功能。SqlServer 是一款使用方便、快捷, 功能强大的关系型数据库系统, 能够满足大多数用户在Windows操作系统环境下的数据管理需要。
3.2数据库的建立
系统建立的数据库包括关系型数据库和GIS数据库两种, 关系型数据库采用Sqlserver 2000建立, GIS数据库在MapInfo Pro 8.0中建立。
3.2.1GIS数据库的建立[7]
按照MapInfo Pro 的空间数据组织方法, 系统的空间数据采用分层管理的方法。系统底图是一张县地图, 用以确定配电线路和设备的位置, 为配电网络的绘制提供参考依据;配电网络按照线路和设备类型进行图层划分, 每个图层存贮一种线路或设备类型。
3.2.2线路编码规则[8]
在配电网络中, 每一条线路, 不论是主干线路还是分支线路, 都有一个中文名字。线路编码和线路名称是一一对应的。本系统中, 线路按级别进行划分, 以便进行编码。10 kV架空线路分为5级, 35 kV架空线路分为2级。
线路的编码格式为干线编码+分支编码, 分支由线杆引出, 每一个线杆上最多有两个分支。其中干线编码由4位组成, 从左侧起第一位是大写字母, 其他3位是数字, 如B511。10 kV线路共分为5级, 分别称为主干线路, 一级分支, 二级分支, 三级分支, 四级分支。35 kV线路分为2级, 分别为主干线路和一级线路。
分支编码唯一标识某一条干线上的一个分支, 分两种情况进行编码。如果起始线杆上有一个分支, 分支编码仅由起始线杆的杆号组成;如果起始线杆上有两个分支, 分支编码由起始杆号+“B”组成;同时, 另一个分支的编码由起始杆号变为起始杆号+“A”组成。其中, “A”表示该分支是其起始所在杆上的第一个分支, “B”表示该分支是其起始所在杆上的第二个分支。干线编码和分支编码之间用英文减号连结。
线杆的杆号按照线杆在线路上的顺序进行编号, 从1开始逐渐加1, 不足三位者, 在左侧补零。当某根线杆上只有一条分支时, 以该线杆为起始杆的分支编号和该线杆的编号相同。如图4所示是配电网线路络拓扑示意图, 其中符号“□/”表示变电站, ①②③④标识4条配电线路, 1~12标识12根线杆。①是从变电站引出的一条主干线路, 编码为B511, 在这条主干线路上共有6根线杆, 编号分别为B511-001到B511-006;②是从主干线路B511的第3根杆上引出的一条一级分支线路, 编号为B511-003;③和④是从一级分支线路B511-003的第2根杆上引出的两条二级分支线路, 编号分为B511-003-002A和B511-003-002B, B511线路上第三根杆的编号与由该杆引出的分支编号相同, 都是B511-003。
3.2.3关系型数据库的建立
关系型数据库SqlServer中存贮线路和设备的非空间属性信息。按照电压等级、线路等级和线路、设备类型来创建关系表。
3.2.4GIS数据库和关系型数据库的关联
建立的MapInfo Pro图层中图形对象的ID号和SqlServer中该对象所在信息表中的关键字一一对应, 由此二者建立了关联;MapInfo Pro内部图形的ID号和图形对象之间通过.ID和.Map文件建立关联。这样通过图形对象的ID号作为中间媒介, 使得图形对象和它对应的属性信息之间建立了一一对应关系, 以此来实现图形信息和属性信息的交互管理和维护。
3.3关键技术
3.3.1拓扑空间关系
拓扑空间关系在地理信息系统和空间数据库的研究与应用中具有十分重要的意义。各种空间目标的拓扑空间关系, 包括面-面、面-线、面-点、线-线、线-点、点-点等多种形式, 而每一种形式的空间关系又包含更多的子形式[10]。
在系统的线路图中, 变电站、线杆及其设备被看作点对象来处理, 配电线路被看作线对象来处理, 系统中涉及到的拓扑空间关系主要是线-点空间关系中的相离、相接、包含关系。
在绘制和删除线路 (包括设备) 的过程中, 拓扑空间关系中的线-点空间关系发挥了很大的作用。
(1) 绘制线路图时, 因为变电站是线路的源头, 所以要先绘制变电站。变电站绘制完成后, 再绘制由该变电站引出的线路。所谓线路由变电站引出, 也就是所绘制的线路和变电站必须符合线-点空间关系中的相接关系, 才是正确的绘制方法。
(2) 在线路上绘制线杆时, 绘制原则中要求线杆必须压线, 也就是线杆和线路必须符合线-点空间关系中的包含关系。
(3) 在线杆上引出分支时, 线杆和所要绘制的分支线路也必须符合线-点空间关系中的相接关系。
(4) 绘制线路图时, 如果线杆和线路的关系是相离关系, 变电站和线路的关系是相离或包含关系, 就被认为是绘制不合格, 系统提示用户重新绘制。
MapX中提供了拓扑空间关系方面的功能, 其中IntersectionTest方法是用于判断两空间对象是否相交的语句。
3.3.2缓冲区分析
缓冲区分析是地理信息系统中一种重要的空间分析功能, 是针对点、线、面实体, 自动建立其周围一定宽度范围以内的缓冲区多边形[11]。它在交通、林业、电力、资源管理、城市规划等行业中都有着广泛的应用。
在系统的线路图编辑过程中, 基于点要素的缓冲区分析得到了广泛的应用。绘制线路图时, 线杆周围的设备必须绘制在以线杆为圆心, 以一定距离为半径的圆内, 不能太远, 否则所绘制的设备不能继承该线杆的属性信息。
MapX中提供了用于缓冲区分析的Buffer函数和BufferFeatures方法。
3.4功能实现
3.4.1线路编辑
主要实现线路图的绘制、切改、删除功能, 在此操作过程中, 图形对象的属性信息也随之同步更新。
(1) 线路绘制:
采用形象的符号代替实际物体。如:变电站用“□/”代替, 线杆用“○”代替, 变压器用“○○”代替等。系统把设备符号的绘制功能封装起来, 供用户使用, 当用户需要绘制设备时, 只需点击工具栏上的设备符号按钮, 然后在地图主窗口的相应位置按下鼠标左键, 即在鼠标点击处出现该设备的符号表示。线路绘制原则为首先绘制变电站, 因为变电站是线路的源头, 确定了变电站的位置后, 再从变电站开始引出一条新线路。绘制完线路后才可以在线路上绘制线杆, 在绘制线杆之前首先要选中线路且应尽量把地图放大一些, 以保证所绘制的电线杆正好压在线路上, 只有压在线路上的电线杆才能自动继承被压线路的位置信息。线杆上的设备绘制在线杆周围一定范围之内, 不能太远, 否则不能继承该线杆的属性信息。图5是线路图中线路的绘制流程图。
(2) 线路的切改:
在实际工作中, 有时由于某种原因, 需要对配电线路所属的变电站或者是分支线路所属的上一级线路进行修改。系统提供了该项功能, 可以方便地实现线路、杆塔以及线路设备 (如:配变等) 图形及属性数据库的同步切改。如要实现切改一条分支线路, 首先选择要切改的线路, 然后点击要切改到的目标线路上的杆塔或变电站, 则可以完成该线路 (连同其上的所有分支、杆塔和设备) 的自动切改及系统GIS数据库和关系型数据库的同步更新。
(3) 线路删除:
系统还提供对配电线路及其设备的删除功能, 删除过程中GIS数据库和关系型数据库中的信息都随之同步更新。线路删除原则为要想删除线路, 必须先删除该线路上的所有设备;要想删除一条线路, 必须先全部删除该条线路上的所有分支线路;要想删除某一线杆, 必须先删除该线杆上安装的全部设备;只有由某一变电站引出的所有线路都删除后, 该变电站才可以删除。若用户想删除某条选中的线路, 如果该线路上还有线杆的话, 系统就会提示该线路不能删除。
3.4.2空间信息查询
系统实现了基于空间特征的查询和基于属性特征的查询两种方式。基于空间特征的查询是指在地图上选中图形对象, 系统自动弹出该图形对象的属性信息。基于属性特征的查询又叫定位, 是通过被查对象的属性特征在地图上找到该图形对象的位置, 并使地图以该图形对象为中心选中显示该图形对象。可以对变电站、线路、变压器等以多种属性组合条件进行定位查询。
(1) 通过图形信息查询属性信息:
系统可以对线路、变电站、线杆及其设备实现基于空间特征的查询, 用户在线路图上单击图形对象, 系统自动弹出该图形对象的属性信息。
(2) 通过属性信息查询图形信息:
系统可以通过线路或设备的属性信息, 在线路图上找到该线路或设备, 使用户对该线路或设备的大致位置有一个直观的概念。实现思想为通过台账信息查询图形信息属于基于属性特征的查询, 该查询操作主要是在属性数据库中进行的, 系统将线路和设备的属性信息存储在关系型数据库SqlServer中, SqlServer提供了完备的数据索引方法及信息查询手段, 支持标准的结构化查询语言 (SQL) 。利用SQL, 可以在属性数据库中很方便地实现属性信息符合条件的查询, 筛选出满足条件的空间实体的ID号, 再到空间数据库中根据ID号检索到该空间实体。图6是定位某条线路的界面。
图5中B511-003线路被选中并高亮显示, 并且地图窗口转换到以该条线路为中心显示 (黑色矩形框内为选中线路, 图中线路仅为示意线路, 并非实际线路) 。
4结语
组件式GIS以其自身的优势逐渐代替传统GIS在各种管理系统中使用。 本文采用面向对象的程序设计语言VB, 集成GIS组件MapX4.5和地理信息系统编辑平台MapInfo Pro 8.0并利用了空间拓扑关系分析和缓冲区分析等GIS技术实现了农村配电网线路管理系统。该系统是组件式GIS技术在农村电力领域的一个典型应用, 目前该系统已在河北某县电力局投入运行, 效果良好, 取得了一定的社会效益。实践结果表明, 组件式GIS在农业电力管理领域具有广阔的应用前景。
参考文献
[1]赵军强.基于GIS的配电管理信息系统[J].郑州轻工业学院学报 (自然科学版) , 2000, 15 (3) :54-55.
[2]刘荣颖.地理信息系统 (GIS) 在配电网地理图形系统中的应用[J].青海电力, 2001, (3) :60-62.
[3]宋关福, 钟耳顺.组件式地理信息系统研究与开发[J].中国图像图形学报, 1998, 3 (4) :313-317.
[4]涂轶晌, 张皙, 韩小涛, 等.组件式GIS及其在电力网设备管理中的应用[J].电力自动化设备, 2002, 22 (7) .41-43.
[5]钟耳顺, 宋关福, 王尔琪, 等.GIS组件化与组件式GIS研究[EB/OL].http://www.gischina.com/, 2000-03-09.
[6]李素.基于组件式GIS的农村配电网管理系统研究[D].河北保定:河北农业大学, 2003.
[7]林春, 王波, 贺贵明.利用MapX实现的组件式GIS技术[J].计算机工程, 2002, 28 (5) :217-271.
[8]刘秀玲, 陈超英.配电网地理信息系统数据库设计与图形绘制[J].电力系统自动化, 2001, (10) :61-63.
[9]巩玉国, 刘金龙, 欧宗英, 等.地理信息系统的研制开发[J].计算机工程, 1999, 29 (11) :82-84.
[10]李成名, 陈军.空间关系描述的9-交模型[J].武汉测绘科技大学学报, 1997, 22 (3) :207-211.
[11]邬伦, 刘瑜, 张晶, 等.地理信息系统原理、方法和应用[M].北京:科学出版社, 2004.
GIS开发组件 篇8
目前,国内煤矿的安全生产形势非常严峻,国家正在大力治理煤矿安全生产环境,随着国家对煤矿安全的日益重视和监管力度的不断加强,各矿已大量装备了煤矿安全生产监控系统,这些安全装备的推广应用大大改善了我国煤矿安全生产状况。但目前煤矿井下还普遍存在以下问题:井下人员管理困难,人员准确数难以掌握,管理人员难以及时掌握井下人员的动态分布及作业情况,任意工作区域指定人员(包括人数、人员信息)统计情况难以掌握等。如果不能及时监控井下人员的实时位置,必将给高效有序的生产调度带来不便,降低生产效率。一旦事故发生时,因无法及时确定被困在井下人员的具体位置和各处的人数,必然会影响组织施救的效率,给遇险工人的生命安全增加威胁。如果能实时掌握每个人员在井下的位置及活动轨迹,对煤矿的安全生产将有积极作用,在一定程度上减少伤亡。因而,开发和完善井下定位系统对于提高生产效率和确保井下人员的生命安全具有十分重要的意义。
设计并实现基于GIS的煤矿井下定位系统是解决当前煤矿安全监控问题的有效方法。系统基于组件式GIS进行开发,与传统GIS比较,组件式GIS具有系统集成性好、开发语言多样、可扩展性强、易于二次开发等特点,已经成为地理信息系统的一个发展趋势。本系统采用ESRI公司的MapObjects组件,结合高级语言C#在.NET平台上进行二次开发。MapObjects是一组基于COM技术的地图应用组件,它由一个称为Map的ActiveX控件(OCX)和约45个自动化对象组成,在标准的Windows编程环境下,能够与其他图形、多媒体、数据库开发技术组成完全独立的综合性应用软件,是基于前端应用业务的良好的地图开发环境。
1 系统分析与设计
煤矿井下定位系统由硬件与软件两部分组成,硬件部分主要实现数据采集与传输,并把数据送到数据库,软件部分则是对数据库的数据进行处理,两部分之间主要通过数据进行接合。本文主要对软件部分进行讨论。
1.1 需求分析
根据实际需求,该系统除了具有一般GIS应该具备的功能外,还必须实现以下功能:
(1)可将当前井下所有人员分布踪迹动态连续显示于井下地图上,进行实时跟踪;(2)提供各种查询方式(如指定人员查位置,指定位置查人员等);(3)统计井下当前指定区域人员数量和人员信息;(4)添加、修改或删除人员与基站的相关信息;(5)可以对井下人员在过去某段时间的轨迹进行回放;(6)能够自定义矿井区域的边界,添加、修改或删除区域边界的坐标;(7)查询、统计结果和有关报表的打印输出。由上述分析,系统功能模块如图1所示。
1.2 架构设计
煤矿井下定位系统采用三层结构的C /S体系结构,包括用户界面层、应用逻辑层和数据层,分别负责实现用户交互、业务逻辑、数据访问等功能。其体系结构图如图2所示。
1.3 系统开发与运行环境
硬件环境 系统开发基础为PC机,内存256MB或以上,CPU奔腾4,硬盘为10 GB 以上。
软件环境 Windows XP+SP2,数据库采用Microsoft SQL Server 2000,系统开发语言为C#,开发平台为Microsoft Visual Studio .NET 2003,GIS组件采用ESRI MapObjects 2.3。
2 系统数据组织
由需求分析可知,系统涉及的数据包括电子地图、矿井基本信息及分布图、基站详细属性信息及人员基本信息,这些数据可以从有关单位得到并加以整理即可使用。根据这些基础数据,对该系统数据管理进行了分析,最后采用文件结合关系数据库管理数据。这种数据管理方案的具体管理方式是空间数据通过文件管理,非空间属性数据利用数据库管理。
2.1 空间数据
本系统的空间数据是专题数据,为1∶1000比例尺的矿井地图,为Shape数据格式。此数据可以直接被MapObjects使用,包括矿井的位置信息和巷道信息。一个Shape文件由一个主文件、一个索引文件和一个dBase表三个文件组成。其关联属性数据存放在Shape文件的dBase表中。dBase表通过索引文件同主文件及几何形状相关联。具体地图分层如图3所示。
2.2 属性数据
属性数据(图3)以煤矿提供的统计数据为基础,加以整理而获得。这些属性数据采用SQL Server 2000数据库来管理。
2.3 数据库的访问和操作
对空间数据访问通过数据访问对象DAO建立与地图数据的联系,并通过MapObjects数据连接对象、地理数据集、记录集、表描述对象等实现对空间数据的操作。对属性数据的数据访问是通过数据访问对象ADO(ActiveX Data Object)建立与数据库SQL Server 2000的关系,通过Connection对象、Command对象、Recordset对象的属性和方法并结合SQL语言实现对数据库的操作。需要使用OLE DB Provider,其连接字符串格式如下:
Provider = SQLOLEDB;data source = MyServer;Initial catalog = MyDataBase;user id = MyUser;password = MyPassword
3 系统主要功能的实现
系统的主界面如图4所示。
3.1 地图控制功能
对地图的缩放、漫游、图层的控制、可视的选择、缩略图、地图量算、输出与打印等,MapObjects为这些功能的实现提供了基本的对象,即具有一定的接口来实现各种操作。地图的缩放通过在Map Control控件的MouseDownEvent事件处理函数中改变地图的显示范围(Extent属性)实现。图层(Layer)控制可以使用Layers集合的MoveTo、MoveToButtom和MoveToTop方法改变图层的次序。要控制是否显示某一图层,只要设置图层对象的Visible属性即可。缩略图的创建和主窗口地图类似,通过Layers的Add方法加入图层。地图量算包括两点间距离、多边形周长和面积,实现函数分别是GetLineLength、GetPolygonLength与GetPolygonArea。地图输出到剪贴板或文件中用ExportMap和ExportMap2方法,打印用PrintMap方法。
3.2 查询显示功能
在MapObjects中,可以用SearchExpression(表达式查找)、SearchByDistance(距离查找)、SearchShape(图形查找)来实现各种复杂的查找关系。该系统采用了SearchExpression方法,即利用查找属性数据库中的数据实现对GIS空间特征的查找,然后通过DrawShape方法将查找到的结果进行闪烁显示(如图5所示)。指定人员查位置可以利用属性数据通过数据库进行,即在属性数据库中找到人员的实时坐标,将该坐标显示在地图上,即可确定人员位置。指定位置查人员可以先在地图中选中某区域,然后将该区域所有人员的坐标与要查找人员坐标进行比较,若结果一致,则查找成功,并将结果显示在地图中。
3.3 统计分析功能
统计井下当前指定区域人员数量和人员信息,可以按单位、上井时间和下井时间分别进行统计。统计结果显示在地图上,若要查看人员的详细信息可以使用菜单上的“点选”、“矩形选”、“多边形选”和“圆形选”分别选中目标,系统就会弹出一个小窗口显示详细信息(如图6所示)。统计结果可以为优化调配人力提供依据。
3.4 属性设置功能
对人员信息、基站信息、区域和检测进行设置,这些信息表都是存储在数据库中的,对这些表进行添加、修改和删除,都要通过数据库进行。人员信息包括工号、姓名、性别、年龄、出生年月、所属单位等;基站信息包括基站ID、名称、坐标、属性ID、状态、物理地址和采样属性等;区域信息包括区域ID、名称、面积、周长、顶点和坐标等;检测设置是对是否自动检测基站、检测范围和检测的周期等参数进行设置。这些信息可以通过窗口上的“打印”按钮以报表的形式进行打印输出,操作非常简单和方便。
4 关键技术
4.1 实时跟踪
实时跟踪要求对数据处理速度非常高,必须能够快速准确地根据基站坐标和距离算出人员的坐标,为了加快处理速度,可以在SQL Server 2000中使用触发器来完成坐标计算的工作,然后在地图上实时显示人员的位置。
在MapObjects中,当需要对人员目标进行动态跟踪的时候,如果把目标放到记录集中要实现动态跟踪就得不断地刷新整个图层,这样是不可取的,会大大地影响效率,所以就可以把这个目标放到动态跟踪层TrackingLayer上。TrackingLayer表示地图中的一层,用于刻画位置会不断改变且具有地理参考的地理要素,这些地理要素被当作事件来使用,可以用GeoEvent对象来表示。TrackingLayer最适合接收从基站中传来的实际的时间空间数据并在地图上动态显示,通过TrackingLayer的AddEvent事件实现定点显示,这样只需刷新TrackingLayer图层即可实现动态跟踪。
4.2 轨迹回放
轨迹回放共有二种方法实现,一种方法为即时显示轨迹点的相对位置,不保留轨迹线,并保证一个终端在图形控件中任何时候都只有一个点存在。这种方法主要应用于监测、管理;另一种是显示轨迹线,并保留所有的轨迹点,该实现方式在模拟分析、决策管理等方面具有重要意义。调用数据库中的定位信息,将坐标数据按照时间顺序进行排列,放到数组中,通过数组取出第一个点,然后依据与动态跟踪相同的方法将点显示在地图上。回放速度由C#.NET的Timer控件的Interval 属性控制,设置Timer控件使其相隔一定的时间后重新显示第2个点、第3个点……将这些点连起来就是轨迹(如图7所示)。回放人员的工号、回放时间段可以通过窗口选择或者输入。部分代码如下:
4.3 实现鼠标滚轮缩放地图与右键菜单
在查看地图时,利用鼠标的滚轮实现地图的放大缩小,是非常有效的操作方式,同时也符合人们的使用习惯。在.NET下实现鼠标滚轮事件很简单,在应用程序中只需对相应控件添加MouseWheel事件就可以了,但MapObjects的Map控件却没有MouseWheel事件。同样,上下文菜单也是非常有效的操作方式,在.NET下,只需创建一个ContextMenu对象,并赋于相应对象的ContextMenu属性就可以了。但MapObjects的Map控件同样没有ContextMenu属性。
解决这两个问题的方法是,将Map控件放到一个容器控件Panel中,设置Map控件的Dock属性为Fill,使两者合为一个整体。然后,添加Panel控件的MouseWheel事件实现滚轮事件。MouseWheel事件的代码如下:
再创建一个ContextMenu对象,将建立的ContextMenu对象赋于Panel控件的ContextMenu属性就可以实现右键菜单如图8所示。
5 结束语
与传统的煤矿定位系统相比,本系统由于结合了GIS,使得操作结果信息在GIS可视化平台中显示,因此系统整体功能得到了较大的丰富和增强,而且具有良好的外观界面,便于操作和维护。本系统不仅具有实际的应用价值,有利于煤矿的人员管理和生产调度,并且为煤矿其他相关系统的研究开发提供了技术参照。对于系统的功能还需要随着时代的发展进一步地增强和完善。
参考文献
[1]刘光,刘小东.地理信息系统二次开发实例教[M].北京:清华大学出版社,2004.
[2]卜建明,程先华.基于MapObjects的上海市地理信息查询系统[J].计算机工程,2006,32(13):269-271.
[3]王占全,赵斯思,徐慧.地理信息系统(GIS)开发工程案例精选[M].北京:人民邮电出版社,2005.