陳少英
(廈門海洋職業(yè)技術學院信息技術系,廈門 361012)
移動位置服務(Location-Based Services,LBS),又名定位服務,使用移動衛(wèi)星網(wǎng)絡和衛(wèi)星定位的技術結合獲得移動方的位置信息,由移動通信網(wǎng)提供給用戶及相關通信系統(tǒng),用以實現(xiàn)各種與定位、位置相關的服務。涉及到基于位置提供的信息服務都屬于移動位置服務,例如查詢某個目的地的線路、某個地方的天氣,這些是廣義的屬性。就LBS業(yè)務本身來說,其通過移動通信網(wǎng)獲取用戶的位置,借助地理信息系統(tǒng)(GIS)提供的各類服務,實現(xiàn)與終端擁有者所在位置緊密相關的增值服務。GIS是LBS中的關鍵核心技術,因為LBS中的關鍵和核心是位置信息和地理信息,而GIS負責位置信息、基礎地理信息的存儲以及數(shù)據(jù)、空間分析,涉及到地圖展示、路徑搜索、地點定位等,這正是LBS中用戶需要的有價值的信息。
LBS會形成一個巨大的產(chǎn)業(yè)鏈,其中包括定位技術提供商、電信運營商、基礎空間數(shù)據(jù)、服務提供商、內(nèi)容提供商和移動終端制造商等。手機做為重要的一種移動終端,擁有位置信息采集和用戶交互的功能。
SVG,即可縮放矢量圖(Scalable Vector Graphics),它采用XML(Extensible Markup Language)來描述二維圖形。
SVG結合了文字、圖形和圖像的有機統(tǒng)一,它采用標記語言的形式,對矢量圖形、圖像進行變換、組合、樣式設置等操作。作為針對互聯(lián)網(wǎng)應用而制定的圖像格式,從圖像本身的表現(xiàn)來講SVG具有圖像品質較高、文件較小、色彩描述精確、視覺顯示效果豐富、可搜索、可交互等優(yōu)勢。
LBS中基于SVG技術的方案相比于先前的解決方案具有一些新的特點:
(1)SVG豐富的圖形對象,可以很好地表現(xiàn)系統(tǒng)的空間信息,甚至細節(jié)。
(2)SVG豐富的消息觸發(fā)以及事件響應函數(shù),能夠快速獲取用戶信息,可以實現(xiàn)系統(tǒng)的交互性。
(3)SVG基于XML格式的特性,使得它除了本身內(nèi)置的屬性外,還能針對屬性進行任意擴展,以實現(xiàn)自定義的功能,具有靈活性。
(4)支持圖形超鏈接功能。
該系統(tǒng)采用C/S模式,客戶端主要用來顯示地圖,包括操作界面、SVG解析模塊和功能模塊。服務器端存儲地圖的SVG文件,負責接收響應客戶端發(fā)出的請求。客戶端發(fā)送請求信息(例如查詢)到服務器端,服務器端進行響應,將相應SVG文件返回給客戶端,客戶端解析SVG文件,將生成的圖像顯示在手機屏幕上。用戶可以根據(jù)需要,在手機屏幕上對矢量地圖進行平移,以及適當?shù)目s放。
系統(tǒng)整體結構如圖1所示。
圖1 系統(tǒng)結構示意圖
地圖引擎是開發(fā)GIS地圖應用的平臺基礎。系統(tǒng)采用J2EE布局,地圖圖形數(shù)據(jù)和交互使用SVG做為載體,數(shù)據(jù)交換手段基于XML/XSL,空間數(shù)據(jù)平臺使用Oracle Spatial,界面操縱能力通過ECMAScript腳本語言來實現(xiàn)。
本系統(tǒng)由如下部分組成:
●SVG地圖:通過Adobe SVG Viewer實現(xiàn)SVG地圖展示城市地圖、道路、地名注記等內(nèi)容,并為地圖API提供數(shù)據(jù)容器;
●地圖API:提供了公交換乘查詢、地名及位置查詢、公交線路查詢、周邊地物查詢等API,供應用開發(fā)者使用;
●空間數(shù)據(jù)解析器:根據(jù)前臺請求,從Oracle Spa?tial數(shù)據(jù)庫中讀取空間數(shù)據(jù),并轉換成為SVG圖形元素,組合目標SVG;
●數(shù)據(jù)緩存器:緩存用戶的調(diào)用請求產(chǎn)生的結果數(shù)據(jù),根據(jù)用戶請求從緩存中讀取數(shù)據(jù),用于提高服務器性能。
地圖引擎拓撲圖如圖2所示。
圖2 地圖引擎拓撲示意圖
以下介紹系統(tǒng)的各個功能模塊劃分:
●SVG元素庫:使用對象數(shù)組格式,生成數(shù)據(jù)庫表中的對應SVG元素。首先需要調(diào)用方傳輸數(shù)據(jù)庫的表名和對應的命名函數(shù),SVG元素庫依據(jù)表名連接Oracle Spatial數(shù)據(jù)庫,參照命名函數(shù)中傳入的數(shù)據(jù)類型生成所需要的文本、點、線、面等對象;接著向解析器查詢記錄對應的顯示風格,并設置到對象中,最后向調(diào)用方返回的是元素對象數(shù)組。
●SXW解析器模塊:SXW解析器設計用于實現(xiàn)對Super Map地圖編輯軟件產(chǎn)生的SXW文件的解析。SuperMap Deskpro生成信息空間文件,SXW解析器負責讀取其中的地圖地理結構、地圖展示風格等內(nèi)容,讀取解析對應的SXW文件,然后在內(nèi)存中生成XML樹,并提供外部所需的圖層元素值。
●緩沖器模塊:緩存用戶調(diào)用請求產(chǎn)生的結果數(shù)據(jù),并根據(jù)用戶請求從緩存中直接讀取數(shù)據(jù)。用于提高服務器性能。在服務器啟動時,將載入這個類,并在這個類中將所有的SVG文件都讀出,并且存入Hash?Map。
●更新器模塊:用于更新SVG數(shù)據(jù),作為入口,調(diào)度各個模塊,重新生成各主要城市的SVG地圖文件,將數(shù)據(jù)更新到數(shù)據(jù)庫,并由監(jiān)聽器監(jiān)視數(shù)據(jù)庫,并將它更新到HashMap中。
●分發(fā)器模塊:負責接收響應處理前端的請求。相當于系統(tǒng)中的交通警察,它接收用戶請求并進行解析,并將請求分發(fā)到相對應的對象進行處理。
●SVG組裝器模塊:用于根據(jù)傳入的圖元分塊坐標和其他相關配置信息,訪問Oracle Spatial數(shù)據(jù)庫,并生成分塊對應的SVG文件,以String方式返回,供調(diào)用者進行處理。
●地圖展示模塊:WingMap類在地圖裝載時進行初始化,用于操縱展示的SVG地圖。提供了眾多的函數(shù),用于滿足地圖移動、放大、縮小、測距等常用地圖功能,并提供了用于向地圖中寫入查詢結果的接口。
系統(tǒng)工作時序如圖3所示。
圖3 系統(tǒng)工作時序圖
更新器用于更新SVG數(shù)據(jù),作為入口,調(diào)度各個模塊,將數(shù)據(jù)更新到數(shù)據(jù)庫,并由監(jiān)聽器監(jiān)視數(shù)據(jù)庫,并將它更新到HashMap中。更新器結構如圖4所示。
圖4 更新器結構圖
SVG組裝器拆分MBR,并根據(jù)MBR拆分結果進行循環(huán)調(diào)用:
(1)SVG組裝器新建SXW解析器對象;
(2)SXW解析器返回新建對象;
(3)SVG組裝器向元素庫發(fā)送圖層、MBR、SXW解析器對象,元素庫返回相應的SVG片段;
(4)元素庫向SXW解析器發(fā)送請求,要求返回圖層信息;
(5)SXW解析器返回圖層信息;
(6)元素庫向Spatial要求調(diào)用存儲過程,傳入圖層名、MBR、表名稱等信息,要求返回結果記錄集;
(7)存儲過程返回結果記錄集;
(8)元素庫向SXW解析器發(fā)送請求,要求返回圖層風格;
(9)SXW解析器返回圖層風格;
(10)元素庫組裝并返回SVG片段.
SVG組裝器壓縮SVG片段,并存入到數(shù)據(jù)庫表中,繼續(xù)第1步,直至循環(huán)結束。
SVG生成模塊用于根據(jù)傳入的圖元分塊坐標和其他相關配置信息,訪問Oracle Spatial數(shù)據(jù)庫,并生成分塊對應的SVG文件,以String方式返回,供調(diào)用者進行處理。其程序流程是先新建SVG圖元工廠,接著設置分塊信息,然后設置SXW對象,最后調(diào)用生成SVG方法。
SVG組裝器必須完成如下的工作:
(1)響應解析請求的內(nèi)容,生成SVG文件框架,獲得地圖名稱;
(2)根據(jù)地圖名稱,創(chuàng)建格式解析器對象;
(3)從格式解析器獲取圖層信息;
(4)從SVG元素庫中,依照圖層信息,取得對應的SVG元素數(shù)組,經(jīng)由元素數(shù)組生成SVG片段,通過拼裝,形成SVG文件;
(5)返回SVG字符串。
生成SVG:
使用createSVG函數(shù)要求m_mapConfig返回滿足比例尺條件的SXW圖層列表,并循環(huán)SXW圖層列表:
(1)SXW圖層名稱 sSXWLayer,要求m_mapConfig返回對應的最小比例尺和最大比例尺;
中國的社會扶貧是具有中國特色的廣義的社會扶貧概念。自20世紀90年代中期開始,社會扶貧一直是中國扶貧的重要組成部分。社會扶貧大體可劃分為三種主要類型:第一種是政府組織和協(xié)調(diào)的帶有再分配性質的社會扶貧,包括各級機關事業(yè)單位開展的定點扶貧、東西協(xié)作扶貧以及軍隊武警部隊扶貧;第二種是由企業(yè)為主體基于社會責任、參與企業(yè)與貧困地區(qū)互利的企業(yè)扶貧;第三種是由非營利社會組織和個人為主純粹的扶貧活動。由這三種社會扶貧方式構成的中國社會扶貧,在過去20年通過動員社會和所在組織的資源、組織和實施扶貧項目、開展扶貧創(chuàng)新等形式,為中國減貧作出了重要的貢獻。
(2)如果滿足條件:最小比例尺 (3)根據(jù)sSXWLayer,查表得到圖層對應的Spatial表名sTable; (4)設置條件:sTable,dLeft,dBottom,dTop,dRight,sProvince,sCity,sLayer,dScale,調(diào)用存儲過程檢索出Spatial表中的對應記錄,生成結果記錄集; (5)根據(jù)Spatial表名,調(diào)用對應的函數(shù),傳入?yún)?shù):sSXWLayer; (6)要求SVG類返回SVG圖層; (7)拼接SVG圖層數(shù)組,設置SVG文件的Wing屬性,返回SVG文件。 最后輸出SVG文件,String類型,格式如下: 讀取POI: 使用readPOI函數(shù),輸入SXW圖層名稱,進行如下處理: (1)根據(jù)m_dScale,計算顯示比例單位數(shù)值dUnit(double類型,用來設置本比例尺下1單位的實際大?。?; (2)向m_mapConfig查詢sSXWLayer對應的顯示風格:字體、字體大小、字體顏色; (3)根據(jù)顯示風格,組裝SVG頭,設置缺省屬性:image大小、字體、字體大小、字體顏色; (4)循環(huán)結果記錄集: ①讀取POI類型; ②查表得到POI類型對應的顯示圖片路徑,設置 ③讀取POI名稱,設置 (5)輸出SVG圖層。 讀取水系、綠地、邊界: 分別使用 readWater、readGreenLawn、readCounty函數(shù),輸入SXW圖層名稱,并進行如下處理: (1)根據(jù)m_dScale,計算顯示比例單位數(shù)值dUnit; (2)向m_mapConfig查詢sSXWLayer對應的顯示風格:填充色、邊線色; (3)根據(jù)顯示風格,組裝SVG頭,設置缺省屬性:邊線色、填充色、邊寬; (4)循環(huán)結果記錄集: ①讀取多邊形數(shù)據(jù),設置 ②讀取路徑數(shù)據(jù),設置 (5)輸出 (6)輸出 讀取橋系、道路、鐵路: 分別使用函數(shù) readBridge、readRoad、readRailway輸入SXW圖層名稱,并進行如下處理: (1)根據(jù)m_dScale,計算顯示比例單位數(shù)值dUnit; (2)向m_mapConfig查詢sSXWLayer對應的顯示風格:邊寬、字體、字體顏色、字體大??; (3)根據(jù)顯示風格,組裝背景SVG頭,設置缺省屬性:邊線色、邊寬; (4)根據(jù)顯示風格,組裝前景SVG頭,設置缺省屬性:邊線色、虛線填充格式、邊寬; (5)根據(jù)顯示風格,組裝文字SVG頭,設置缺省屬性:字體、字體顏色、字體大小、路徑跟隨屬性; (6)循環(huán)結果記錄集: ①讀取路徑數(shù)據(jù),設置背景 ②設置前景 ③如果具備名字,則設置 (7)輸出背景 (8)輸出前景 (9)輸出文字 SVG作為基于XML純文本描述、為互聯(lián)網(wǎng)應用而設計的圖像格式,擁有文件小、圖像質量高、色彩描述精確、視覺表現(xiàn)豐富、可搜索、支持交互這些特點,使得非常適宜成為Web地圖的載體。本文通過研究SVG技術在LBS中的應用,解決了SVG的傳輸數(shù)據(jù)解析顯示、更新文件保存等問題,在手機上實現(xiàn)了對矢量地圖的顯示功能、平移和縮放功能、定位查詢功能,為移動終端基于SVG的應用提供了一種解決方案,具有較好的借鑒作用。4 結語