章欣欣, 何原榮
(廈門理工學院 計算機與信息工程學院, 福建 廈門 361024)
采用Oracle的Google地圖興趣點抓取和發布的WebGIS系統
章欣欣, 何原榮
(廈門理工學院 計算機與信息工程學院, 福建 廈門 361024)
通過Google Maps API開發實現對興趣點的抓取,以Oracle Spatial點對象字段實現存儲,借助Oracle Maps開發WebGIS系統,實現Google Maps興趣點數據快速抓取,并與對應的屬性和地圖符號在Oracle中一體化存儲,最終實現同數據庫中已有的矢量和柵格數據的疊加和集成發布.對桂林市漓江流域旅游資源空間數據構建進行應用實踐,結果表明:該系統可幫助開發者快速構建集興趣點位置、屬性、顯示符號為一體的空間數據庫,大大縮短開發周期并有效降低開發成本.
Google Maps API; 興趣點; Oracle Spatial; Oracle Map.
針對興趣點數據(POI)的采集和獲取是構建專題地理信息系統(如旅游[1]、大眾生活服務)的基礎,常見數據采集的方式包括傳統測繪、從專業資質認證機構購買、遙感影像解譯等[2].但這些方式在資金成本、技術門檻、采集周期等方面都有較高的要求,對于一般中小型IT企業、學校研究機構,以及個人開發者而言,往往無法滿足[3].如何以較低的成本,快速、簡易、準確地獲取所需的興趣點數據,是當前地理信息系統(GIS)應用推廣亟待解決的問題.Google擁有全球最大數據量、覆蓋最完整的興趣點定位數據資源,同時,提供地圖應用編程接口Google Maps API供用戶提取坐標,并在此基礎上進行GIS的二次開發.因此,基于Google地圖或者其他可提供API接口的地圖服務產品,進行興趣點數據的提取是目前快速獲取所需數據的有效手段.直接利用Google Maps、加載本地數據、通過文件格式轉換、借助抓取程序是基于Google數據的GIS常見的4種開發方式[4-7].Oracla作為目前商用關系數據庫代表產品之一,具有高性能、可靠性強、支持多用戶并行操作和分布式處理等優點.在此基礎上,從Oracle 7.1.6開始,通過Oracle Spatial模塊進一步擴充和完善空間數據存儲與操作功能,使其在空間數據庫方面走在世界前列[8-12].本文基于Oracle的空間擴展部件,通過Google Maps API開發抓取興趣點,并集成錄入相應的屬性存儲于Oracle中;利用存儲的SVG符號和已有的空間數據,借助Oracle Maps開發WebGIS系統,實現Google Maps興趣點數據快速抓取入庫與集成發布.

圖1 系統流程圖
Google 地圖API基于JavaScript,其可將Google 地圖嵌入用戶自定義的網頁中,還提供了一系列地圖處理(距離、面積測量)和向地圖添加自定義內容的服務.在使用API之前,需要在Google上申請一個API密鑰,將申請的密鑰嵌入網頁的〈Script〉標簽中,即能調用Google Maps API.
系統主要完成地圖瀏覽、經緯度抓取、屬性錄入、 SVG符號化及WebGIS快速發布等功能. 系統流程,如圖1所示.
1) 地圖初始化.在頁面中指定一個文檔對象模型(DOM)節點,創建一個div 標簽元素作為地圖容器,可指定地圖的顯示樣式,一般代碼如下
〈div id=“map” style=“width: 1348px; height: 611px;”〉〈/div〉
在初始化地圖之前,需先以對象變量的形式創建一個Map Option地圖對象,其包含地圖縮放級別、地圖中心等元素.代碼如下
var mapOption={
zoom:9,
center:lanlng,
mapTypeId:google.maps.MapTypeId.ROADMAP,
title:“選為地址”,}
如果將地圖的中心設為某一已知待定點,則還需創建一個latlng值,提供坐標位置信息,將其作為構造函數的參數傳遞給Map Option.通過google.maps.Map對象初始化地圖,如圖2所示.代碼如下
map=new google.maps.Map(document.getElementById(‘map’),mapOption)
2) 經緯度抓取.鼠標左鍵點擊地圖上的任意一點,返回該點的經緯度,并顯示在文本框內.在點擊地圖之前,需在頁面中添加一個Click事件監聽器,以響應用戶在地圖上的點擊,并獲取所點擊點的經緯度,如圖3所示,具體代碼如下
google.maps.event.addListener(map,‘click’,function(event) {
lat.value=event.latLng.lat();
lng.value=event.latLng.lng();
addMarker(event.latLng);});

圖2 地圖初始化顯示效果 圖3 興趣點抓取與屬性編輯界面
然后,將提取抓取的點數據坐標及屬性數據傳遞到本地服務器進行保存,Oracle數據表的SQL語句如下
String sql = “insert into NEWPOINT values(“‘
+mc+”’,MDSYS.SDO_GEOMETRY(2001,21418,MDSYS.SDO_POINT_TYPE(“‘+x+”’,“‘+y+”’,null),null,null))”;
其中,x,y為在Google Maps抓取的經緯度坐標,mc為輸入的屬性字串,提交后完成一個抓取點的空間信息和屬性信息的存儲.
3) SVG地圖符號綁定.由于Oracle Spatial尚沒有地圖符號管理工具,缺乏關聯的符號使數據的內容過于單一,難以辨認.為了將抓取并存儲在Oracle的坐標點按地圖圖式進行Web可視化,Oracle Spatial 提供地圖符號數據表USER_SDO_STYLES,如表1所示.采用SVGDEVELOPER或Inkscape等SVG圖形工具繪制相應的地圖符號,保存成*.svg文件后,上傳到CLOB類型的DEFINITION字段中.

表1 Oracle Spatial 符號數據表USER_SDO_STYLES的存儲結構
以旅游景點地圖符號為例,采用Inkscape繪制符號存儲到CLOB字段的代碼如下
〈?xml version=“1.0” encoding=“utf-8” standalone=“no”?〉
〈svg width=“640” height=“480” version=“1.1” xmlns=“http://www.w3.org/2000/svg” xmlns:xlink=“http://www.w3.org/1999/xlink”〉
〈circle cx=“241.5” cy=“112.5” r=“64.5” fill=“none” stroke=“#000000” stroke-opacity=“1” transform=“matrix(1,0,0,1,3,5)”/〉
〈polygon points=“305 119,206 170,211 59” fill-rule=“evenodd” fill=“#00000” fill-opacity=“1” stroke=“#000000” transform=“matrix(0.002,-0.405,0.6149999,0.003,172.742,200.953)” /〉
〈line x1=“222” y1=“141” x2=“222” y2=“141” stroke=“none” stroke-opacity=“0”/〉
〈line x1=“228” y1=“143” x2=“228” y2=“143” stroke=“none” stroke-opacity=“0”/〉
〈line x1=“241” y1=“148” x2=“226” y2=“143” stroke=“none” stroke-opacity=“0”/〉
〈line x1=“217” y1=“139” x2=“217” y2=“139” stroke=“none” stroke-opacity=“0”/〉
〈rect x=“222” y=“118” width=“7” height=“42” fill=“#000000” stroke=“#000000” transform=“matrix(1.3,0,0,1,-67.65,0)” /〉
〈rect x=“260” y=“119” width=“9” height=“41” fill=“#000000” stroke=“#000000”/〉
〈/svg〉
采用Map Builder連接數據庫后,在列表中可以顯示相關的符號樣式,綁定到相應的抓取的點圖層的顯示效果,如圖4所示.

圖4 SVG符號顯示效果圖
4) 集成發布.采用文中程序調用Google地圖框選抓取桂林市漓江流域旅游資源調查中所需要的景區、餐館、酒店、購物、會展等5類數據集,如圖5所示.構建興趣點數據庫,與采用Oracle Map Builder導入的同樣為WGS-84坐標系的遙感背景圖層進行疊加,基于Oracle Mapviewer發布數據界面,如圖6所示.對比結果表明:基于Google API開發抓取興趣點到本底數據進行集成發布,方法是可行的,不僅可以實現興趣點數據的快速采集,也能充分利用已有的本地化數據資產,為進一步集成開發提供了高效的數據源構建渠道.

圖5 原始興趣點在Google地圖中的顯示效果 圖6 抓取的興趣點在Oracle Map中的顯示效果
通過Google Maps API實現對興趣點的抓取,以Oracle Spatial點對象字段實現存儲,可與其對應的屬性和地圖符號實現一體化存儲,借助Oracle Maps開發WebGIS系統,實現Google Maps興趣點數據快速抓取入庫,及其與已有的矢量和柵格數據的集成發布.幫助應用開發者快速構建空間數據庫、集成發布,大大降低開發周期.結合已有的桂林市漓江流域(城區)旅游資源調查實驗數據,驗證了這一技術方案的可行性與優越性.
[1] 駱炎民.泉州旅游交通WebGIS的設計與實現[J].華僑大學學報(自然科學版),2007,28(1):23-26.
[2] 王建敏,黃旭東,于歡,等.遙感制圖技術的現狀與趨勢探討[J].礦山測量,2007,35(1):38-41.
[3] 楊立法.基于Google Maps API V3的地理數據采集技術[J] .遙感技術與應用,2013,28(5):791-798.
[4] 彭璇,吳肖.Google Map API 在網絡地圖服務中的應用[J].測繪信息與工程,2010,35(1):25-27.
[5] 游蘭,彭慶喜.基于Google Maps API 的地圖解析研究與實現[J].湖北大學學報(自然科學版),2010,32(2):161-164.
[6] 戴兵.基于Google Maps API的校園地圖設計[J].電腦與技術,2008,15(2):184-185.
[7] 崔金紅,王旭.Google 地圖算法研究及實現[J].計算機科學,2007,34(11):193-195.
[8] 孫曉茹,趙軍.Google Maps API 在WEBGIS 中的應用[J].微計算機信息,2006,22(7):224-226.
[9] 巫細波,胡偉平.Google Maps 運行機制以及應用研究[J] .華南師范大學學報(自然科學版),2009,54(2):106-110.
[10] 范新南,陳鵬.COM與WEB技術在地理信息系統中的應用[J].微計算機信息,2003,19(2):75-77.
[11] 何原榮.礦區環境高分辨率遙感監測及信息資源開發利用[M].北京:科學出版社,2014:77-84.
[12] RAVIKANT K,ALBERT G,EURO B.Oracle Spatial空間信息管理: Oracle Database 11g[M].管會生,譯.北京:清華大學出版社,2009:26-42.
(責任編輯: 錢筠 英文審校: 吳逢鐵)
WebGIS for Google Maps Point of Interest Grabbing and Publishing Based on Oracle Spatial Database
ZHANG Xinxin, HE Yuanrong
(College of Computer and Information Engineering, Xiamen University of Technology, Xiamen 361024, China)
The point of interest (POI) grabbing is realized by using Google Map API, then data is stored in term of point type provided by Oracle Spatial. With the aid of Oracle Maps, a WebGIS system is subsequently developed for the purpose of fast POI grabbing and integrative storage of POI data, as well as its corresponding properties and SVG symbols. Application has been carried out for the Lijiang River Vally tourism resources in Guilin city. The results show that the system can help developers to construct Spatial database very quickly, which combines the location of POI, properties, as well as the displaying symbols. Additionally, it is effective to shorten development cycle and reduce the system cost.
Google Maps API; point of interest; Oracle Spatial; Oracle Map
1000-5013(2015)06-0659-04
10.11830/ISSN.1000-5013.2015.06.0659
2015-10-08
章欣欣(1983-),男,講師,博士后,主要從事遙感圖像處理、土地利用變化建模的研究.E-mail:zhangxinxin@xmut.edu.cn.
國家自然科學基金資助項目(41401475, 41471366); 福建省自然科學基金資助項目(2013J01165); 福建省中青年教師教育科研項目(A類)(JA14231); 廈門理工學院高層次人才科研啟動項目(YKJ13022R)
P 208
A