基于虚拟机的地理信息系统通用符号系统及其构建方法

文档序号:6336227阅读:351来源:国知局
专利名称:基于虚拟机的地理信息系统通用符号系统及其构建方法
技术领域
本发明涉及信息领域,特别是一种基于虚拟机的地理信息系统通用符号系统及其构建方法。
背景技术
目前,市场上的各种地理信息系统(GIS)软件平台都实现了各自的地图符号,但是这些地图符号只是针对特定的平台设计的,不具有通用性,往往是针对一种平台设计的符号不能在另一种平台上使用。而设计一套符号又是一个很费时费力的工作,因而急需一种通用的符号系统。

发明内容
本发明所要解决的技术问题是提供一种基于虚拟机的地理信息系统通用符号系统及其构建方法,其适用于与GIS和电子地图相关的计算机软件系统。
本发明解决其技术问题采用以下的技术方案本发明提供的基于虚拟机的地理信息系统通用符号系统,其包括符号语言、符号编译器、符号集成开发环境和符号虚拟机,GIS是地理信息。
本发明提供一种基于虚拟机来构建地理信息系统通用符号的方法,即利用符号虚拟机来屏蔽具体GIS平台的差异,为符号库的实现提供统一的接口,实现符号库在不同GIS平台上通用的方法。
本发明的优点是通过符号虚拟机屏蔽了具体GIS平台的差异性,为符号库的实现者提供了统一的接口,从而实现了同一个符号库在不同GIS平台上的通用。
具体实施例方式
本发明提供的基于虚拟机构建GIS通用符号系统,其包括符号语言、符号编译器、符号集成开发环境和符号虚拟机。其中符号语言采用一个专门用于编写符号的编程语言vmSymbol。
符号编译器把由符号语言编写的源程序编译成能在符号虚拟机上运行的目标代码,该目标代码就是能在所有实现了符号虚拟机的GIS平台上通用的符号库。
符号集成开发环境是指vmSymbol的集成编程环境,包括提供其源程序的编辑器、编译器和符号预览工具,以及语法分色、错误定位和图形化的符号预览工具,用户可以直接在该集成环境中进行符号库编辑、编译、除错以及符号的预览,并生成最终的符号库。
符号虚拟机当GIS平台软件需要对地图进行符号化时,它就将符号化的任务交给针对该GIS平台的符号虚拟机,而符号虚拟机则通过执行符号库里的指令进行地图数据的符号化,这样就通过符号虚拟机屏蔽了具体GIS平台的差异性,为符号库的实现者提供了统一的接口,从而实现了同一个符号库在不同GIS平台上的通用,例如可以在ArcGIS(包括MapObject,ArcObject,ArcEngine)、GeoStar和CMICS 2.0三个GIS平台实现了符号虚拟机。ArcGIS是ESRI(美国环境系统研究所Environmental Systems Research Institute Inc)开发的GIS软件开发平台,GeoStar是武汉武大吉奥信息工程技术有限公司开发的GIS软件平台,CMICS是武汉大学和武汉武大吉奥信息工程技术有限公司共同开发的城市管理信息采集系统平台。
本发明还提供了基于虚拟机来构建地理信息系统通用符号的方法,即利用符号虚拟机来屏蔽具体GIS平台的差异,为符号库的实现提供统一的接口,实现符号库在不同GIS平台上通用的方法,该方法采用下列步骤,(1)在符号集成开发环境中进行符号库源程序的编写、编译、调试及预览,并生成符号库。
(2)GIS软件在初始化过程中加载针对该GIS平台的符号化虚拟机。
(3)符号虚拟机初始化自己并根据需要装载所需的符号库。
(4)当GIS软件需要对数据进行符号化时,它将数据转交符号虚拟机,由虚拟机去执行符号化的任务。
(5)符号虚拟机通过执行符号库中的符号指令对数据进行符号化。
下面结合武汉城市网格化管理系统中通用符号的实施对本发明作进一步说明。
武汉城市网格化管理系统中有两个地方用到电子地图一个是在PC机上运行的信息管理系统,它用MapObject进行地图显示;另一个是运行在Smartphone(智能手机)上的信息采集系统,它用我们自主开发的嵌入GIS系统(CMICS 2.0)进行地图显示。它们都用同一个基于虚拟机的符号系统做出的符号库对地图数据进行符号化,并达到了一致的效果;所不同的是,一个用的是针对MapObject的符号虚拟机,一个用的是针对CMICS 2.0的符号虚拟机。具体实施时,先在符号集成开发环境中进行符号库源程序的编写,并编译生成所需要的符号库;然后在不同的平台调用不同的虚拟机加载符号库进行符号化。
对于虚拟机,不同的GIS平台的虚拟机是不同的,但所有虚拟机的核心是相同的,其核心就是从符号库中取出相应的指令并逐条执行,所不同的是各个具体GIS平台对虚拟机的调用方式和绘图指令的实现方式可能不同。因此,我们可以先实现一个公共的核心虚拟机,它的功能就是加载符号库并能执行其中的指令,核心虚拟机提供以下5个函数接口,以C语言的形式表示如下①int getSymbolCount(int type)//用于得到符号库中符号的个数,其中type可以等于0、1、2分别表示得到点、线、面符号的个数。
②bool getSymbolName(int type,int index,char name[],int length)
//用于得到符号的名称,type为符号的类型,index为符号库中的符号的索引,name存放返回的符号的名字,length为name的长度。
③bool drawMarkerSymbol(int index,int x,int y,int size,COLOR lineColor,COLOR fillColor,int lineWidth,float angle)//用于绘点符号,index为点符号的索引,x,y为点符号的位置,size为点符号的大小,lineColor和fillColor分别为符点的线和填充色,lineWidth为线的宽度,angle为点符号旋转的角度。
④bool drawLineSymbol(int index,POINT points[],int count,COLOR color,intlineWidth)//用于绘线符号,index为线符号的索引,points为线符号的坐标,count为坐标的个数,color为线的颜色,lineWidth为线宽。
⑤bool drawFillSymbol(int index,POINT points[],int partCounts[],int numParts,COLOR lineColor,COLOR fillColor,int lineWidth)//用于绘面符号,index为面符号的索引,points为面符叼的坐标,partCounts和numParts进一步对坐标进行解释,用来说明该面符号由几部分组成,每部分有多少个点,lineColor和fillColor分别为线和填充色,lineWidth为线宽。
所有针对具体GIS平台的虚拟的机都通过调用核心虚拟机的这5个函数接口来实现对地图数据的符号化;另外核心虚拟机在执行绘图指令(如moveto,lineto,polygon等)时则作为回调函数留给针对具体GIS平台的虚拟机去实现。因此在实现针对具体GIS平台的虚拟机时,要解决两个问题,一是如何调用核心虚拟机,二是怎样实现绘图指令的回调函数。
再结合武汉城市网格化管理系统中的两个虚拟机的实施例作进一步说明实施例1MapObject符号虚拟机的实施在实现MapObject的符号虚拟机时,由于MapObject允许用户通过COM来自定义符号,我们只要实现一个符合MapObject符号接口的COM组件,在该COM组件里面调用核心虚拟机,就解决如何调用核心虚拟机的问题。
对于实现绘图指令的回调函数,由于MapObject是在Windows的HDC上进行绘图,我们只要调用Windows的GDI函数就可以实现这些回调函数。
实施例2CMICS 2.0符号虚拟机的实施由于CMICS 2.0是自主开发的,其符号化工作就是直接调用核心虚拟机实现的,因而对如何调用核心虚拟机就非常直观了;对于绘图指令也是调用Windows的GDI实现的。
上述实施例不对本发明的限制,其仅供参考,用于对本发明的更进一步的理解。
权利要求
1.一种地理信息系统通用符号系统,其特征是基于虚拟机构建GIS通用符号系统,包括符号语言、符号编译器、符号集成开发环境和符号虚拟机,GIS是地理信息系统,符号语言采用一个专门用于编写符号的编程语言vmSymbol,符号编译器把由符号语言编写的源程序编译成能在符号虚拟机上运行的目标代码,该目标代码就是能在所有实现了符号虚拟机的GIS平台上通用的符号库,符号集成开发环境是指vmSymbol的集成编程环境,包括提供其源程序的编辑器、编译器和符号预览工具,以及语法分色、错误定位和图形化的符号预览工具,用户可以直接在该集成环境中进行符号库编辑、编译、除错以及符号的预览,并生成最终的符号库,符号虚拟机当GIS平台软件需要对地图进行符号化时,它就将符号化的任务交给针对该GIS平台的符号虚拟机,而符号虚拟机则通过执行符号库里的指令进行地图数据的符号化,这样就通过符号虚拟机屏蔽了具体GIS平台的差异性,为符号库的实现者提供了统一的接口,从而实现了同一个符号库在不同GIS平台上的通用。
2.根据权利要求1所述的地理信息系统通用符号系统,其特征是在ArcGIS、GeoStar和CMICS 2.0三个GIS平台实现符号虚拟机;其中,ArcGIS是美国环境系统研究所开发的GIS软件开发平台,GeoStar是武汉武大吉奥信息工程技术有限公司开发的GIS软件平台,CMICS是武汉大学和武汉武大吉奥信息工程技术有限公司共同开发的城市管理信息采集系统平台。
3.一种地理信息系统通用符号系统的构建方法,其特征是一种基于虚拟机来构建地理信息系统通用符号的方法,即利用符号虚拟机来屏蔽具体GIS平台的差异,为符号库的实现提供统一的接口,实现符号库在不同GIS平台上通用的方法,该方法采用下列步骤,(1)在符号集成开发环境中进行符号库源程序的编写、编译、调试及预览,并生成符号库,(2)GIS软件在初始化过程中加载针对该GIS平台的符号化虚拟机,(3)符号虚拟机初始化自己并根据需要装载所需的符号库,(4)当GIS软件需要对数据进行符号化时,它将数据转交符号虚拟机,由虚拟机去执行符号化的任务,(5)符号虚拟机通过执行符号库中的符号指令对数据进行符号化。
全文摘要
本发明提供的基于虚拟机的地理信息系统通用符号系统,其包括符号语言、符号编译器、符号集成开发环境和符号虚拟机,GIS是地理信息系统。本发明还提供了基于虚拟机来构建地理信息系统通用符号的方法,即利用符号虚拟机来屏蔽具体GIS平台的差异,为符号库的实现提供统一的接口,实现符号库在不同GIS平台上通用的方法。本发明的优点是通过符号虚拟机屏蔽了具体GIS平台的差异性,为符号库的实现者提供了统一的接口,从而实现了同一个符号库在不同GIS平台上的通用。
文档编号G06F9/455GK1838073SQ20061001887
公开日2006年9月27日 申请日期2006年4月25日 优先权日2006年4月25日
发明者朱欣焰, 苏科华, 周春辉, 呙维 申请人:武汉大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1