從高德采集最新的省市區三級坐標和行政區域邊界,用js在瀏覽器中運行


本文描述的是對國家統計局於2019-01-31發布的《2018年統計用區划代碼和城鄉划分代碼(截止2018年10月31日)》中省市區三級的坐標和行政區域邊界的采集。隨着時間變化,本文內容會逐漸變舊或失效,請到GitHub倉庫查閱最新更新數據。

本文更新(移步查閱):
19-04-15 新采集了2018的省市區三級的坐標和行政區域邊界數據csv格式
19-03-22 采集了2018的城市數據

數據下載 GitHub:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov/releases

邊界效果預覽

全國省份
廣東

數據來源

坐標和邊界是高德地圖提供的數據接口;可通過方法轉換成其他坐標系的坐標,比如百度地圖的。

省市區三級是國家統計局統計標准《2018年統計用區划代碼和城鄉划分代碼(截止2018年10月31日)》,截稿時是最新的。

數據采集

1. 調用高德地圖接口抓取原始數據

涉及源碼:map_geo.js

進入高德地圖測試頁面,執行代碼即可完成抓取,開了4個模擬的線程,采集了3300+數據,首次運行大概2分多鍾完成采集。

抓取完成后會自動彈出保存文件數據。

源碼里面包含了對不同地名的處理,有些城市不能直接通過編碼或城市名稱來查詢,高德地圖相對於統計局還是有些滯后。

2. 處理數據和導出CSV

涉及源碼:map_geo_格式化.js

這個代碼比較簡單,目前只是起到把數據導出來的作用,里面寫了一大堆方法,但運行過一次后發現,基本上可以不用了,因為對數據進行驗證部分發現高德的數據非常完美。

代碼運行完成就自動彈出保存csv文件數據了。

為什么不采百度的

使用高德接口采集是后面才決定的,因為本來是用百度地圖的接口,但數據全部搞完,經過使用發現百度地圖數據有嚴重問題:

參考 肅寧縣(右下方向那塊飛地)路南區(唐山科技職業技術學院那里一段詭異的邊界) 邊界,百度數據大量線段交叉的無效polygon百度地圖測試),沒有人工無法修正,高德沒有這個問題(高德地圖測試);

並且高德對鏤空性質的地塊處理比百度強,參考天津市唐山大塊飛地的處理,高德數據只需要Union操作就能生成polygon,百度既有Union操作又有Difference操作,極其復雜數據還無效。

所以放棄使用百度地圖數據。

如何使用這些數據

坐標和邊界數據和省市區數據是分開存儲的,通過ID來進行關聯。

采集到的csv文件可以導入到數據庫內使用,由於POLYGON需要解析,蠻復雜的,可以參考src/map_geo_格式化.js內的SQL Server導入用的SQL語句的例子。

如果需要特定的POLYGON格式,可以根據庫里面介紹的字段格式,自行進行解析和驗證。

使用過程中如果遇到多種不同坐標系的問題,比如請求的參數是WGS-84坐標(GPS),我們后端存儲的是高德的坐標,可以通過將WGS-84坐標轉成高德坐標后進行處理,百度的坐標一樣。轉換有相應方法,轉換精度一般可以達到預期范圍,可自行查找。或者直接把高德的原始坐標數據轉換成目標坐標系后再存儲(精度?)。

SQL Server中的運行結果(大概2分鍾完成POLYGON的轉換,表數據物理存儲空間大概300M):
全國

最后

最新的數據下載和相關問題請到 Github查看:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov

releases內除了有省市區三級坐標和行政區域邊界csv數據外,還有處理好的3級或者4級省市區鎮 csv數據提供下載。

如果這個庫有幫助到您,請 Star 一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM