省、市、区、街道行政区数据以及行政区数据合并问题

62 阅读3分钟

最近在开发的过程中,遇到了一个问题,如何将多段Polygon合并成一个,在网上找了好久,试了一堆方法,这里转载我找到的一个实际用起来最有用的方法

以下内容转载于:www.cnblogs.com/vmumu/p/133…

一、行政区获取

公司需要做大屏数据展示,地图地区需要到街道级别。

查看了不少资料。

目前的解决方案是,省市级别的数据在阿里地图选择器下载( datav.aliyun.com/tools/atlas…),可以做到县级下钻,如果要下钻到街道级别,则需要网上找这部分数据(找了很多,不大靠谱。如果付费的话,BIGEMAP,3000多授权,能下载所有行政区数据)。我们公司小,需求不多,就湖南部分区县,所以网上找的方案,用的BIGEMAP的免费功能,导出边界,一个个的街道导出(BIGEMAP无mac版)

 

以醴陵市(湖南省-株洲市-醴陵)为例

1、导出所有街道级别KML文件,然后在 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年,贺家桥镇与大障镇成建制合并设立明月镇)。

在 geojson.io/#new 上传家桥镇与大障镇的kml文件(之前已下载) OPEN - FILE

 

 获得如下行政区边界数据

 将右侧数据复制出来,另存为json文件

2、修改该json文件,目前得到数据如下,features数组对象下,每个对象的properties增加alias属性,属性值为合并后名字。保存

3、打开mapshaper.org/,选择刚上传的json文件导入,得到如下数据

 

 

打开网站命令行工具,输入命令 dissolve 'alias' -o result.json,回车,然后下载json文件

 4、校验,下载完的json数据拷贝出来,放入geojson右侧JSON框内,就可以看到合并后的行政区了。注意修改properties下的属性,合并后,属性名为 alias ,需改为 name,与之前保持一致

 

 

如果对您有所帮助,欢迎您点个关注,我会定时更新技术文档,大家一起讨论学习,一起进步。