一、行政區獲取
公司需要做大屏數據展示,地圖地區需要到街道級別。
查看了不少資料。
目前的解決方案是,省市級別的數據在阿里地圖選擇器下載( http://datav.aliyun.com/tools/atlas/),可以做到縣級下鑽,如果要下鑽到街道級別,則需要網上找這部分數據(找了很多,不大靠譜。如果付費的話,BIGEMAP,3000多授權,能下載所有行政區數據)。我們公司小,需求不多,就湖南部分區縣,所以網上找的方案,用的BIGEMAP的免費功能,導出邊界,一個個的街道導出(BIGEMAP無mac版)
以醴陵市(湖南省-株洲市-醴陵)為例
1、導出所有街道級別KML文件,然后在 http://geojson.io/#new 轉化為JSON數據,轉化后數據格式大概如下。
{ "type": "FeatureCollection", "features": [ { "type": "Feature", "geometry": { "type": "Polygon", "coordinates": [] } } ] }
2、合並數據,將所有街道級別JSON,合並到一起,就是整個醴陵市區的行政區數據。上述代碼JSON對象下features數據放到一個features對象下(數據太多可以用nodejs或者java寫個方法,讀取文件合並)
{ "type": "FeatureCollection", "features": [ { // 街道1下features }, { // 街道2下features }, { // 街道3下features }, // ... ] }
二、行政區數據合並
區級別的行政區及以上級別可能改變會比較小,街道級別數據變動比較多,以醴陵為例,BIGEMAP上數據應該是比較早以前數據,2015年后街道合並、改名的有很多,下圖對照即可看出
(左邊為BIGEMAP上的醴陵市行政區數據,右圖是我們系統的,差不多也是最新的數據。)
注:本文以geojson、mapshaper這兩個網站合並區域為例,其他博客也看到可以用js之類處理合並,可以去看看
1、合並數據,以【明月鎮】為例,百度百科數據(2015年,賀家橋鎮與大障鎮成建制合並設立明月鎮)。
在 http://geojson.io/#new 上傳家橋鎮與大障鎮的kml文件(之前已下載) OPEN - FILE
獲得如下行政區邊界數據
將右側數據復制出來,另存為json文件
2、修改該json文件,目前得到數據如下,features數組對象下,每個對象的properties增加alias屬性,屬性值為合並后名字。保存
3、打開https://mapshaper.org/,選擇剛上傳的json文件導入,得到如下數據
打開網站命令行工具,輸入命令 dissolve 'alias' -o result.json,回車,然后下載json文件
4、校驗,下載完的json數據拷貝出來,放入geojson右側JSON框內,就可以看到合並后的行政區了。注意修改properties下的屬性,合並后,屬性名為 alias ,需改為 name,與之前保持一致
以上只是一個笨方法,如果有更好方法,求告知。