1. 程式人生 > 實用技巧 >省、市、區、街道行政區資料以及行政區資料合併問題

省、市、區、街道行政區資料以及行政區資料合併問題

一、行政區獲取

公司需要做大屏資料展示,地圖地區需要到街道級別。

查看了不少資料。

目前的解決方案是,省市級別的資料在阿里地圖選擇器下載(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,與之前保持一致

以上只是一個笨方法,如果有更好方法,求告知。