楊瑞杰,劉海硯,郭文月,李 靜,張 暉
(1.信息工程大學(xué) 地理空間信息學(xué)院,河南 鄭州 450001;2. 96633部隊(duì),北京 100096)
全球POI在線抽取方法研究
楊瑞杰1,劉海硯1,郭文月1,李 靜1,張 暉2
(1.信息工程大學(xué) 地理空間信息學(xué)院,河南 鄭州 450001;2. 96633部隊(duì),北京 100096)
對(duì)從互聯(lián)網(wǎng)上抽取全球地理興趣點(diǎn)進(jìn)行研究,國(guó)內(nèi)對(duì)以百度地圖為基礎(chǔ)的POI抽取方法進(jìn)行探討,國(guó)外對(duì)從OpenStreetMap數(shù)據(jù)中抽取POI數(shù)據(jù)進(jìn)行了分析,分別針對(duì)這兩類(lèi)數(shù)據(jù)的POI抽取提出較為高效、準(zhǔn)確的方法,確保提取的POI質(zhì)量,實(shí)現(xiàn)了全球POI的快速在線抽取。
POI;抽取;互聯(lián)網(wǎng);OSM;百度地圖
POI(point of interest,興趣點(diǎn))在地理空間信息數(shù)據(jù)中用點(diǎn)要素表示,它通常代表一類(lèi)真實(shí)的地理實(shí)體。POI主要指與人們?nèi)粘I钪邢嚓P(guān)的地點(diǎn),如醫(yī)院、賓館、餐飲、銀行、景點(diǎn)和地標(biāo)等,在智能交通、應(yīng)急指揮等各類(lèi)LBS服務(wù)領(lǐng)域發(fā)揮著重要作用[1]。傳統(tǒng)的POI獲取方式需要投入大量人力及設(shè)備進(jìn)行“掃街式”采集,這一采集方式具有獲取方式復(fù)雜、一次獲取的數(shù)據(jù)量較小、更新周期長(zhǎng)、人力物力耗費(fèi)高等特點(diǎn)。隨著國(guó)家經(jīng)濟(jì)、軍事、環(huán)境等全球化的發(fā)展,對(duì)全球地理信息數(shù)據(jù)的需求也越來(lái)越強(qiáng)烈。POI數(shù)據(jù)也不例外,如何將POI信息從互聯(lián)網(wǎng)中抽取出來(lái),提升POI數(shù)據(jù)的質(zhì)量,是空間領(lǐng)域相關(guān)研究者的研究熱點(diǎn)之一。
針對(duì)獲取全球高質(zhì)量的POI數(shù)據(jù)面臨的問(wèn)題,提出了從互聯(lián)網(wǎng)上抽取全球興趣點(diǎn)的的一種方法?;舅枷肴缦拢夯ヂ?lián)網(wǎng)信息冗雜,但地圖相關(guān)網(wǎng)站分類(lèi)明確,國(guó)內(nèi)百度地圖擁有豐富的POI資源,并且提供了較為完善的開(kāi)發(fā)接口,國(guó)外開(kāi)源的地圖OSM(open street map,開(kāi)放街道地圖)數(shù)據(jù)完全開(kāi)放,并且在歐洲等地區(qū)數(shù)據(jù)豐富,因此,國(guó)內(nèi)選取百度地圖,國(guó)外選擇OSM分別作為POI提取數(shù)據(jù)源,針對(duì)兩種數(shù)據(jù)源的數(shù)據(jù)格式和開(kāi)放程度制訂了不同的抽取技術(shù)方案,百度地圖POI數(shù)據(jù)的獲取主要是利用百度地圖API逐坐標(biāo)進(jìn)行爬取,OSM數(shù)據(jù)雖然完全開(kāi)放,但數(shù)據(jù)格式常用矢量格式不同,數(shù)據(jù)轉(zhuǎn)換是從OSM中提取POI的關(guān)鍵。
1.1 百度地圖與百度地圖JavaScript API
百度地圖作為國(guó)內(nèi)的主要互聯(lián)網(wǎng)商業(yè)地圖提供者之一,其POI的豐富程度與其他地圖相比要更加豐富。例如以鄭州站為中心,以酒店為關(guān)鍵詞搜索鄭州站周?chē)? km范圍的的酒店類(lèi)POI信息,百度地圖返回POI信息445條,國(guó)內(nèi)另一知名互聯(lián)網(wǎng)地圖商返回POI信息271條。
百度地圖具有豐富的POI信息,但數(shù)據(jù)是非開(kāi)放的,和現(xiàn)在大部分網(wǎng)絡(luò)地圖一樣都是采用切片傳輸在瀏覽器端顯示,無(wú)法直接從百度地圖上獲取POI點(diǎn)要素的矢量數(shù)據(jù)。不過(guò)百度地圖針對(duì)開(kāi)發(fā)者提供了適用于各種終端支持HTML5特性的地圖開(kāi)發(fā),因此可以利用百度地圖JavaScript API采用適當(dāng)方法來(lái)獲取百度地圖的POI信息[2]。
1.2 抽取方法
抽取百度地圖POI信息主要是利用了百度地圖JavaScript API的服務(wù)類(lèi)接口,服務(wù)類(lèi)主要提供LBS相關(guān)檢索和服務(wù)。首先,需要確定抽取POI區(qū)域坐標(biāo)范圍,根據(jù)坐標(biāo)范圍設(shè)定步長(zhǎng)逐坐標(biāo)指定關(guān)鍵詞或不指定關(guān)鍵詞檢索相關(guān)POI,獲取返回的POI信息。百度地圖POI獲取流程如圖1(黃色為關(guān)鍵技術(shù))。
本方法的關(guān)鍵是逐坐標(biāo)進(jìn)行檢索,首先設(shè)定合適的坐標(biāo)檢索步長(zhǎng),步長(zhǎng)設(shè)置過(guò)大可能導(dǎo)致檢索結(jié)果缺失;步長(zhǎng)設(shè)置過(guò)小可能導(dǎo)致檢索點(diǎn)密度過(guò)大致使POI提取效率低下,具體根據(jù)實(shí)驗(yàn)區(qū)域不同設(shè)置合理的步長(zhǎng)。用鼠標(biāo)繪制出POI抽取區(qū)域,利用百度地圖的繪圖接口獲取抽取區(qū)域多邊形邊界坐標(biāo),根據(jù)邊界坐標(biāo)和設(shè)定步長(zhǎng)計(jì)算得出檢索點(diǎn)數(shù)組。得到檢索點(diǎn)數(shù)組后,通常使用兩種方法獲得區(qū)域內(nèi)的POI信息:一種是利用百度地圖的Geocoder類(lèi)接口逐一獲取檢索點(diǎn) 的GeocoderResult的surroundingPois,Geocoder類(lèi)在用戶進(jìn)行地址解析的同時(shí)返回該點(diǎn)附近的POI信息,其輸入?yún)?shù)僅為一個(gè)檢索中心點(diǎn)坐標(biāo);另一種是利用百度地圖的LocalSearch類(lèi)并且指定關(guān)鍵詞逐一獲取檢索點(diǎn)的LocalResult,LocalSearch用于位置檢索、周邊檢索和范圍檢索,其輸入?yún)?shù)為檢索POI關(guān)鍵詞和檢索點(diǎn)中心坐標(biāo),此方法的關(guān)鍵詞依據(jù)百度的POI分類(lèi)分別設(shè)置為“美食”、“酒店”、“休閑娛樂(lè)”、“交通”、“生活服務(wù)”。兩種方法的返回結(jié)果都為L(zhǎng)ocalResultPoi類(lèi),但前者返回的結(jié)果被百度地圖進(jìn)行了刪減,只保留了POI名字、坐標(biāo)和所在城市信息;后者返回的結(jié)果則是完整的LocalResultPoi類(lèi)結(jié)構(gòu),結(jié)構(gòu)如表1所示[2]。
圖1 百度地圖POI獲取流程
表1 完整的LocalResultPOI數(shù)據(jù)結(jié)構(gòu)表
1.3 結(jié)果對(duì)比
依據(jù)上述方法,建立了一個(gè)國(guó)內(nèi)地理興趣點(diǎn)抽取的實(shí)驗(yàn)系統(tǒng),此系統(tǒng)基于百度地圖JavaScript API,主要通過(guò)地圖界面層對(duì)地圖進(jìn)行基本操作并繪制POI抽取區(qū)域,工具層根據(jù)所選區(qū)域?qū)υ搮^(qū)域POI進(jìn)行抽取并保存到Excel文件中。分別使用百度地圖JavaScript API 的Geocoder類(lèi)和LocalSearch類(lèi)以鄭州市為實(shí)驗(yàn)區(qū)域進(jìn)行POI抽取,結(jié)果如表2(部分),可以發(fā)現(xiàn)方法一所獲POI數(shù)據(jù)只有POI名稱和坐標(biāo)信息,而方法二所獲POI數(shù)據(jù)信息較方法一更為豐富,包含了電話、詳情頁(yè)網(wǎng)站、 POI類(lèi)型信息等,如表3所示(部分)。
表2 方法一抽取的POI結(jié)果
表3 方法二抽取的POI結(jié)果
2.1 OSM與OSM數(shù)據(jù)
志愿者地理信息(VGI)在GIS領(lǐng)域一直受到關(guān)注。開(kāi)放街道地圖(OSM)就是VGI全球用戶參與的一個(gè)很好的例子。OSM旨在建立一個(gè)任何人都可以編輯的全球地理數(shù)據(jù)庫(kù),該項(xiàng)目具有很高的社會(huì)價(jià)值和使用價(jià)值。OSM由Steve Coast在2004年7月始創(chuàng),是一種典型的志愿者地理信息。近年來(lái),OSM數(shù)據(jù)量增長(zhǎng)迅速,截止2014-03-01,OSM數(shù)據(jù)量的總體情況:GPS數(shù)據(jù)點(diǎn)總共3 829 201 844個(gè);節(jié)點(diǎn)數(shù)量2 223 977 668個(gè);路徑數(shù)量219 537 496個(gè);關(guān)系數(shù)量2 406 517條,參與編輯的總用戶數(shù)量1 528 868 個(gè)[4]。由于OSM是一個(gè)完全自由開(kāi)放的網(wǎng)絡(luò)地圖協(xié)作計(jì)劃,因此對(duì)OSM的數(shù)據(jù)質(zhì)量和有效性評(píng)價(jià)就成了一個(gè)至關(guān)重要的問(wèn)題。Alex Mauer于2008年對(duì)OSM和Google地圖上的196個(gè)國(guó)家或地區(qū)的首府?dāng)?shù)據(jù)詳細(xì)程度比較,認(rèn)為OSM數(shù)據(jù)略優(yōu)于Google,在歐洲OSM勝于Google,在亞洲和非洲OSM的覆蓋率略高于Google,而在南美與北美洲OSM的覆蓋程度則落后于Google很多,在大洋洲Google略勝于OSM[3-5]。由于Google和OSM數(shù)據(jù)都在持續(xù)穩(wěn)定地增長(zhǎng),因此目前二者覆蓋的情況還需要重新評(píng)估,但從其他相關(guān)研究可以得到的結(jié)論是在覆蓋程度和準(zhǔn)確性上OSM和Google不相上下,數(shù)據(jù)的完整性、專題準(zhǔn)確性和傳統(tǒng)矢量數(shù)據(jù)源以及Google Maps相比則相差甚遠(yuǎn)[6]。但是重要的是OSM數(shù)據(jù)完全開(kāi)源,可以作為境外數(shù)據(jù)的一個(gè)重要來(lái)源。
OpenStreetMap中的地理實(shí)體(例如道路或建筑物)用其基本的數(shù)據(jù)結(jié)構(gòu)(node、 way、 relation)附加標(biāo)簽(tag)來(lái)描述,通過(guò)XML(可擴(kuò)展性標(biāo)記語(yǔ)言)來(lái)存儲(chǔ)數(shù)據(jù)。每個(gè)標(biāo)簽描述了node、 way和relation所代表的地理實(shí)體的地理屬性。OpenStreetMap的自由標(biāo)簽系統(tǒng)可以不受限制地描述每個(gè)要素的屬性。OSM組織確定某些鍵和值的組合為最常用的標(biāo)簽,并以其充當(dāng)非正式的標(biāo)準(zhǔn)[7]。但是,用戶也可以自由創(chuàng)建新的標(biāo)簽,以提高地理實(shí)體屬性的詳細(xì)程度或描述以前未出現(xiàn)過(guò)的地理實(shí)體的屬性。OSM將地理實(shí)體分為31個(gè)要素類(lèi)(如圖2 A-Z),每個(gè)類(lèi)下邊又根據(jù)標(biāo)簽的key和value分為若干小類(lèi)。
2.2 OSM數(shù)據(jù)轉(zhuǎn)換為POI點(diǎn)要素方法研究
OSM的基本數(shù)據(jù)結(jié)構(gòu)有node、way、relation,node中有一部分表示的是點(diǎn)要素,另一部分則表示way中的節(jié)點(diǎn);way中有一部分表示線要素,另一部分閉合的way則表示面要素,而relation則描述不同node或way之間的聯(lián)系,而只有node中表示點(diǎn)要素和way中表示面要素的name值不為空的這部分才是要抽取的POI信息。node數(shù)據(jù)結(jié)構(gòu)如下:
圖2 OSM要素分類(lèi)
OSM的數(shù)據(jù)結(jié)構(gòu)顯然與常見(jiàn)的以點(diǎn)、線、面作為基本要素的數(shù)據(jù)結(jié)構(gòu)不同,從中抽取出POI要素的一種思路是直接將OSM數(shù)據(jù)轉(zhuǎn)換為常用的SHP格式,然后將SHP格式中的點(diǎn)要素作為POI要素;另一種思路則是通過(guò)OSM的標(biāo)簽中的key和value直接提取出符合要求的要素信息。
第一種思路的實(shí)現(xiàn)較為簡(jiǎn)單,首先利用ArcGIS_ Editor_OSM工具或第三方工具將獲取的OSM數(shù)據(jù)轉(zhuǎn)換為點(diǎn)、線、面要素的SHP格式,然后直接將獲取的點(diǎn)要素作為提取到的POI。數(shù)據(jù)在轉(zhuǎn)換過(guò)程中,由于數(shù)據(jù)定義等各方面的差異會(huì)導(dǎo)致數(shù)據(jù)缺失,此外轉(zhuǎn)換過(guò)程中不僅要進(jìn)行點(diǎn)要素轉(zhuǎn)換,而且需要線要素轉(zhuǎn)換、面要素轉(zhuǎn)換,但只有點(diǎn)要素是最后所需要提取的POI要素,所以該方法存在大量冗余操作,不利于大量數(shù)據(jù)的處理。
第一種思路存在種種弊端,不是從OSM的數(shù)據(jù)中提取POI的最佳方法。不過(guò)根據(jù)OSM的數(shù)據(jù)結(jié)構(gòu)特點(diǎn)可以發(fā)現(xiàn)POI信息其實(shí)就隱藏在OSM的標(biāo)簽結(jié)構(gòu)中的key和value中,OSM將地理實(shí)體分為28個(gè)要素類(lèi),每個(gè)類(lèi)下邊又根據(jù)標(biāo)簽的key和value分為若干小類(lèi),因此根據(jù)不同的key和value可以確定該要素是否屬于POI,并且可以確定所屬的POI類(lèi)別[8]。首先,建立一個(gè)不同key和value對(duì)應(yīng)的POI分類(lèi)的模板,確定需要提取的要素與類(lèi)別。然后,對(duì)數(shù)據(jù)中所有要素標(biāo)簽中的key和value進(jìn)行遍歷,并與上述建立的模板進(jìn)行匹配,滿足匹配條件則保存該要素的所有key和value及其坐標(biāo),最終實(shí)現(xiàn)對(duì)整個(gè)數(shù)據(jù)的POI提取。標(biāo)簽對(duì)應(yīng)分類(lèi)模板如下(“=”前為key的值,“=”后為value的值,后邊數(shù)字代表分類(lèi)編號(hào)):
2.3 抽取實(shí)驗(yàn)結(jié)果
根據(jù)上一節(jié)的思路,使用Java編程語(yǔ)言,實(shí)現(xiàn)第二種思路,模板使用上節(jié)所述模板,分別以中國(guó)臺(tái)灣地區(qū)OSM的PBF格式(OSM數(shù)據(jù)的壓縮格式)最新(2015-10-06)數(shù)據(jù)(38.77 MB)和Albania 地區(qū)OSM的PBF格式最新(2015-10-06)數(shù)據(jù)(15.24 MB)作為實(shí)驗(yàn)區(qū)域,進(jìn)行POI抽取。其中中國(guó)臺(tái)灣地區(qū)抽取到POI數(shù)據(jù)70 758條,用時(shí)9 306 ms;Albania 地區(qū)抽取到POI數(shù)據(jù)5 252條,用時(shí)3 850 ms,結(jié)果如表4、5,分別獲取到了POI的名稱、OSMID、坐標(biāo)、類(lèi)別等屬性信息。
表4 中國(guó)臺(tái)灣地區(qū)OSM抽取POI結(jié)果
表5 Albania地區(qū)OSM抽取POI結(jié)果(部分)
從百度地圖和OSM上抽取POI數(shù)據(jù)的相關(guān)方法,該方法實(shí)現(xiàn)了從百度地圖上獲取指定區(qū)域范圍的POI名稱、坐標(biāo)及其他屬性信息;從OSM上快速、高效地獲取相關(guān)地區(qū)POI坐標(biāo)及分類(lèi)信息,提供了一套全球興趣點(diǎn)數(shù)據(jù)在線抽取的解決方案,為實(shí)際應(yīng)用中POI的快速獲取提供了有力的保障。
[1] 陳瑞.基于多源POI數(shù)據(jù)匹配融合方法及研究[D].蘭州:蘭州大學(xué),2014
[2] 百度地圖.百度地圖JS開(kāi)發(fā)文檔 [EB/OL].[2015-09-05], http://lbsyun.baidu.com/index.php?title=jspopular
[3] 陳舒燕.基于OpenStreetMap的出行可達(dá)性分析與實(shí)現(xiàn)[D].上海:上海師范大學(xué),2010
[4] Open Street Map.Open Street Map Stats Report[EB/OL]. [2014-03-01],http://www.openstr-eetmap.org/stats/data_stats. html
[5] MAUER A.Open Street Map vs.Google/Tele Atlas Coverage Street[EB/OL].[2008-12-12],http://blog.dc.esri. com/2008/12/12/Openstreetmap-vs-Googleteleatlas-Street-Coverage/
[6] HAKLAY M, WERBER P.Open Street Map:User-Generated Street Maps [J].Pervasive Computing,2008,7(4):8-12
[7] Open Street Map. Map Features-Primary Features [EB/OL]. [2015-10-30],http://wiki. openstreetmap.org/wiki/Map_ Features#Primary_Features
[8] MORB Z. OsmPoisPbf[EB/OL].[2015-10-30],https://github. com/MorbZ/OsmPoisPbf
P208
B
1672-4623(2017)02-0041-04
10.3969/j.issn.1672-4623.2017.02.013
2016-06-12。
項(xiàng)目來(lái)源:國(guó)家自然科學(xué)基金資助項(xiàng)目(41501446);地理信息工程國(guó)家重點(diǎn)實(shí)驗(yàn)室開(kāi)放基金資助項(xiàng)目(SKLGIE-M-4-3)。
楊瑞杰,碩士研究生,主要從事數(shù)字地圖制圖、網(wǎng)絡(luò)地理數(shù)據(jù)獲取與挖掘相關(guān)研究。