專利名稱:基于虛擬機的地理信息系統(tǒng)通用符號系統(tǒng)及其構建方法
技術領域:
本發(fā)明涉及信息領域,特別是一種基于虛擬機的地理信息系統(tǒng)通用符號系統(tǒng)及其構建方法。
背景技術:
目前,市場上的各種地理信息系統(tǒng)(GIS)軟件平臺都實現(xiàn)了各自的地圖符號,但是這些地圖符號只是針對特定的平臺設計的,不具有通用性,往往是針對一種平臺設計的符號不能在另一種平臺上使用。而設計一套符號又是一個很費時費力的工作,因而急需一種通用的符號系統(tǒng)。
發(fā)明內容
本發(fā)明所要解決的技術問題是提供一種基于虛擬機的地理信息系統(tǒng)通用符號系統(tǒng)及其構建方法,其適用于與GIS和電子地圖相關的計算機軟件系統(tǒng)。
本發(fā)明解決其技術問題采用以下的技術方案本發(fā)明提供的基于虛擬機的地理信息系統(tǒng)通用符號系統(tǒng),其包括符號語言、符號編譯器、符號集成開發(fā)環(huán)境和符號虛擬機,GIS是地理信息。
本發(fā)明提供一種基于虛擬機來構建地理信息系統(tǒng)通用符號的方法,即利用符號虛擬機來屏蔽具體GIS平臺的差異,為符號庫的實現(xiàn)提供統(tǒng)一的接口,實現(xiàn)符號庫在不同GIS平臺上通用的方法。
本發(fā)明的優(yōu)點是通過符號虛擬機屏蔽了具體GIS平臺的差異性,為符號庫的實現(xiàn)者提供了統(tǒng)一的接口,從而實現(xiàn)了同一個符號庫在不同GIS平臺上的通用。
具體實施例方式
本發(fā)明提供的基于虛擬機構建GIS通用符號系統(tǒng),其包括符號語言、符號編譯器、符號集成開發(fā)環(huán)境和符號虛擬機。其中符號語言采用一個專門用于編寫符號的編程語言vmSymbol。
符號編譯器把由符號語言編寫的源程序編譯成能在符號虛擬機上運行的目標代碼,該目標代碼就是能在所有實現(xiàn)了符號虛擬機的GIS平臺上通用的符號庫。
符號集成開發(fā)環(huán)境是指vmSymbol的集成編程環(huán)境,包括提供其源程序的編輯器、編譯器和符號預覽工具,以及語法分色、錯誤定位和圖形化的符號預覽工具,用戶可以直接在該集成環(huán)境中進行符號庫編輯、編譯、除錯以及符號的預覽,并生成最終的符號庫。
符號虛擬機當GIS平臺軟件需要對地圖進行符號化時,它就將符號化的任務交給針對該GIS平臺的符號虛擬機,而符號虛擬機則通過執(zhí)行符號庫里的指令進行地圖數(shù)據(jù)的符號化,這樣就通過符號虛擬機屏蔽了具體GIS平臺的差異性,為符號庫的實現(xiàn)者提供了統(tǒng)一的接口,從而實現(xiàn)了同一個符號庫在不同GIS平臺上的通用,例如可以在ArcGIS(包括MapObject,ArcObject,ArcEngine)、GeoStar和CMICS 2.0三個GIS平臺實現(xiàn)了符號虛擬機。ArcGIS是ESRI(美國環(huán)境系統(tǒng)研究所Environmental Systems Research Institute Inc)開發(fā)的GIS軟件開發(fā)平臺,GeoStar是武漢武大吉奧信息工程技術有限公司開發(fā)的GIS軟件平臺,CMICS是武漢大學和武漢武大吉奧信息工程技術有限公司共同開發(fā)的城市管理信息采集系統(tǒng)平臺。
本發(fā)明還提供了基于虛擬機來構建地理信息系統(tǒng)通用符號的方法,即利用符號虛擬機來屏蔽具體GIS平臺的差異,為符號庫的實現(xiàn)提供統(tǒng)一的接口,實現(xiàn)符號庫在不同GIS平臺上通用的方法,該方法采用下列步驟,(1)在符號集成開發(fā)環(huán)境中進行符號庫源程序的編寫、編譯、調試及預覽,并生成符號庫。
(2)GIS軟件在初始化過程中加載針對該GIS平臺的符號化虛擬機。
(3)符號虛擬機初始化自己并根據(jù)需要裝載所需的符號庫。
(4)當GIS軟件需要對數(shù)據(jù)進行符號化時,它將數(shù)據(jù)轉交符號虛擬機,由虛擬機去執(zhí)行符號化的任務。
(5)符號虛擬機通過執(zhí)行符號庫中的符號指令對數(shù)據(jù)進行符號化。
下面結合武漢城市網格化管理系統(tǒng)中通用符號的實施對本發(fā)明作進一步說明。
武漢城市網格化管理系統(tǒng)中有兩個地方用到電子地圖一個是在PC機上運行的信息管理系統(tǒng),它用MapObject進行地圖顯示;另一個是運行在Smartphone(智能手機)上的信息采集系統(tǒng),它用我們自主開發(fā)的嵌入GIS系統(tǒng)(CMICS 2.0)進行地圖顯示。它們都用同一個基于虛擬機的符號系統(tǒng)做出的符號庫對地圖數(shù)據(jù)進行符號化,并達到了一致的效果;所不同的是,一個用的是針對MapObject的符號虛擬機,一個用的是針對CMICS 2.0的符號虛擬機。具體實施時,先在符號集成開發(fā)環(huán)境中進行符號庫源程序的編寫,并編譯生成所需要的符號庫;然后在不同的平臺調用不同的虛擬機加載符號庫進行符號化。
對于虛擬機,不同的GIS平臺的虛擬機是不同的,但所有虛擬機的核心是相同的,其核心就是從符號庫中取出相應的指令并逐條執(zhí)行,所不同的是各個具體GIS平臺對虛擬機的調用方式和繪圖指令的實現(xiàn)方式可能不同。因此,我們可以先實現(xiàn)一個公共的核心虛擬機,它的功能就是加載符號庫并能執(zhí)行其中的指令,核心虛擬機提供以下5個函數(shù)接口,以C語言的形式表示如下①int getSymbolCount(int type)//用于得到符號庫中符號的個數(shù),其中type可以等于0、1、2分別表示得到點、線、面符號的個數(shù)。
②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為坐標的個數(shù),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個函數(shù)接口來實現(xiàn)對地圖數(shù)據(jù)的符號化;另外核心虛擬機在執(zhí)行繪圖指令(如moveto,lineto,polygon等)時則作為回調函數(shù)留給針對具體GIS平臺的虛擬機去實現(xiàn)。因此在實現(xiàn)針對具體GIS平臺的虛擬機時,要解決兩個問題,一是如何調用核心虛擬機,二是怎樣實現(xiàn)繪圖指令的回調函數(shù)。
再結合武漢城市網格化管理系統(tǒng)中的兩個虛擬機的實施例作進一步說明實施例1MapObject符號虛擬機的實施在實現(xiàn)MapObject的符號虛擬機時,由于MapObject允許用戶通過COM來自定義符號,我們只要實現(xiàn)一個符合MapObject符號接口的COM組件,在該COM組件里面調用核心虛擬機,就解決如何調用核心虛擬機的問題。
對于實現(xiàn)繪圖指令的回調函數(shù),由于MapObject是在Windows的HDC上進行繪圖,我們只要調用Windows的GDI函數(shù)就可以實現(xiàn)這些回調函數(shù)。
實施例2CMICS 2.0符號虛擬機的實施由于CMICS 2.0是自主開發(fā)的,其符號化工作就是直接調用核心虛擬機實現(xiàn)的,因而對如何調用核心虛擬機就非常直觀了;對于繪圖指令也是調用Windows的GDI實現(xiàn)的。
上述實施例不對本發(fā)明的限制,其僅供參考,用于對本發(fā)明的更進一步的理解。
權利要求
1.一種地理信息系統(tǒng)通用符號系統(tǒng),其特征是基于虛擬機構建GIS通用符號系統(tǒng),包括符號語言、符號編譯器、符號集成開發(fā)環(huán)境和符號虛擬機,GIS是地理信息系統(tǒng),符號語言采用一個專門用于編寫符號的編程語言vmSymbol,符號編譯器把由符號語言編寫的源程序編譯成能在符號虛擬機上運行的目標代碼,該目標代碼就是能在所有實現(xiàn)了符號虛擬機的GIS平臺上通用的符號庫,符號集成開發(fā)環(huán)境是指vmSymbol的集成編程環(huán)境,包括提供其源程序的編輯器、編譯器和符號預覽工具,以及語法分色、錯誤定位和圖形化的符號預覽工具,用戶可以直接在該集成環(huán)境中進行符號庫編輯、編譯、除錯以及符號的預覽,并生成最終的符號庫,符號虛擬機當GIS平臺軟件需要對地圖進行符號化時,它就將符號化的任務交給針對該GIS平臺的符號虛擬機,而符號虛擬機則通過執(zhí)行符號庫里的指令進行地圖數(shù)據(jù)的符號化,這樣就通過符號虛擬機屏蔽了具體GIS平臺的差異性,為符號庫的實現(xiàn)者提供了統(tǒng)一的接口,從而實現(xiàn)了同一個符號庫在不同GIS平臺上的通用。
2.根據(jù)權利要求1所述的地理信息系統(tǒng)通用符號系統(tǒng),其特征是在ArcGIS、GeoStar和CMICS 2.0三個GIS平臺實現(xiàn)符號虛擬機;其中,ArcGIS是美國環(huán)境系統(tǒng)研究所開發(fā)的GIS軟件開發(fā)平臺,GeoStar是武漢武大吉奧信息工程技術有限公司開發(fā)的GIS軟件平臺,CMICS是武漢大學和武漢武大吉奧信息工程技術有限公司共同開發(fā)的城市管理信息采集系統(tǒng)平臺。
3.一種地理信息系統(tǒng)通用符號系統(tǒng)的構建方法,其特征是一種基于虛擬機來構建地理信息系統(tǒng)通用符號的方法,即利用符號虛擬機來屏蔽具體GIS平臺的差異,為符號庫的實現(xiàn)提供統(tǒng)一的接口,實現(xiàn)符號庫在不同GIS平臺上通用的方法,該方法采用下列步驟,(1)在符號集成開發(fā)環(huán)境中進行符號庫源程序的編寫、編譯、調試及預覽,并生成符號庫,(2)GIS軟件在初始化過程中加載針對該GIS平臺的符號化虛擬機,(3)符號虛擬機初始化自己并根據(jù)需要裝載所需的符號庫,(4)當GIS軟件需要對數(shù)據(jù)進行符號化時,它將數(shù)據(jù)轉交符號虛擬機,由虛擬機去執(zhí)行符號化的任務,(5)符號虛擬機通過執(zhí)行符號庫中的符號指令對數(shù)據(jù)進行符號化。
全文摘要
本發(fā)明提供的基于虛擬機的地理信息系統(tǒng)通用符號系統(tǒng),其包括符號語言、符號編譯器、符號集成開發(fā)環(huán)境和符號虛擬機,GIS是地理信息系統(tǒng)。本發(fā)明還提供了基于虛擬機來構建地理信息系統(tǒng)通用符號的方法,即利用符號虛擬機來屏蔽具體GIS平臺的差異,為符號庫的實現(xiàn)提供統(tǒng)一的接口,實現(xiàn)符號庫在不同GIS平臺上通用的方法。本發(fā)明的優(yōu)點是通過符號虛擬機屏蔽了具體GIS平臺的差異性,為符號庫的實現(xiàn)者提供了統(tǒng)一的接口,從而實現(xiàn)了同一個符號庫在不同GIS平臺上的通用。
文檔編號G06F9/455GK1838073SQ20061001887
公開日2006年9月27日 申請日期2006年4月25日 優(yōu)先權日2006年4月25日
發(fā)明者朱欣焰, 蘇科華, 周春輝, 咼維 申請人:武漢大學