AreaCity 開源庫整理了省、市、區縣、鄉鎮街道四級行政區劃資料,配套了線上工具轉換成三級、四級聯動JavaScript程式碼,使用自帶的轉換工具軟體可以匯入資料庫;資料來源自: 統計局、民政部、騰訊地圖行政區劃、高德地圖行政區劃,從這四大平臺整合。
資料線上預覽:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/
GitHub地址:https://github.com/xiangyuecn/AreaCity-JsSpider-StatsGov
截止發文(2022-02-12),開源庫內於2022年02月06日釋出了新整理的最新版資料;行政區劃資料更新頻繁,僅區縣每年都有好多個變更,統計局、民政部每年都會發布新資料,不過需要自行處理;所以省市區資料需要經常去同步維護,好在這個開源庫有在持續的長期維護,新資料釋出後更新相對容易很多。
由於開源庫更新維護資料比較及時,所以只要開源庫沒有被關閉,本文介紹的提取方法就一直適用,不僅僅是適用於今年; 比那些上傳到下載平臺就萬年不更新的資料優秀很多。
除了四級行政區劃資料外,開源庫內還可以線上預覽和下載到省市區三級座標向量邊界,和鄉鎮街道地理圍欄資料,並且提供了轉換工具軟體可以方便的匯入資料庫、轉換成shp、geojson、sql格式、轉換座標系;座標邊界我後面再發使用教程,本文只介紹四級行政區劃資料的提取使用。
最新版通用json格式檔案提取
在資料線上預覽頁面底下,提供了個線上轉換工具,開啟就是當前庫裡面整理好的最新版資料(開源庫更新維護資料比較及時),能將省市區鎮四級資料轉成json格式檔案,控制選項也豐富,想要匯出一級、兩級、三級、四級資料都可以:
轉換好後直接可以下載到json檔案:
檔案內包含了n:城市名、i:城市ID、p:上級ID、y:拼音字首,都是單個字母做key,目的是減少檔案大小,如果想要name、id這樣的key,可以點選“線上編輯UserFormat原始碼”裡面預設實現了匯出完整的資料格式。
json檔案對於跨平臺使用很方便,不單單是網頁裡面使用,手機app、桌面程式、後端程式碼內使用均適用。
最新版多級聯動js版資料程式碼提取
在資料線上預覽頁面底下,提供了個線上轉換工具,開啟就是當前庫裡面整理好的最新版資料(開源庫更新維護資料比較及時),能將省市區鎮四級資料轉成多級聯動js,控制選項也豐富,轉成兩級、三級、四級聯動都可以,還能在頁面上直接體驗到四級聯動下拉選擇:
轉換好後直接可以下載到js檔案:
其實js程式碼內已經內嵌了json格式的資料,並且封裝好了多級聯動js程式碼,我們只需要按程式碼內的說明,呼叫方法即可在html網頁裡面快速實現多級聯動,使用者選擇後會有事件回撥。
最新版資料匯入資料庫
匯入前先下載好:
- 【轉換工具軟體】在資料線上預覽頁面內,點選轉換工具軟體連結可以下載到開源庫提供的轉換工具,使用此工具,可以將省市區鎮四級行政區劃資料匯入到MySQL、SQL Server資料庫,或者轉換成sql檔案(匯入到其他相容資料庫);
- 【ok_data_level4.csv資料檔案】在資料線上預覽頁面內,點選顯示的資料下載連結,下載得到
ok_data_level4.csv
資料檔案。
注意:檔案一定要到開源庫內下載,開源庫更新維護資料比較及時,不要到其他的下載平臺下載,不然那些上傳到下載平臺萬年不更新的極有可能下載到老版本。
轉換工具軟體只支援Windows電腦,Mac上可以使用虛擬機器來使用軟體。
準備好後,開啟轉換工具,開始將資料匯入資料庫(這裡匯入的MySQL,匯入SQL Server一樣操作):
- 點選工具內的“高階>>”按鈕,開啟自定義指令碼介面;
- 在指令碼介面點選頂上的選擇檔案,選擇下載的
ok_data_level4.csv
資料檔案; - 在內建指令碼下拉框中選擇“省市區鎮匯入資料庫”選項,然後點選應用按鈕;
- 在左側介面的資料庫設定中,選擇型別為MySQL,填寫好資料庫連線埠+資料庫名+賬號密碼;
- 自定義指令碼介面中點選“匯入資料庫”按鈕,等待一會,4萬多條資料3分鐘不到就就匯入資料庫了。
匯入成功,4萬多條資料耗時2分22秒:
MySQL客戶端檢視資料:
以上操作同樣適用於SQL Server,一樣的步驟,另外內建指令碼中還支援“省市區鎮轉SQL”功能,可以直接匯出SQL檔案,可以匯入到其他相容的資料庫。
資料的一些要注意的地方
開源庫會盡量和民政部的更新頻率保持一致,但由於最為主要的兩個資料來源國家統計局
、騰訊地圖行政區劃
更新頻度並沒有民政部高;因此省市區三級準確度和民政部準確度是一量級,並且要更完整些;第四級鎮級主要由騰訊地圖行政區劃
提供,騰訊資料來源並不經常更新,因此會導致小部分新增、調整的城市第四級沒有資料(會用上級資料補齊),使用前應該考慮此缺陷。
資料通過使用上級資料補齊的形式(具體細節請參考庫文件後面的資料規則),使得任何一個資料都能滿足省市區鎮4級結構,沒有孤立的(ID全域性唯一),因此不管從哪級進行下級選擇,都能進行有效操作。可以通過ID結構來識別這種補齊填充的資料,只要ID為上級的ID+多個0,就代表此資料為補齊填充資料,比如:東莞(4419)-東莞(441900),很容易鑑別出441900為補齊用的填充資料。
會發生補齊行為的資料很少,約50來個,主要為:直筒子市(東莞、儋州等)、省直轄縣級市(濟源、潛江等),他們的下一級僅有補齊的這條資料。另外直轄市(北京、天津等)下級也僅有一條資料,ID結尾為01(不包括重慶,重慶下級分成了市、縣兩個)。
直筒子等這種為什麼不直接把下級往上提一級來做區級,採用補齊填充的方式來對齊資料的原因,請參考issue#9。
資料中不包含大部分行政管理區,比如:雄安新區、天府新區、蘇州工業園區等。
省市區縣鄉鎮座標、向量邊界資料
在資料線上預覽頁面中同樣可以下載到省市區三級座標邊界資料,和鄉鎮級的座標邊界資料,通過轉換工具軟體可以方便的匯入資料庫、轉換成shp、geojson、sql格式、轉換座標系。
座標邊界的使用我後面再發教程,敬請關注~
ECharts Map四級下鑽線上測試和預覽+程式碼生成:https://xiangyuecn.gitee.io/areacity-jsspider-statsgov/assets/geo-echarts.html
【END】