基于Supermap Objects的地图标绘系统的设计实现

时间:2022-08-23 11:05:34

基于Supermap Objects的地图标绘系统的设计实现

摘要:地图标绘指在地图背景上标绘各种具有空间特征的事、物的分布状态或行动部署。而基于一种GIS组件实现地图标绘,是目前电子地图发展的需要。本文从用户需求出发,给出了系统实现的界面功能、数据组织与核心算法等设计思想,详细阐述了系统的软件结构,软件实现方法与过程。

关键词:地理信息系统;SuperMap Objects;地图标绘

中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)28-0137-03

The Design and Realization of Plotting System Based on SuperMap Objects

SHANG Wen-jun

(University of Science and Technology of China,School of Software Engineering,Hefei 230051,China)

Abstract: Marking special objects on maps means to mark various spatial phenomena and objects on a map to describe some events or object distribution. It's necessary for the electronic map developing to realize plotting based on one of the GIS components.In this paper,The users requirements is analyzed,and the function distribution, interface style, data structure, mainly arithmetic and the design are presented; The specific software structure and realization is expatiated.

Key words: GIS;supermap objects;map plotting

1 引言

SuperMap Objects是SuperMap GIS系列软件中的基础开发平台,是一套面向GIS应用系统开发者的新一代组件式GIS开发平台。具有强大的地图分析功能的ActiveX组件产品。利用SuperMap Objects,用户能够简单快捷地在各种应用系统中嵌入地图应用功能,大大的增强应用系统的空间分析能力。SuperMap Objects采用基于SuperMap DeskPro相同的地图化技术,可以实现SuperMap DeskPro具有的绝大部分地图编辑和空间分析功能。

在一般的地理信息系统中,符号标绘是GIS必须具备的基本功能。地图标绘指在地图背景上标绘各种具有空间特征的事、物的分布状态或行动部署。目前结合国内外优秀的GIS组件,开发计算机地图标绘系统,是GIS开发的流行趋势。本文以超图公司的SuperMap Objects为例,从用户需求出发,给出实现系统的界面功能、数据文件与核心算法等设计思想,阐述了具体的软件结构,软件实现方法与过程。

2 地图标绘系统的用户需求和界面功能

2.1 用户需求

按照不同用户的需求,设计出满足系统功能要求的标绘系统。对于不同领域的态势标绘有所不同,但也有其共通之处,包括:态势图层的新建、标绘符号库的创建、态势标绘的基本编辑、制作及文件操作等。按标绘操作分,又可分为自动态势标绘以及手工态势标绘。其中自动态势标绘,实现了GPS定位显示事件发生场地、以及态势的实时跟踪及轨迹回放。

针对不同行业领域设计符合要求的标绘库,最大程度满足用户标绘的需要,这里除了调用SuperMap Objects本身的符号库外,势必要创建用户自定义符号库及设计出符合用户需要的态势标绘符号。在标绘的同时要实现的不仅仅是一副态势图的生成,同时也要能记录下这样一副态势图内在的属性态势方案,且是在用户标绘的同时自动产生,不需要用户再次去创建一个态势方案。

此外,从用户使用界面友好性的角度考虑,设计方便用户使用操作的界面也是需求阶段考虑的因素。

2.2 界面功能

基于上述需求分析,系统的功能可设置为如下几组:

1)自动态势标绘,包括:态势实时跟踪、态势轨迹回放、定位信息显示。实现自动标绘的方式是:①现场人员携带的GPS子机获取实时GPS信息;②指挥中心服务器接受子机信号,将GPS坐标数据返回到服务器中;③地图服务器在接受到事件GPS定位信息后,判断事件所属类型,调用系统标绘符号库在地图系统中定位显示。

2)手工态势标绘,包括:态势编辑、态势制作以及态势文件操作。态势编辑提供给用户基本的标记操作:撤消、恢复、删除、剪切、复制、粘贴、闪烁标号等。态势制作支持用户进行态势图层控制、创建以及标绘面板的功能。而态势文件操作,则是可以对态势文件进行打开、保存、关闭、叠加、另存为等基本文件操作。

3)态势预案的生成,针对某种需要生成态势预案的操作,在标绘面板上增加一类态势图标号,在标绘此类态势图的同时,能够记录相关的图层属性信息,并可以调用与地图图层相关的属性数据库例如:SQL Server和Oracle等,最终生成描述态势的预案。生成的态势预案文件,可以是属性数据库的一张数据表也可以是一个XML文件加以记录。相关的事件描述信息有时还是需要用户自己在系统设计的弹出窗口中手动输入。所以态势标绘的事件描述预案实则是一个半自动化的生成方案。

图1地图态势标绘系统功能概要设计 图2态势预案生成流程

与此同时,设计出一类方便用户使用的友好界面包括:标绘面板采用类似于QQ聊天分组的收缩面板控制、态势预案标绘的事件描述弹出窗口以及自动标绘功能中的定位显示事件发生地的相关信息显示窗口等。

3 地图标绘系统的数据文件和核心算法

3.1 数据分类

在地图标绘系统中,所涉及的标绘种类很多,且除了通用的地图标绘外还要设计出符合本行业需求的特定符号库。所概括出的基本标绘类型如下:

1) 基本图元,一般包括点、线、面三类,以及文字标注。其中线分:折线、曲线等;面分:多边形、圆、椭圆等。

2) 态势区域,主要是在一般面形的基础上设置显示风格,例如:填充颜色、透明度设置,这在SuperMap Objects中可以调用相关封装好的方法实现。

3) 态势箭头,也是在一般线形的基础上设置其风格,包括:线型、粗细、颜色等,在SuperMap Objects中有带箭头的线形,但有时这种态势箭头不能满足用户标绘的需要,这时就需要自己设计算法,调用基本的地理对象添加方法如:soRecordset.AddNew(objGeometry As soGeometry,[bReturnGeometryID As VARIANT])。

4) 级别,人员,也是标绘中常常用到的标绘图标,在SuperMap Objects中的实现是在一般点状要素的基础上设置其显示风格,用soStyle. SymbolStyle设置其在对应符号库的文件symlib索引(一般的默认路径为:SuperMap\SuperMap Objects 2008\Resources)。

5) 象形符号,在SuperMap Objects中对于象形符号,包括从用户栅格图片转换到符号库的标绘图标,都是不能改变其大小属性的,要想突破软件所带来的这种局限,要通过 SuperMap控件的句柄获取设备指针,然后利用 Windows API,用户可以在 SuperMap 控件上绘制自定义的图形图像的方法。

3.2 数据组织

1)态势标绘图层文件

在创建态势标绘图层中,采用SuperMap Objects的seDatasetType.scdCAD数据集,这是介于SuperMap系列软件本身数据格式的要求考虑的,要实现在同一图层上显示多种类型的数据集(点、线、面、文本等)只有CAD复合数据集类型可以做到。再考虑到最终保存的数据集文件格式,是基于sdb数据源的smw格式工作空间来存储最终的地图数据,在SuperMap系列产品中仅仅保存数据源是不够的,同时要把地图、数据源、布局等保存到一个工作空间中。

2)态势标绘预案文件

对于要实现预案的标绘操作,采用标绘的同时,记录相关的属性描述信息,调用图层相关联的属性数据库,并把查询到的相关字段写入到一张数据表或一个XML文件中记录。本文以生成XML文件为例,最终生成的XML预案文件形如图4所示。

3.3 核心算法

3.3.1 绘制复杂态势图标

在SuperMap.MouseDown(Button As Integer,Shift As Integer,x As Single,y As Single)事件中,通过外界传入基本点的方式,实现多结点绘制图标。以多结点态势箭头为例其在SuperMap Objects中实现的核心代码:

soDatasetVector objDt; //定义矢量数据集

soRecordset objRs; //定义记录集

soPoints objPoints = new soPoints(); //定义线标点串

soPoint objPoint = new soPoint();//定义线标点

soGeoLine objGeoLine = new soGeoLine();//定义线标几何对象

objDt = (soDatasetVector)axSuperWorkspace1.Datasources[1].Datasets[2];

objRs = objDt.Query("", true, null, ""); //查询空间数据集

x1 = axSuperMap1.PixelToMapX(e.x); //获取外界传入点x、y坐标

y1 = axSuperMap1.PixelToMapY(e.y);

objPoint.x = x1;

objPoint.y = y1;

objPoints.Add(objPoint); //把标点添加到点串中

objGeoLine.AddPart(objPoints); //添加点到线对象的结点中

objRs.AddNew((soGeometry)objGeoLine, true);

objRs.Update();

3.3.2 XML文件读写操作

XmlDocument xmlDoc = new XmlDocument();

xmlDoc.Load("schema.xml");

XmlNode root = xmlDoc.SelectSingleNode("PRI");//查找

XmlElement xe1 = xmlDoc.CreateElement("PRI_1"); //创建一个节点

XmlElement xesub1 = xmlDoc.CreateElement("SCHEMA_NAME ");

xesub1.InnerText = "预案";//设置文本节点

xe1.AppendChild(xesub1);//添加到节点中

xmlDoc.Save("schema.xml");//保存到XML文件中

3.3.3 定位信息显示

StringBuilder P_Str = new StringBuilder()//定义字符串显示信息

sb.AppendLine("查找信息如下:")

objLayer = objLayers[i]//遍历循环地物图层

objDtV = (soDatasetVector)objLayer.Dataset //图层转换矢量地理对象

objGeometry = SuperMap.selection.ToRecordset(true).GetGeometry()//选择集转为记录集,获取当前记录对应的几何对像

objRs = objDtV.QueryByDistanceEx(objGeometry, 120, "",100) //查找周围地物对象

P_Str.AppendLine("\t编号:" + objRs.GetFieldValue("SmID").ToString())

P_Str.AppendLine("\t地址:" + objRs.GetFieldValue("NAMEC").ToString())

4 地图标绘系统的软件结构和应用实现

4.1 软件结构

考虑到软件开发的三种架构:逻辑架构、软件系统中元件之间的关系,比如用户界面,数据库,外部系统接口,商业逻辑元件,等等;物理架构、软件元件是怎样放到硬件上的;系统架构、系统的非功能性特征,如可扩展性、可靠性、强壮性、灵活性、性能等。设计出地图标绘系统的描述架构如图5所示。

4.2 软件实现

软件基于SuperMap Objects开发C/S架构的地图标绘系统,开发平台选用VisualStudio2005,开发语言C#。地图数据采用SuperMap Deskpro进行矢量编辑,SuperMap Objects组件开发地图部分的功能,其中主要实现地图的态势编辑、标绘、态势文件操作等。此外,自动标绘的GPS接受数据采用Virtual GPS模拟实现实时接受地理坐标信息。并在地图上实时标绘发生事件及轨迹跟踪功能。系统除了自身空间数据库外还需一个大型的属性数据库支持,调用态势预案xml文件中的字段属性信息。最后列出系统实现的截图,见图6、图7。

5 结束语

本文基于Supermap objects组件设计开发了地图标绘系统,给出了具体的实现步骤、设计思想、实现的技术难点及核心算法。设计开发的原型系统,在自动标绘和手工标绘的两个层面上实现用户需要的态势标绘。并完成了态势图预案的半自动生成,在实际工程中得到有效应用。

参考文献:

[1] 程朋根,龚健雅,眭海刚.GIS中地图符号设计系统的设计与实现[J].中国图象图形学报,2000,5(12):1006-1011.

[2] 毕硕本.地理信息系统软件工程的原理与方法[M].北京:科学出版社,2003.

[3] 北京超图地理信息技术有限公司.SuperMap Objects开发教程[EB/OL]..cn.

[4] 北京超图地理信息技术有限公司.理解SuperMap GIS[EB/OL]..cn.

[5] 李德仁.论RS、GPS与GIS集成的定义、理论与关键技术[J].遥感学报,1997(2):65-69.

[6] 王艳军,姚益平.基于GIS的态势显示系统设计[J].舰船电子对抗,2006,29(4):77-79.

[7] 孙志峰,郭宜忠,王远.基于MapX的电子标绘系统设计与实现[J].空军雷达学院学报,2007,21(2):98-100.

上一篇:浅谈数字电视及其标准 下一篇:银川市教育城域网CNGI驻地网建设及部署