最近在開發的程序中,遇到了一個問題,如何將多段Polygon合并成一個,在網上找了好久,試了一堆方法,這里轉載我找到的一個實際用起來最有用的方法
以下內容轉載于:https://www.cnblogs.com/vmumu/p/13356419.html
一、行政區獲取
公司需要做大屏資料展示,地圖地區需要到街道級別,
查看了不少資料,
目前的解決方案是,省市級別的資料在阿里地圖選擇器下載( 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,與之前保持一致



如果對您有所幫助,歡迎您點個關注,我會定時更新技術檔案,大家一起討論學習,一起進步,

轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/379110.html
標籤:JavaScript
上一篇:arcgis api for js回呼函式如何等待同步
下一篇:[面試題] 函式默認引數作用域
