国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于Python的互聯(lián)網(wǎng)POI數(shù)據(jù)爬取

2021-09-27 18:09:02鄧曉斌
地理空間信息 2021年9期
關(guān)鍵詞:電子地圖數(shù)據(jù)量南昌

鄧曉斌

(1.江西水利職業(yè)學(xué)院,江西 南昌 330013)

隨著互聯(lián)網(wǎng)和移動通信的高速發(fā)展,人們可以輕松訪問網(wǎng)絡(luò)上的大量數(shù)據(jù),其中興趣點(POI)數(shù)據(jù)尤其受到大家的喜愛,如在滴滴打車上可實時查詢附近的滴滴車輛POI信息,百度地圖上可查詢周邊的美食店P(guān)OI信息等。POI數(shù)據(jù)是由真實地理實體抽象成的點,其分布與城市的經(jīng)濟活躍度呈正相關(guān),大多數(shù)分布在經(jīng)濟活躍度較高的區(qū)域[1]。由于其獲取成本低、屬性信息量大等特點,POI數(shù)據(jù)被很多行業(yè)所采用,如曹芳潔[2]等利用POI數(shù)據(jù)研究了城市的空間結(jié)構(gòu);趙智勇[3]利用POI數(shù)據(jù)對城市的功能區(qū)位進行了劃分;徐智邦[4]等則利用POI數(shù)據(jù)對城市道路進行了自動化提取。由此可見,POI數(shù)據(jù)具有重要的實際價值,因此如何獲取POI數(shù)據(jù)成為一個重要問題。

Python是一種面向?qū)ο?、解釋型的計算機程序設(shè)計語言,是一種功能強大的通用型語言[5],已被廣泛應(yīng)用于圖形處理、網(wǎng)絡(luò)編程、網(wǎng)絡(luò)爬蟲、數(shù)據(jù)分析挖掘、機器學(xué)習(xí)等領(lǐng)域。鑒于Python在網(wǎng)絡(luò)爬蟲和數(shù)據(jù)分析方面的強大功能,本文采用Python對互聯(lián)網(wǎng)POI數(shù)據(jù)進行爬取和挖掘。

1 POI的概念

對于POI的概念,國內(nèi)外學(xué)者給出了不同的論述,李霖[6]等認為POI作為一種代表真實地理實體的點狀地理空間大數(shù)據(jù),是地理空間中具有標志意義的地理對象;Maceachren A M[7]等則認為POI數(shù)據(jù)集合不僅具有傳統(tǒng)大數(shù)據(jù)5V(數(shù)據(jù)量大、處理速度快、多樣性、準確性、蘊含價值)特點,而且單體POI數(shù)據(jù)包含了實體的名稱、經(jīng)緯度、地址、類型、電話、行政區(qū)等信息[8];綜合國內(nèi)外的表述,本文認為,POI是點狀數(shù)據(jù),具有豐富的屬性信息,廣泛地分布在互聯(lián)網(wǎng)中,是人們?nèi)粘I钪蟹浅8信d趣的一種空間 位置。

POI以多種形式存在,最常見的是電子地圖上與社會經(jīng)濟密切相關(guān)的地理實體點要素,如圖1所示,通過百度地圖檢索出某地區(qū)的旅游景點POI信息。在某些情形下,POI也泛指一切受關(guān)注程度高于普通點要素的地理點[8]?;ヂ?lián)網(wǎng)上很多論壇、博客、社交軟件等可進行用戶簽到,形成了多種多樣的POI數(shù)據(jù)。另外,人們?nèi)粘I钪行纬傻幕顒榆壽E也是一種POI數(shù)據(jù),如乘車GPS軌跡、手機位置定位等。

圖1 旅游景點 POI實例

POI主要通過電子地圖平臺(百度地圖、高德地圖、騰訊地圖等)獲取,其數(shù)據(jù)信息量大且精度較高、更新及時。這些電子地圖的網(wǎng)站可通過檢索接口或網(wǎng)頁爬取技術(shù)獲得POI。還有一些非電子地圖的網(wǎng)站存在很多POI數(shù)據(jù),如微博、大眾點評網(wǎng)、美團網(wǎng)等,同樣可通過網(wǎng)頁爬取技術(shù)獲得POI。

2 研究方法

本文的主要目的是通過對互聯(lián)網(wǎng)中的POI數(shù)據(jù)進行爬取,獲得有價值的POI信息,從而為POI增值業(yè)務(wù)提供數(shù)據(jù)基礎(chǔ)。由于電子地圖是POI數(shù)據(jù)來源的重要途經(jīng),且百度地圖在人們?nèi)粘I钪械氖褂妙l率較高,因此本文選擇爬取百度地圖POI數(shù)據(jù)。

硬件設(shè)備主要為電子計算機,軟件設(shè)備主要包括Python2.7、Excel、txt記事本以及百度地圖開放平臺。本文以百度地圖為平臺,構(gòu)建百度地圖POI數(shù)據(jù)爬取框架,如圖2所示,以Excel和txt記事本數(shù)據(jù)格式輸出成果。

圖2 基于百度地圖的POI數(shù)據(jù)爬取框架

3 實例分析

由于POI數(shù)據(jù)類型眾多,不可能爬取互聯(lián)網(wǎng)上所有類型的POI數(shù)據(jù),因此本文以爬取南昌餐館POI數(shù)據(jù)為例,根據(jù)模型框架,詳細介紹了POI數(shù)據(jù)爬取的過程。

3.1 注冊用戶

使用百度地圖開放的各種功能和數(shù)據(jù)前,必須先成為百度的用戶,可下載百度App進行掃碼注冊,也可采用QQ或微信等形式注冊登入。

3.2 AK密鑰獲取

進入百度地圖開放平臺,登錄“控制臺”,在“應(yīng)用管理”中創(chuàng)建應(yīng)用。百度對于每個用戶的AK密鑰配額是有限度的,大多數(shù)未認證過的用戶每天不能超過10萬次,每min不能超過6 000次。

3.3 POI數(shù)據(jù)爬取

由于使用一次AK密鑰生成的URL最多能顯示 20個POI數(shù)據(jù),同時在特定的坐標范圍內(nèi),一次只能生成20個URL,因此采用AK生成的URL頁面最多可爬取400個POI數(shù)據(jù)。如果POI數(shù)據(jù)量超過400,則需對區(qū)域進行裁剪分割,使每個子區(qū)域的POI數(shù)據(jù)量不超過400個,再分別對每個子區(qū)域進行頁面爬取。

3.3.1 小數(shù)據(jù)量

在爬取POI數(shù)據(jù)量≤400的情況下,可直接在URL地址欄里輸入以下信息:http://api.map.baidu.com/place/v2/search?query=餐館®ion=南昌&page_size=20&page_num=0&output=json&ak=3kHNz4jtBc2t Ar8RMAQZAyBgEa4vWtsa,其中query代表查詢“餐館”,region代表查詢的區(qū)域為“南昌”, page_size代表每個頁面顯示20個POI數(shù)據(jù),page_num代表查詢的頁面,output代表輸出的數(shù)據(jù)格式為JSON,ak為密鑰。將page_num依次設(shè)置為1、2、…、19,可得到不同頁面的POI數(shù)據(jù)。該類POI數(shù)據(jù)包含餐館名稱、餐館位置(經(jīng)緯度)、地址、省份、城市、轄區(qū)、街道號、電話等大量重要信息。南昌餐館POI數(shù)據(jù)的JSON樣式為:

當把page_num設(shè)置為20時發(fā)現(xiàn),JSON文件內(nèi)容變成以下情況,里面沒有POI數(shù)據(jù),說明用一次AK只能顯示20個頁面。

JSON數(shù)據(jù)格式類似于Python中的數(shù)字字典形式,因此利用Python語言能非常方便地將其轉(zhuǎn)換為CSV或Excel文件。利用Python語言將POI的JSON數(shù)據(jù)格式轉(zhuǎn)換為CSV格式的代碼為:

南昌餐館POI數(shù)據(jù)的CSV格式如圖3所示。

圖3 POI數(shù)據(jù)的CSV格式

3.3.2 大數(shù)據(jù)量

針對POI數(shù)據(jù)量超過400的情況,需將該范圍劃分為多個小區(qū)域,使每個小區(qū)域內(nèi)的POI數(shù)據(jù)量不超過400。若需要尋找百度地圖中南昌市范圍內(nèi)所有的餐館POI數(shù)據(jù),則首先需將南昌市的地理位置范圍確定下來,可通過百度的坐標拾取功能來獲得。南昌市地圖的左下角的緯度為28.163 652、經(jīng)度為115.447 208,右上角的緯度為29.127 212、經(jīng)度為116.572 405。

從上述URL地址信息中可知bounds(相當于 region)和page_num兩個重要變量,其中bounds={左下角緯度,左下角經(jīng)度,右上角緯度,右上角經(jīng)度},代入南昌市的范圍數(shù)據(jù)bounds={28.163 652, 115.447 208,29.127 212,116.572 405},整個南昌市包含的餐館POI超過400個,因此需對該范圍進行切割。如圖4所示,對bounds范圍進行矩形分割,得到4個小矩形,若小矩形范圍仍過大,則需進一步切割,以此類推,直到每個小矩形內(nèi)的POI數(shù)據(jù)量不超過400。page_num的取值范圍為0~19。一個矩形坐標范圍內(nèi)包含20個page_num,做一次切割就有4×20=80個page_num,每個page_num里存放20個POI,則一次切割后一共能爬取80×20=1 600個POI;若將4個小矩形再做切割,產(chǎn)生更小的矩形,則兩次切割后一共能爬取1 600×4=6 400個POI。

圖4 地圖范圍切割

爬取整個頁面的POI數(shù)據(jù),需要執(zhí)行多個循環(huán),Bounds=[rectangle1,rectangle2,rectangle3,rectangle4],Page_nums=[0,1,2,…,19]。其偽代碼為:

根據(jù)上述原理,可把POI的爬取過程分為3個階段:①生成bounds列表;②生成URL列表;③將爬取的POI數(shù)據(jù)保存到txt文件。其中,生成bounds列表的完整代碼為:

’這段代碼生成的是矩形分割后的多個矩形范圍坐標具體運行結(jié)果為:

生成bounds列表后,再對page_num從0~20進行遍歷,即可得到URL列表,具體代碼為:

運行結(jié)果中的一個例子為:

將爬取的POI數(shù)據(jù)保存到txt文件,具體代碼為:

代碼執(zhí)行后生成的南昌餐館POI的txt文件格式如圖5所示。

圖5 南昌餐館POI數(shù)據(jù)的txt文件格式

4 結(jié) 語

POI數(shù)據(jù)不僅具有空間位置信息,而且具有豐富的屬性信息,能為眾多行業(yè)提供數(shù)據(jù)支撐。本文詳細介紹了百度地圖中南昌餐館POI數(shù)據(jù)的爬取過程,采用功能強大的Python語言進行開發(fā),取得了良好效果,下一步將對爬取的數(shù)據(jù)進行深入分析,從而挖掘出有用的商業(yè)價值。

猜你喜歡
電子地圖數(shù)據(jù)量南昌
中國公豬站引種指南電子地圖
南昌是我 南昌是你
心聲歌刊(2022年3期)2022-06-06 06:31:42
我在南昌 你在哪
心聲歌刊(2022年3期)2022-06-06 06:31:42
基于大數(shù)據(jù)量的初至層析成像算法優(yōu)化
計算Lyapunov指數(shù)的模糊C均值聚類小數(shù)據(jù)量法
高刷新率不容易顯示器需求與接口標準帶寬
寬帶信號采集與大數(shù)據(jù)量傳輸系統(tǒng)設(shè)計與研究
電子制作(2019年13期)2020-01-14 03:15:18
南昌護橋記
中國公路(2017年8期)2017-07-21 14:26:20
基于Mapserver的增強現(xiàn)實電子地圖的設(shè)計與實現(xiàn)
電子地圖在初中地理教學(xué)中的應(yīng)用實踐
连城县| 灌云县| 鄢陵县| 湖州市| 宜川县| 鹿邑县| 沁源县| 崇州市| 车致| 本溪市| 渑池县| 张家界市| 仪陇县| 隆德县| 嘉定区| 益阳市| 荥阳市| 莱州市| 上虞市| 扎赉特旗| 新巴尔虎右旗| 白城市| 尼勒克县| 柳州市| 西城区| 民县| 勐海县| 丹东市| 于都县| 镇原县| 海宁市| 江川县| 朝阳县| 北海市| 宁夏| 锡林浩特市| 大名县| 平潭县| 明光市| 公主岭市| 青田县|