地图区域合并

--转--

原文链接:https://blog.csdn.net/qq_19816325/article/details/108520451

原文内容如下:

想要实现地图区域合并,重点在于地图Json合并。

需求描述:

我想要A市和B市合并成一个区域,
A的坐标点为[apt1,apt2,apt3,apt4,...,apt1];
B的坐标点为[bpt1,bpt2,bpt3, ..., bpt1];
有什么好的方案让AB合并成一个区域。

比如我想把广东和广西练成一片区域,变成两广地区,去除二者的边界线。
图片描述

网站:https://mapshaper.org/

开始:

1、获取想要的json地图:

http://datav.aliyun.com/tools/atlas/#&lat=31.769817845138945&lng=104.29901249999999&zoom=4

2、编辑地图文件:

打开json格式的地图文件

3、利用mapshaper  https://mapshaper.org/ 进行地图编辑

 


点击select上传地图

点击import加载地图

打开console控制台,利用dissolve命令合并区域并导出编辑完成的地图

4、对编辑导出的地图文件再次进行修改

 


将原本的area字段替换成name(在pyecharts中只能识别name名称),并添加cp字段指定区域的中心点

5、自定义地图编辑完成,保存。

结果:

Update:

特定企业有自己的区域划分,坐标文件(.shp等)也可以用https://mapshaper.org/导入后,转为JSON文件,但是要注意导出文件略有不同,需要手动修改。参考:https://blog.csdn.net/u011365716/article/details/93139102

 

参考文章:

https://segmentfault.com/q/1010000013001601

https://www.lizenghai.com/archives/60916.html

https://blog.csdn.net/shaxiaozilove/article/details/58687003

 

以下为本人参考原文描述实操:

修改之后导入,即呈现了新的区域划分,在console下导出新的json

将新的json导入到echarts中,加入数据 即可得到如下

### ECharts 合并地图区域方法 在ECharts合并地图区域可以通过修改GeoJSON数据来实现。具体操作涉及下载所需的地图JSON文件,编辑这些文件以移除不需要显示的边界线,并最终将调整后的JSON应用于项目。 对于希望简化这一过程的情况,GitHub上有一个非常实用的例子[^2]。此例子提供了一套完整的解决方案,允许开发者轻松地完成地图区域合并工作。通过克隆仓库中的代码至本地环境后,在浏览器里打开相应的HTML页面;此时可以根据个人需求更改默认加载的中国全境图层为其他特定地理范围内的JSON表示形式。接着指定待融合的地级或县级行政区划名称列表作为参数传递给脚本函数调用,经过一系列计算处理之后就能得到新的多边形单元格结构体对象数组输出到JavaScript控制台上供进一步利用了。 下面是一个简单的Python脚本来展示如何自动化上述部分流程: ```python import requests from pyquery import PyQuery as pq def fetch_map_json(url): response = requests.get(url) return response.json() def merge_areas(map_data, areas_to_merge): # 创建一个新的特征集合用来保存合并的结果 merged_features = [] for feature in map_data['features']: properties = feature['properties'] if any(area in properties['name'] for area in areas_to_merge): continue merged_features.append(feature) # 将剩余未被过滤掉的feature加入到map_data中 map_data['features'] = merged_features return map_data if __name__ == "__main__": url = "path/to/your/mapfile.json" areas_list = ["area1", "area2"] # 替换成实际要合并的城名或者区县名 original_map = fetch_map_json(url) result = merge_areas(original_map, areas_list) with open('merged_result.json', 'w') as f: json.dump(result, f) ``` 这段程序首先定义了一个`fetch_map_json()`辅助功能用于获取远程服务器上的原始地图数据集副本。随后实现了核心逻辑——即`merge_areas()`函数负责接收两个输入参数:一个是整个地图的数据字典(`map_data`)另一个是要消除其轮廓线条的目标行政单位字符串列表(`areas_to_merge`)。遍历所有要素特性字段时一旦发现匹配项就跳过不计入新创建的功能清单内从而达到隐藏效果。最后把整理好的结果序列化成JSON格式存储起来以便后续集成进可视化应用当中去。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值