1. 程式人生 > >一種藉助POI粗略的標註城市也許重要的區域的方法

一種藉助POI粗略的標註城市也許重要的區域的方法

第一部分

很久以前,我住在村子裡,因為村子小,所以對村子的一草一木都很熟悉,在熟悉的環境裡就很有安全感。

後來我到了大城市,卻發現城市太大了,一輩子都熟悉不完。

這個城市的絕大部分地方我都沒有去過,就算去了我也不知道這些高樓和院牆裡到底是幹嘛的,這讓我很沒安全感。

後來,總而言之,我做了一個簡單的程式,輸入一個地圖邊界,就能把一些也許重要的區域在地圖上標註出來,像下面這樣(圖片點選放大):

上面這個圖標註的是南京市的秦淮區,其中紅字部分是我手動加上去的,其它部分是程式生成的。

雖然比較簡陋,但上圖還是提供了一些值得關注的資訊:

  1. 南京新街口有很多品牌服裝店
  2. 夫子廟和秦淮河是兩個主要的旅遊景點
  3. 上述兩個區域附近有較多的餐飲飯館
  4. 南京航空航天大學在此區域

然後我又輸入了北京市-海淀區的邊界,這個區的面積更大,然後得到了如下標註圖(圖片點選放大)

稍微觀察後發現,海淀區標註為高等院校的淺黃色區域比較多,然後我放大了高校較密集的區域,用了一些時間把高校的名字用紅色字型手動加上(圖片點選放大):

以上,就是這個程式的全部功能:輸入一個地理邊界,得到一個標註圖。

第二部分

然後就是這個簡單的效果是怎麼實現的~

  1. 想辦法得到全國的POI資料
  2. 輸入一個地理邊界,用Python庫h3將該邊界內的區域填充為無數個緊鄰的六邊形
  3. 計算每個六邊形內各種POI的種類對應的數量
  4. 把每個六邊形看成一篇內容是POI型別的文章,用tf-idf方法獲得每個六邊形的主題
  5. 只顯示主題相同且相鄰個數 >= 3的六邊形
  6. 將所有六邊形和主題用folium庫在地圖上繪製出來

第三部分

  • 如果有小夥伴對其它城市區域感興趣,請在本週(03月21日前)留言 "省-城市-行政區" 的形式,我會盡量生成對應的html檔案並統一放在 百度網盤:  提取碼: sbq4
  • 顯示html檔案的內容需要ke學上網(因為用的奇怪的繪相簿folium。。。)
  • 因為生成標註圖耗時較長,比如生成海淀區的標註圖大概要10分鐘,所以留言時請儘量精確到區,如果時間足夠留言多個區我也會盡量處理
  • POI資料比較難獲得,所以不打算公開,請見諒
  • 標註六邊形型別的藍字可以點選,點選會出來對應的高德座標,可在 高德地圖座標拾取 中輸入座標進一步查詢
  • 部分行政區無法生成標註圖,因為其對應的行政區邊界很不規則

&n