【项目总结】如何获取地图上的所有POI
1. 地圖POI數據是什么,有什么用
? ?關于地圖數據123,可以參考一下這篇?https://www.zhihu.com/question/21530085/answer/18728706,回答了很多信息;下圖是摘自其中,展示了建立一個地圖需要的幾個圖層數據,從底向上依次是:衛星圖,街道信息,建筑信息,地圖熱點信息;衛星圖是圖片,建筑信息是幾何信息,這兩者在平時比較少使用和關心;常用的是有道路信息,可以用來做路徑規劃和導航,開源地圖OpenStreetMap提供了部分道路的免費數據,http://www.openstreetmap.org/;而使用最多的,是地圖熱點信息,即POI。POI代表一個興趣點,可以是樓宇、小區、商店、銀行、學校等等,其提供的附帶信息較為豐富,常有的有“地址”、“經緯度”、“POI類型”等。很多公司都會根據用戶的消費地點或活動地點來做深入挖掘,完善用戶畫像,這時,POI信息顯得特別重要。一個很簡單的例子,當一個用戶一直出現在某學校和它周圍,那么很可能是這個學校老師或者學生。
? ??
?
2. 如何獲得高德地圖所有的POI
? ? 高德地圖提供了獲取矩形范圍內所有POI列表的接口,一個請求例子如下:
http://restapi.amap.com/v3/place/polygon?polygon=108.640287,26.043184;110.579374,27.275355&key=dc44a8ec8db3f9ac82344f9aa536e678&extensions=all&offset=5&page=1? ? 其中polygon是矩形對角頂點,offset是每頁顯示的poi個數,page是頁碼。這樣獲得的一個POI信息如下:
{"id": "B000A7BD6C","name": "清華大學","tag": [],"type": "科教文化服務;學校;高等院校","typecode": "141201","biz_type": [],"address": "雙清路30號","location": "116.32676,40.003305","tel": "010-62782165","postcode": [],"website": "www.tsinghua.edu.cn","email": [],"pcode": "110000","pname": "北京市","citycode": "010","cityname": "北京市","adcode": "110108","adname": "海淀區","gridcode": "6016020610","distance": [],"navi_poiid": "J50F001019_327708","entr_location": "116.332936,39.996159","business_area": [] }? ? ?但是,這個矩形區域搜索接口有一個限制——每個矩形只能獲得前1000個POI,超過之后,再翻頁就沒有數據了。所以,想利用這個接口來搞定全國POI,就需要先把全國分為若干矩形,保證每個矩形之內高德地圖POI數量小于1000。還好這個接口會返回一個矩形區域內所有POI的數量,使得我可以來做這件事。
? ? 將全國劃分矩形的思路比較簡單,將全國包圍盒作為根節點,當POI超過1000時,分成4個相等小矩形,這樣遞歸下去,創建出4叉樹。今天計算后,全國、北京、上海劃分結果如下圖。有了這些矩形,我就可以一個個地翻頁得到了。估算了一下,獲得高德所有POI,請求數在20萬左右,只要很少資源就可以搞定了。
? ??
? ??
? ??
補充20160127
? ?用矩形檢索的api有一個問題,就是其參數 types 和 keywords 必須兩者至少有一個,否則返回poi不全。我在拿到手一個城市的poi后,檢測發現有缺的,才發現了這個問題,然而高德在其官方文檔上并沒有說明,而是在論壇里面講的。我選擇types參數,才把一個城市抓全;抓完后發現,poi的數量確實很龐大,高德號稱全國有5000萬,我估計沒有這么多也起碼有2000萬。
?
轉載于:https://www.cnblogs.com/sparrowjack/p/5151477.html
總結
以上是生活随笔為你收集整理的【项目总结】如何获取地图上的所有POI的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 手机App常见功能测试点
- 下一篇: 【地理信息技术】 上机04 栅格数据的空