專利名稱:一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法
技術(shù)領(lǐng)域:
本發(fā)明涉及使用互連網(wǎng)絡(luò)的地圖數(shù)據(jù)的構(gòu)造或編排的數(shù)據(jù)庫結(jié)構(gòu),尤其是屬于一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法。
背景技術(shù):
目前,國內(nèi)的Web GIS領(lǐng)域內(nèi)基本上采用兩種地圖生成技術(shù),根據(jù)地形的載體不同,區(qū)分為柵格圖形(Raster)技術(shù)和矢量圖形(Vector)技術(shù)。柵格技術(shù)的缺點是圖形的網(wǎng)絡(luò)傳輸數(shù)據(jù)量大,同時生成柵格圖形需要服務(wù)器進(jìn)行大量預(yù)算,給服務(wù)器造成了很大的計算壓力,另外柵格圖形無法將數(shù)據(jù)和表現(xiàn)方式分離,不利于未來3G時代基于移動終端的數(shù)據(jù)使用,割裂了地理信息數(shù)據(jù)對象的有機(jī)關(guān)系,交互性差,圖像數(shù)據(jù)無法平滑放大。相對而言,矢量技術(shù)的優(yōu)點在于能完整地描述地理信息數(shù)據(jù)對象屬性,網(wǎng)絡(luò)數(shù)據(jù)傳輸量小,SVG元素交互性強(qiáng),數(shù)據(jù)與呈現(xiàn)方式分離,支持圖像呈現(xiàn)的優(yōu)化,可以方便的應(yīng)用于移動終端。但是由于矢量圖形缺乏相應(yīng)的規(guī)范,各廠家自成一系,不利于數(shù)據(jù)的復(fù)用和交換,而且由于資金和技術(shù)原因,廠家的矢量圖形定義缺乏完整性,僅能滿足自身需求,無法提升到規(guī)范等級。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種基于空間數(shù)據(jù)庫和SVG的高速Web電子SVG地圖的生成及應(yīng)用方法,以達(dá)到使用高速SVG地圖引擎整合了空間數(shù)據(jù)庫(OracleSpatial),SVG矢量圖形交互技術(shù),AJAX異步數(shù)據(jù)傳輸技術(shù)以及數(shù)據(jù)預(yù)處理緩沖技術(shù),實現(xiàn)了有利于互聯(lián)網(wǎng)及移動終端特性的可深度交互的WebGIS地圖操作引擎。
本發(fā)明所采取的技術(shù)方案是它是由服務(wù)器和客戶端即前臺控制模塊所組成;其中,服務(wù)器包含數(shù)據(jù)永久層和應(yīng)用邏輯層,各部分具體為一、數(shù)據(jù)永久層包含SXW文件和空間數(shù)據(jù)庫(Oracle Spatial),其中1、SXW文件主要用來記錄空間信息呈現(xiàn)表述和各圖層的關(guān)系;2、空間數(shù)據(jù)庫(Oracle Spatial)主要用來永久存儲空間數(shù)據(jù)和進(jìn)行一些主要的空間運(yùn)算;二、應(yīng)用邏輯層包含數(shù)據(jù)緩存器、SXW解析器、數(shù)據(jù)更新器、SVG組裝器、SVG元素工廠和分發(fā)器,其中
1、數(shù)據(jù)緩存器數(shù)據(jù)緩存器用于對客戶請求過的數(shù)據(jù)進(jìn)行必要的緩存,當(dāng)同一資源被再次訪問時,系統(tǒng)就可以迅速的返回結(jié)果;2、SXW解析器SXW解析器框架設(shè)計用于實現(xiàn)SVG地圖編輯軟件產(chǎn)生的XML格式文件的解析,并提供外部所需的圖層元素值;3、數(shù)據(jù)更新器數(shù)據(jù)更新器的作用主要是動態(tài)更新SVG地圖;4、SVG組裝器此模塊主要功能為在SVG元素工廠產(chǎn)生完SVG元素后進(jìn)行組裝合并,以形成更大直至完整的SVG地圖;5、SVG元素工廠此模塊主要功能為產(chǎn)生一個SVG元素,其數(shù)據(jù)的來源是空間數(shù)據(jù)庫(Oracle Spatial)里的空間數(shù)據(jù)表;6、分發(fā)器此模塊主要作用為處理負(fù)載平衡,它對于所收到的操作請求,經(jīng)分析后再動態(tài)分發(fā)到相對壓力較小的服務(wù)器上,其工作過程是先記錄每個服務(wù)器所處理的請求數(shù)和返回時間,以此來判別各個服務(wù)器的壓力,在操作請求到達(dá)后將其分配到壓力較小的服務(wù)器上,以得到最快的反應(yīng)速度。
應(yīng)用邏輯層的工作過程客戶端即前臺控制模塊通過異步通信技術(shù)向服務(wù)器發(fā)起操作請求,應(yīng)用邏輯層的分發(fā)器收到操作請求,對目前各服務(wù)器的性能進(jìn)行評估,擇優(yōu)分發(fā),實現(xiàn)負(fù)載平衡,數(shù)據(jù)緩存器收到操作請求,先在高速緩存數(shù)據(jù)塊中查找數(shù)據(jù),如有找到則直接將此數(shù)據(jù)返回,否則轉(zhuǎn)向空間數(shù)據(jù)庫(Oracle Spatial)查找數(shù)據(jù),然后適當(dāng)更新高速緩存數(shù)據(jù)塊,分發(fā)器接收到返回的數(shù)據(jù),將其原路返回給客戶端即前臺控制模塊;三、客戶端即前臺控制模塊它是指與計算機(jī)、PDA、Smart Phone或其它電子終端操作系統(tǒng)中與SVG圖形查看器(SVG Viewer)進(jìn)行交互的程序模塊;它的主要功能為提供開發(fā)前臺與SVG圖形查看器(SVG Viewer)的交互實現(xiàn)和第三方應(yīng)用程序接口(API);地圖應(yīng)用開發(fā)人員可以通過調(diào)用這些應(yīng)用程序接口(API)操作本系統(tǒng)來開發(fā)出高性能的SVG地圖。
本發(fā)明的有益效果在于1、高效獨立的空間數(shù)據(jù)管理和空間運(yùn)算系統(tǒng)。本發(fā)明由于空間數(shù)據(jù)表現(xiàn)和空間數(shù)據(jù)運(yùn)算分開,這樣讓最終用戶不管在空間查詢和查看地圖方面速度都有了很大的提高。所以在用戶體驗方面有著極有益的效果。2、基于W3C標(biāo)準(zhǔn)的數(shù)據(jù)結(jié)構(gòu)。本發(fā)明在數(shù)據(jù)結(jié)構(gòu)的定義上,采用了基于W3C標(biāo)準(zhǔn)的XML格式,因此對任何開發(fā)在需要的情況下都可通過對XML數(shù)據(jù)格式的自行解析來完成基于底層數(shù)據(jù)的開發(fā)。從這個角度看,可以說本系統(tǒng)提供了極高級別的用戶開發(fā)能力。3、低服務(wù)器配置要求。由于本發(fā)明對數(shù)據(jù)的處理采用的是預(yù)先生成方式,所以在向用戶開放后就不存在即時數(shù)據(jù)生成的壓力,此種形式大大降低了對服務(wù)器的配置要求,從而大大節(jié)省了用戶成本。4、高速反應(yīng)能力和高穩(wěn)定性。由于本發(fā)明采用了三級緩存機(jī)制,極大的提高系統(tǒng)的反應(yīng)能力。同時,是在基于目前成熟的企業(yè)級J2EE規(guī)范來構(gòu)建系統(tǒng),在穩(wěn)定性方面也是企業(yè)級的。5、產(chǎn)品價格低,適合大眾化要求。本產(chǎn)品的定位是基于中小型企業(yè)網(wǎng)站的,因此,價格低,產(chǎn)品具有競爭優(yōu)勢。
圖1、本發(fā)明整體結(jié)構(gòu)2、SVG地圖的生成過程示意3、處理操作請求過程時序結(jié)構(gòu)4、數(shù)據(jù)緩存器結(jié)構(gòu)5、SXW解析器框架圖具體實施方式
如圖1所示為本發(fā)明整體結(jié)構(gòu)圖,它是由服務(wù)器和客戶端即前臺控制模塊所組成;其中,服務(wù)器包含數(shù)據(jù)永久層和應(yīng)用邏輯層,各部分具體為一、數(shù)據(jù)永久層包含SXW文件和空間數(shù)據(jù)庫(Oracle Spatial),其中1、SXW文件主要用來記錄空間信息呈現(xiàn)表述和各圖層的關(guān)系;2、空間數(shù)據(jù)庫(0racle Spatial)主要用來永久存儲空間數(shù)據(jù)和進(jìn)行一些主要的空間運(yùn)算;二、應(yīng)用邏輯層包含數(shù)據(jù)緩存器、SXW解析器、數(shù)據(jù)更新器、SVG組裝器、SVG元素工廠和分發(fā)器,其中1、數(shù)據(jù)緩存器數(shù)據(jù)緩存器用于對客戶請求過的數(shù)據(jù)進(jìn)行必要的緩存,當(dāng)同一資源被再次訪問時,系統(tǒng)就可以迅速的返回結(jié)果;2、SXW解析器SXW解析器框架設(shè)計用于實現(xiàn)SVG地圖編輯軟件產(chǎn)生的XML格式文件的解析,并提供外部所需的圖層元素值;3、數(shù)據(jù)更新器數(shù)據(jù)更新器的作用主要是動態(tài)更新SVG地圖;4、SVG組裝器此模塊主要功能為在SVG元素工廠產(chǎn)生完SVG元素后進(jìn)行組裝合并,以形成更大直至完整的SVG地圖;5、SVG元素工廠此模塊主要功能為產(chǎn)生一個SVG元素,其數(shù)據(jù)的來源是空間數(shù)據(jù)庫(Oracle Spatial)里的空間數(shù)據(jù)表;
6、分發(fā)器此模塊主要作用為處理負(fù)載平衡,它對于所收到的操作請求,經(jīng)分析后再動態(tài)分發(fā)到相對壓力較小的服務(wù)器上,其工作過程是先記錄每個服務(wù)器所處理的請求數(shù)和返回時間,以此來判別各個服務(wù)器的壓力,在操作請求到達(dá)后將其分配到壓力較小的服務(wù)器上,以得到最快的反應(yīng)速度。
應(yīng)用邏輯層的工作過程客戶端即前臺控制模塊通過異步通信技術(shù)向服務(wù)器發(fā)起操作請求,應(yīng)用邏輯層的分發(fā)器收到操作請求,對目前各服務(wù)器的性能進(jìn)行評估,擇優(yōu)分發(fā),實現(xiàn)負(fù)載平衡,數(shù)據(jù)緩存器收到操作請求,先在高速緩存數(shù)據(jù)塊中查找數(shù)據(jù),如有找到則直接將此數(shù)據(jù)返回,否則轉(zhuǎn)向空間數(shù)據(jù)庫(Oracle Spatial)查找數(shù)據(jù),然后適當(dāng)更新高速緩存數(shù)據(jù)塊,分發(fā)器接收到返回的數(shù)據(jù),將其原路返回給客戶端即前臺控制模塊;三、客戶端即前臺控制模塊它是指與計算機(jī)、PDA、Smart Phone或其它電子終端操作系統(tǒng)中與SVG圖形查看器(SVG Viewer)進(jìn)行交互的程序模塊;它的主要功能為提供開發(fā)前臺與SVG圖形查看器(SVG Viewer)的交互實現(xiàn)和第三方應(yīng)用程序接口(API);地圖應(yīng)用開發(fā)人員可以通過調(diào)用這些應(yīng)用程序接口(API)操作本系統(tǒng)來開發(fā)出高性能的SVG地圖。
如圖2所示為SVG地圖的生成過程示意圖,其流程是1、SVG組裝器拆分地圖上的最小矩形覆蓋框(MBR),并根據(jù)最小矩形覆蓋框(MBR)拆分結(jié)果進(jìn)行循環(huán)調(diào)用;SVG組裝器新建SXW解析器對象;2、SXW解析器返回新建對象給SVG組裝器;3、SVG組裝器向SVG元素工廠發(fā)送圖層、最小矩形覆蓋框(MBR)、SXW解析器對象,并要求SVG元素工廠返回相應(yīng)的SVG元素分塊;4、SVG元素工廠向SXW解析器發(fā)送請求,要求返回圖層信息;5、SXW解析器返回圖層信息;6、SVG元素工廠向空間數(shù)據(jù)庫(Oracle Spatial)要求調(diào)用存儲過程,傳入圖層名、最小矩形覆蓋框(MBR)、表名稱等信息,要求返回結(jié)果記錄集;7、存儲過程返回結(jié)果記錄集;8、SVG元素工廠向SXW解析器發(fā)送請求,要求返回圖層風(fēng)格;9、SXW解析器返回圖層風(fēng)格;10、SVG元素工廠組裝并向SVG組裝器返回SVG元素分塊;11、SVG組裝器壓縮SVG元素分塊,并存入到數(shù)據(jù)緩存器中;
繼續(xù)上述步驟,直至完成所需的SVG地圖。
如圖3所示為應(yīng)用邏輯層處理操作請求過程時序結(jié)構(gòu)圖,它是指當(dāng)一個操作請求到達(dá)時序系統(tǒng)時相應(yīng)的系統(tǒng)處理流程,此圖是以時間為順序的;一個完整操作請求經(jīng)過如下步驟1、發(fā)送請求由客戶端即前臺控制模塊發(fā)送地圖操作請求到達(dá)分發(fā)器;2、分發(fā)請求分發(fā)器對該操作請求進(jìn)行評估并分發(fā)到數(shù)據(jù)緩存器,以實現(xiàn)負(fù)載平衡;3、向分發(fā)器返回請求結(jié)果數(shù)據(jù)緩存器對數(shù)據(jù)進(jìn)行緩存或從空間數(shù)據(jù)庫讀取,并返回請求結(jié)果SVG地圖數(shù)據(jù)到分發(fā)器;4、向客戶端即前臺控制模塊返回請求結(jié)果分發(fā)器接收返回的SVG地圖數(shù)據(jù),將其返回到發(fā)起此次請求的客戶端即前臺控制模塊;5、構(gòu)成SVG地圖拼接SVG元素,構(gòu)成完整的SVG地圖。
如圖4所示為數(shù)據(jù)緩存器結(jié)構(gòu)圖,它是由緩存策略邏輯模塊和高速緩存數(shù)據(jù)塊所組成,其工作流程是操作請求到達(dá)數(shù)據(jù)緩存器,數(shù)據(jù)緩存器中的緩存策略邏輯模塊對高速緩存數(shù)據(jù)塊進(jìn)行檢索,如命中,整理SVG地圖數(shù)據(jù),返回結(jié)果;如未命中,從空間數(shù)據(jù)庫(Oracle Spatial)中讀取SVG地圖數(shù)據(jù),整理后將結(jié)果返回,并根據(jù)算法對高速緩存數(shù)據(jù)塊進(jìn)行必要的更新;緩存策略邏輯模塊負(fù)責(zé)緩存的查詢及更新等工作,高速緩存數(shù)據(jù)塊用來物理放置被緩存的SVG地圖數(shù)據(jù)。
如圖5所示為SXW解析器框架圖,它是由地圖配制處理類(MapConfig)、圖層緩存類(LayerBuffer)、解析器類(Parser)和圖層類(LayerBean)所組成,各部分具體為地圖配制處理類(MapConfig),主要功能為存儲SVG地圖的配制信息;圖層緩存類(LayerBuffer),主要功能為處理圖層數(shù)據(jù)時對圖層進(jìn)行緩存;解析器類(Parser),主要功能為對配制信息進(jìn)行解析;圖層類(LayerBean),是圖層的實體,存放各圖層信息和數(shù)據(jù)。
SXW解析器框架設(shè)計用于實現(xiàn)SVG地圖編輯軟件產(chǎn)生的XML格式文件的解析,并提供外部所需的圖層元素值;它包括一個外部接口類即主類/驅(qū)動類為地圖配制處理類(MapConfig);兩個內(nèi)部調(diào)用類為圖層緩存類(LayerBuffer)和解析器類(Parser);一個數(shù)據(jù)圖層類(LayerBean);其中,外部程序只能調(diào)用地圖配制處理類(MapConfig)所提供了兩個方法,其一為返回的SVG圖層元素值為一個數(shù)據(jù)圖層類(LayerBean),外部程序需要實例化該數(shù)據(jù)圖層類(LayerBean);其二為提供SXW文檔解析,外部程序首先應(yīng)當(dāng)調(diào)用SXW文檔解析,驅(qū)動子系統(tǒng)解析SXW文件,并返回。
本發(fā)明的工作原理和相關(guān)技術(shù)的具體實現(xiàn)方法一、本發(fā)明的工作原理為1、將地圖對應(yīng)的空間信息進(jìn)行分層切割成區(qū)域?qū)?、綠地層、水系層、橋系層、道路層、公交站點層、信息點層,并映射為SVG中的圖層,圖層信息存放在SXW文件中。
2、對SVG圖層進(jìn)行格式定義,為每一個圖層賦予邊顏色、寬度、填充色、邊寬、字體、字體大小或其他圖形顯示屬性值,并保存為XML格式定義文件,圖層的相關(guān)格式定義文件信息也存放在SXW文件中。
3、針對地圖所在的經(jīng)緯度范圍進(jìn)行SVG元素分塊切割,建立從經(jīng)緯度坐標(biāo)到SVG元素分塊的映射表,經(jīng)緯度范圍同樣記錄在SXW文件中。
4、編寫空間信息SVG轉(zhuǎn)換程序,讀取空間信息并通過解析XML格式定義文件,將每一個經(jīng)緯度范圍的空間信息生成為對應(yīng)的SVG元素分塊文件,空間信息生成為對應(yīng)的SVG元素分塊文件存放在空間數(shù)據(jù)庫(Oracle Spatial)中。
5、使用GZIP壓縮格式對事先分割好的SVG元素分塊數(shù)據(jù)進(jìn)行壓縮,使得下載的數(shù)據(jù)量達(dá)到15%到30%的壓縮率,對于生成后的SVG元素分塊數(shù)據(jù)進(jìn)行壓縮是通過SVG組裝器實現(xiàn)的。
6、在服務(wù)器端建立了高速的SVG元素分塊數(shù)據(jù)緩存,處理每次用戶請求時,直接從高速緩存中讀取對應(yīng)最小矩形覆蓋框(MBR)的SVG元素分塊數(shù)據(jù),本發(fā)明中的數(shù)據(jù)緩存器就是專門用來實現(xiàn)此功能的。
本步驟也可以通過AJAX異步傳輸技術(shù)從服務(wù)器讀取SVG元素分塊數(shù)據(jù)。
7、使用JavaScript腳本來編寫前臺用戶交互功能,通過面向?qū)ο蟮脑O(shè)計和編碼,提供了強(qiáng)大的地圖操作能力。
二、本發(fā)明相關(guān)技術(shù)的具體實現(xiàn)方法,以下是基于系統(tǒng)模塊按照發(fā)明內(nèi)容的順序來闡述的1、數(shù)據(jù)格式定義針對地圖空間信息數(shù)據(jù)格式進(jìn)行數(shù)據(jù)庫結(jié)構(gòu)設(shè)計(1)對電子地圖上的地理信息數(shù)據(jù)進(jìn)行了分類、分層,分區(qū)域。
對不同城市地圖信息做區(qū)域劃分,為每一城市建立所在地理坐標(biāo)范圍、城市中心點、城市代碼、對應(yīng)地圖配置文檔;對不同比例尺下的地圖信息做縱向分層,劃分為35840000∶1,2880000∶1,360000∶1,90000∶1,45000∶1,22500∶1,11200∶1,72000∶1,36000∶1;對同一比例尺下的不同屬性SVG元素進(jìn)行橫向劃分地域?qū)?、居民地層、水系層、綠地層、橋系層、鐵路層、道路層、POI層、公交路線層、公交站點層。
(2)根據(jù)比例尺和屬性劃分,將地圖數(shù)據(jù)分別導(dǎo)入空間數(shù)據(jù)庫(OracleSpatial)中對應(yīng)的數(shù)據(jù)表中;2、、展示格式定義(1)定義基于XML文本的空間信息數(shù)據(jù)展示格式為地域?qū)佣x屬性填充色,字體顏色、字體大小、字體;為居民地層定義屬性填充色、邊線色;為水系層定義屬性填充色、邊線色;為綠地層定義屬性填充色、邊線色;為橋系層定義屬性填充色、邊線色、邊線寬度、背景邊線色、背景寬度;為鐵路層定義屬性線寬、線段長度;為道路層定義屬性填充色、邊線色、邊線寬度、背景邊線色、背景寬度;為POI層定義屬性字體大小、字體、字體顏色、圖片;為公交路線層定義屬性線寬、線色;為公交站點層定義屬性字體大小、字體、字體顏色、圖片;(2)將配置工作結(jié)束后生成的XML存儲到服務(wù)器上,供SVG元素生成模塊使用。
3、SVG元素分塊切割高比例尺下的城市地圖大小為幾MB、幾十MB甚至是上百M(fèi)B,如果一次性將內(nèi)容下載到WEB前端,顯然無法滿足應(yīng)用要求。
為了實現(xiàn)對請求的快速響應(yīng),減少每一次操作返回的地圖數(shù)據(jù)量太大,需要對地圖進(jìn)行分塊切割操作,而SVG地圖在地物比較集中的區(qū)域,地圖的數(shù)據(jù)量特別大,所以需要根據(jù)地圖的密度對其進(jìn)行分割,盡可能把每一塊地圖的大小保持在50KB以下。
(1)開發(fā)地圖切割工具,使用城市整體地圖作為背景底圖,用于支持對地圖數(shù)據(jù)區(qū)域的切割。
(2)利用工具對地圖進(jìn)行切割,并將切割完畢的地圖分塊存儲到數(shù)據(jù)庫中,并為每一塊SVG元素賦予唯一的標(biāo)識號,同時適當(dāng)擴(kuò)展其最小矩形覆蓋框(MBR),保證SVG元素拼接時能夠保持道路連通性。
(3)對不同比例尺下的地圖,使用不同的分塊大小,避免在大比例尺下SVG元素分塊太少造成的數(shù)據(jù)量太大,也避免小比例尺下SVG元素分塊太多造成的運(yùn)算速度慢的問題。
4、SVG元素生成(1)建立對空間數(shù)據(jù)庫(Oracle Spatial)的Java對象讀取器。由于空間數(shù)據(jù)庫(Oracle Spatial)的數(shù)據(jù)結(jié)構(gòu)和訪問應(yīng)用程序接口(API)與傳統(tǒng)的Oracle關(guān)系數(shù)據(jù)庫大相徑庭,現(xiàn)有的基于關(guān)系型數(shù)據(jù)庫的JDBC連接池公用應(yīng)用程序接口(API)是無法正常工作的。
針對空間數(shù)據(jù)庫(Oracle Spatial)的空間數(shù)據(jù)對象,開發(fā)了Oracle的存儲過程用于運(yùn)算切割SVG元素結(jié)果。
在J2EE服務(wù)器端設(shè)計空間數(shù)據(jù)庫(Oracle Spatial)專用的數(shù)據(jù)庫記錄解析器。
(2)在內(nèi)存中建立地理信息的屬性映射表,為空間信息SVG元素生成模塊提供轉(zhuǎn)換數(shù)據(jù)支持。
(3)設(shè)計SVG元素生成器,根據(jù)地理信息屬性映射表取得和空間數(shù)據(jù)庫(Oracle Spatial)的表和字段中對應(yīng)的SVG元素描述信息,讀取空間數(shù)據(jù)庫(Oracle Spatial)中的空間數(shù)據(jù),并將其轉(zhuǎn)化成SVG格式的XMLSVG元素片段。
5、SVG元素數(shù)據(jù)壓縮緩存(1)建立自動監(jiān)聽器,在服務(wù)器啟動時自動開辟大型內(nèi)存空間,并建立基于哈希表的內(nèi)存高速緩沖區(qū)。
(2)從Oracle關(guān)系型數(shù)據(jù)庫中讀取SVG地圖數(shù)據(jù),并針對每一塊讀出的數(shù)據(jù),使用GZIP對其進(jìn)行壓縮,并以分塊標(biāo)志號作為關(guān)鍵字,將其存儲到內(nèi)存高速緩沖區(qū)中,建立緩沖區(qū)和二位平面的坐標(biāo)映射。
(3)接收到SVG元素數(shù)據(jù)請求時,從內(nèi)存高速緩沖區(qū)中讀取被壓縮過的SVG元素內(nèi)容,并返回給請求者,實現(xiàn)對圖面信息請求的快速響應(yīng)。
6、預(yù)生成處理技術(shù)通過前期對空間數(shù)據(jù)庫(Oracle Spatial)里的各數(shù)據(jù)表預(yù)先通過SVG元素生成模塊生成SVG元素數(shù)據(jù)庫,并將其儲蓄于空間數(shù)據(jù)庫(Oracle Spatial)中集中管理,當(dāng)請求到達(dá)時,直接返回目標(biāo)數(shù)據(jù),可節(jié)省服務(wù)器的大量運(yùn)算時間,大大提高了系統(tǒng)性能。
7、地理空間數(shù)據(jù)更新器模塊(1)對離散添加或離散更新過的空間數(shù)據(jù)庫(Oracle Spatial)存儲的空間數(shù)據(jù)進(jìn)行提取,生成對應(yīng)的SVG元素對象,并添加到對應(yīng)區(qū)域分塊的空間數(shù)據(jù)庫記錄中。
(2)提供手動和計劃任務(wù)的數(shù)據(jù)更新機(jī)制。在完成對靜態(tài)空間分塊信息的更新后,要提供相應(yīng)的應(yīng)用程序接口(API),使得可以通過人工或定時器方式,更新在線服務(wù)器高速緩存中的空間SVG元素信息,同時不影響對外的地圖信息服務(wù)(即實現(xiàn)空間地圖信息的熱更新)。
8、三級高速緩存技術(shù)在緩存方面,一般的系統(tǒng)只采用一級緩存技術(shù),顯然這對系統(tǒng)性能的提高不是很有幫助。本系統(tǒng)突破這些技術(shù)瓶頸,采用三級高速緩存技術(shù),從最大限度上提高了系統(tǒng)的反應(yīng)能力。三級高速緩存分別在空間數(shù)據(jù)庫,應(yīng)用服務(wù)系統(tǒng)(應(yīng)用邏輯層),客戶端瀏覽器上分別進(jìn)行了緩存處理,同時采用了哈希表等數(shù)據(jù)結(jié)構(gòu)來提高系統(tǒng)讀取的速度。
在空間數(shù)據(jù)庫(Oracle Spatial)端,通過PL/SQL語言在其上編寫了第一級數(shù)據(jù)緩存代碼,通過監(jiān)控空間表格的讀取率來實現(xiàn)一級緩存。在應(yīng)用邏輯端通過緩沖器來實現(xiàn)二級緩存,在客戶端方面,通過改進(jìn)瀏覽器和SVG圖形查看器(SVG Viewer)等本身的緩存來實現(xiàn)第三級緩存。
9、用戶請求負(fù)載平衡模塊(1)對不同地域信息用戶請求的協(xié)同群集計算。采用服務(wù)器群集方式,為不同地域和城市的地理信息提供單獨的服務(wù)器群,這樣可以根據(jù)不同地域和城市的用戶數(shù)量差異,合理分配系統(tǒng)硬件資源。
(2)對相同地域信息多用戶并發(fā)請求的協(xié)同群集計算。通過服務(wù)器群集方式,對同時抵達(dá)的同一個地域的多個用戶請求,按流量均衡算法,分?jǐn)偟饺杭械母髋_服務(wù)器進(jìn)行處理,從而獲得高并發(fā)量情況下的的用戶請求快速響應(yīng)。
10、圖形數(shù)據(jù)操作應(yīng)用程序接口(API)基于ECMA Script的圖形界面操作應(yīng)用程序接口(API),并針對Web程序開發(fā)提供了JavaScript應(yīng)用接口。此項技術(shù)彌補(bǔ)了目前SVG中,用戶交互能力較弱的缺陷,為基于SVG的矢量地圖的產(chǎn)品化應(yīng)用提供了較高層次的應(yīng)用程序接口(API)基礎(chǔ)。應(yīng)用程序接口(API)內(nèi)容包括顯示城市地圖、顯示目標(biāo)點、顯示公交站點、顯示公交換乘方案、顯示公交路線、縮放地圖、偏移地圖、地圖標(biāo)點、車輛軌跡回放。
11、操作功能(1)可以自由控制地完整輸出空間數(shù)據(jù)庫(Oracle Spatial)中的城市地圖數(shù)據(jù)。
(2)提供基本的地圖操作功能漫游、放大、縮小、框選放大、框選縮小、全圖、測距。
(3)二次開發(fā)人員能夠使用系統(tǒng)提供地圖展現(xiàn)和基本操作功能。
(4)二次開發(fā)人員能夠使用系統(tǒng)提供的地圖應(yīng)用程序接口(API)完成公交路線查詢、公交換乘查詢、自駕線路查詢、地點及位置查詢、周邊信息查詢等工作,并自動在地圖上展示查詢結(jié)果。
(5)能夠平滑地完成地圖移動、縮小、放大功能,用戶幾乎感覺不到延遲。
(6)提供良好的系統(tǒng)結(jié)構(gòu),后期開發(fā)的功能能夠方便地進(jìn)行添加。
三、本發(fā)明的工作過程是1、打開裝有本引擎的系統(tǒng),客戶端即前臺控制模塊對本引擎進(jìn)行必要的初始化;2、客戶通過SVG VIEWER進(jìn)行操作請求,客戶端即前臺控制模塊將其截獲,并進(jìn)行整合處理,格式化命令;3、客戶端即前臺控制模塊通過異步通信技術(shù)向服務(wù)器發(fā)起操作請求;4、本引擎的應(yīng)用邏輯層收到操作請求,將其轉(zhuǎn)到分發(fā)器;5、分發(fā)器對目前各服務(wù)器的性能進(jìn)行評估,擇優(yōu)分發(fā),實現(xiàn)負(fù)載平衡;6、數(shù)據(jù)緩存收到請求,先在高速緩存數(shù)據(jù)塊中查找數(shù)據(jù),如有找到則直接將此塊數(shù)據(jù)返回,否則轉(zhuǎn)向空間數(shù)據(jù)庫(Oracle Spatial)查找數(shù)據(jù),然后適當(dāng)更新高速緩存數(shù)據(jù)塊;7、分發(fā)器接收到返回的數(shù)據(jù),將其原路返回給客戶端即前臺控制模塊;8、客戶端即前臺控制模塊收到數(shù)據(jù),將其呈現(xiàn)給客戶。
權(quán)利要求
1.一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法,它是由服務(wù)器和客戶端即前臺控制模塊所組成;其中,服務(wù)器包含數(shù)據(jù)永久層和應(yīng)用邏輯層,其特征在于1.1、數(shù)據(jù)永久層包含SXW文件和空間數(shù)據(jù)庫(Oracle Spatial),其中1.1.1、SXW文件主要用來記錄空間信息呈現(xiàn)表述和各圖層的關(guān)系;1.1.2、空間數(shù)據(jù)庫(Oracle Spatial)主要用來永久存儲空間數(shù)據(jù)和進(jìn)行一些主要的空間運(yùn)算;1.2、應(yīng)用邏輯層包含數(shù)據(jù)緩存器、SXW解析器、數(shù)據(jù)更新器、SVG組裝器、SVG元素工廠和分發(fā)器,其中1.2.1、數(shù)據(jù)緩存器數(shù)據(jù)緩存器用于對客戶請求過的數(shù)據(jù)進(jìn)行必要的緩存,當(dāng)同一資源被再次訪問時,系統(tǒng)就可以迅速的返回結(jié)果;1.2.2、SXW解析器SXW解析器框架設(shè)計用于實現(xiàn)SVG地圖編輯軟件產(chǎn)生的XML格式文件的解析,并提供外部所需的圖層元素值;1.2.3、數(shù)據(jù)更新器數(shù)據(jù)更新器的作用主要是動態(tài)更新SVG地圖;1.2.4、SVG組裝器此模塊主要功能為在SVG元素工廠產(chǎn)生完SVG元素后進(jìn)行組裝合并,以形成更大直至完整的SVG地圖;1.2.5、SVG元素工廠此模塊主要功能為產(chǎn)生一個SVG元素,其數(shù)據(jù)的來源是空間數(shù)據(jù)庫(Oracle Spatial)里的空間數(shù)據(jù)表;1.2.6、分發(fā)器此模塊主要作用為處理負(fù)載平衡,它對于所收到的操作請求,經(jīng)分析后再動態(tài)分發(fā)到相對壓力較小的服務(wù)器上,其工作過程是先記錄每個服務(wù)器所處理的請求數(shù)和返回時間,以此來判別各個服務(wù)器的壓力,在操作請求到達(dá)后將其分配到壓力較小的服務(wù)器上,以得到最快的反應(yīng)速度;應(yīng)用邏輯層的工作過程客戶端即前臺控制模塊通過異步通信技術(shù)向服務(wù)器發(fā)起操作請求,應(yīng)用邏輯層的分發(fā)器收到操作請求,對目前各服務(wù)器的性能進(jìn)行評估,擇優(yōu)分發(fā),實現(xiàn)負(fù)載平衡,數(shù)據(jù)緩存器收到操作請求,先在高速緩存數(shù)據(jù)塊中查找數(shù)據(jù),如有找到則直接將此數(shù)據(jù)返回,否則轉(zhuǎn)向空間數(shù)據(jù)庫(Oracle Spatial)查找數(shù)據(jù),然后適當(dāng)更新高速緩存數(shù)據(jù)塊,分發(fā)器接收到返回的數(shù)據(jù),將其原路返回給客戶端即前臺控制模塊;1.3、客戶端即前臺控制模塊它是指與計算機(jī)、PDA、Smart Phone或其它電子終端操作系統(tǒng)中與SVG圖形查看器(SVG Viewer)進(jìn)行交互的程序模塊;它的主要功能為提供開發(fā)前臺與SVG圖形查看器(SVG Viewer)的交互實現(xiàn)和第三方應(yīng)用程序接口(API);地圖應(yīng)用開發(fā)人員可以通過調(diào)用這些應(yīng)用程序接口(API)操作本系統(tǒng)來開發(fā)出高性能的SVG地圖。
2.根據(jù)權(quán)利要求1所述的一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法,其特征在于所述的SVG地圖的生成過程是2.1、SVG組裝器拆分地圖上的最小矩形覆蓋框(MBR),并根據(jù)最小矩形覆蓋框(MBR)拆分結(jié)果進(jìn)行循環(huán)調(diào)用;SVG組裝器新建SXW解析器對象;2.2、SXW解析器返回新建對象給SVG組裝器;2.3、SVG組裝器向SVG元素工廠發(fā)送圖層、最小矩形覆蓋框(MBR)、SXW解析器對象,并要求SVG元素工廠返回相應(yīng)的SVG元素分塊;2.4、SVG元素工廠向SXW解析器發(fā)送請求,要求返回圖層信息;2.5、SXW解析器返回圖層信息;2.6、SVG元素工廠向空間數(shù)據(jù)庫(Oracle Spatial)要求調(diào)用存儲過程,傳入圖層名、最小矩形覆蓋框(MBR)、表名稱等信息,要求返回結(jié)果記錄集;2.7、存儲過程返回結(jié)果記錄集;2.8、SVG元素工廠向SXW解析器發(fā)送請求,要求返回圖層風(fēng)格;2.9、SXW解析器返回圖層風(fēng)格;2.10、SVG元素工廠組裝并向SVG組裝器返回SVG元素分塊;2.11、SVG組裝器壓縮SVG元素分塊,并存入到數(shù)據(jù)緩存器中;繼續(xù)上述步驟,直至完成所需的SVG地圖。
3.根據(jù)權(quán)利要求1所述的一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法,其特征在于所述的應(yīng)用邏輯層處理操作請求過程時序為如下步驟3.1、發(fā)送請求由客戶端即前臺控制模塊發(fā)送地圖操作請求到達(dá)分發(fā)器;3.2、分發(fā)請求分發(fā)器對該操作請求進(jìn)行評估并分發(fā)到數(shù)據(jù)緩存器,以實現(xiàn)負(fù)載平衡;3.3、向分發(fā)器返回請求結(jié)果數(shù)據(jù)緩存器對數(shù)據(jù)進(jìn)行緩存或從空間數(shù)據(jù)庫讀取,并返回請求結(jié)果SVG地圖數(shù)據(jù)到分發(fā)器;3.4、向客戶端即前臺控制模塊返回請求結(jié)果分發(fā)器接收返回的SVG地圖數(shù)據(jù),將其返回到發(fā)起此次請求的客戶端即前臺控制模塊;3.5、構(gòu)成SVG地圖拼接SVG元素,構(gòu)成完整的SVG地圖。
4.根據(jù)權(quán)利要求1所述的一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法,其特征在于所述的數(shù)據(jù)緩存器,它是由緩存策略邏輯模塊和高速緩存數(shù)據(jù)塊所組成,其工作流程是當(dāng)操作請求到達(dá)數(shù)據(jù)緩存器,數(shù)據(jù)緩存器中的緩存策略邏輯模塊對高速緩存數(shù)據(jù)塊進(jìn)行檢索,如命中,整理SVG地圖數(shù)據(jù),返回結(jié)果;如未命中,從空間數(shù)據(jù)庫(Oracle Spatial)中讀取SVG地圖數(shù)據(jù),整理后將結(jié)果返回,并根據(jù)算法對高速緩存數(shù)據(jù)塊進(jìn)行必要的更新;緩存策略邏輯模塊負(fù)責(zé)緩存的查詢及更新等工作,高速緩存數(shù)據(jù)塊用來物理放置被緩存的SVG地圖數(shù)據(jù)。
5.根據(jù)權(quán)利要求1所述的一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法,其特征在于所述的SXW解析器,它是由地圖配制處理類(MapConfig)、圖層緩存類(LayerBuffer)、解析器類(Parser)和圖層類(LayerBean)所組成,各部分主要功能及工作過程是5.1、主要功能地圖配制處理類(MapConfig),主要功能為存儲SVG地圖的配制信息;圖層緩存類(LayerBuffer),主要功能為處理圖層數(shù)據(jù)時對圖層進(jìn)行緩存;解析器類(Parser),主要功能為對配制信息進(jìn)行解析;圖層類(LayerBean),是圖層的實體,存放各圖層信息和數(shù)據(jù);5.2、工作過程SXW解析器框架設(shè)計用于實現(xiàn)SVG地圖編輯軟件產(chǎn)生的XML格式文件的解析,并提供外部所需的圖層元素值;它包括一個外部接口類即主類/驅(qū)動類為地圖配制處理類(MapConfig);兩個內(nèi)部調(diào)用類為圖層緩存類(LayerBuffer)和解析器類(Parser);一個數(shù)據(jù)圖層類(LayerBean);其中,外部程序只能調(diào)用地圖配制處理類(MapConfig)所提供了兩個方法,其一為返回的SVG圖層元素值為一個數(shù)據(jù)圖層類(LayerBean),外部程序需要實例化該數(shù)據(jù)圖層類(LayerBean);其二為提供SXW文檔解析,外部程序首先應(yīng)當(dāng)調(diào)用SXW文檔解析,驅(qū)動子系統(tǒng)解析SXW文件,并返回。
全文摘要
本發(fā)明涉及使用互連網(wǎng)絡(luò)的地圖數(shù)據(jù)的構(gòu)造或編排的數(shù)據(jù)庫結(jié)構(gòu),尤其是屬于一種基于空間數(shù)據(jù)庫和SVG的高速Web電子地圖的生成及應(yīng)用方法。它是由服務(wù)器和客戶端即前臺控制模塊所組成;其中,服務(wù)器包含數(shù)據(jù)永久層和應(yīng)用邏輯層,各部分具體為數(shù)據(jù)永久層包含SXW文件和空間數(shù)據(jù)庫(Oracle Spatial);應(yīng)用邏輯層包含數(shù)據(jù)緩存器、SXW解析器、數(shù)據(jù)更新器、SVG組裝器、SVG元素工廠和分發(fā)器及客戶端所構(gòu)成。本發(fā)明的有益效果在于高效獨立的空間數(shù)據(jù)管理和空間運(yùn)算系統(tǒng)。由于空間數(shù)據(jù)表現(xiàn)和空間數(shù)據(jù)運(yùn)算分開,這樣讓最終用戶不管在空間查詢和查看地圖方面速度都有了很大的提高。所以在用戶體驗方面有著極有益的效果。
文檔編號G06F17/30GK1945578SQ20061012582
公開日2007年4月11日 申請日期2006年8月26日 優(yōu)先權(quán)日2006年8月26日
發(fā)明者林松福, 鄭萬疆, 何禧 申請人:福州開睿動力通信科技有限公司