高德地图绘制乡镇边界线

        最近有个任务需要绘制某个乡镇的边界线,认真查看了高德开发文档之后发现,高德的DistrictSearch (通过行政区查询api)能查询的级别为国家、省/直辖市、市、区/县、商圈,查不到乡镇的数据,如下图所示:

        查了很多资料,发现可以在geojson.io | powered by Mapbox上手绘边界线,但是听起来就很麻烦,所以pass。

        我最终实现的方法是通过下载Bigemap GIS Office 软件生成边界数据文件(kml格式),然后在geojson.io | powered by Mapbox 上导入kml文件生成json文件拿到边界线的经纬度信息,用高德的Polygon绘制出来。

一、下载kml边界线文件

        软件下载地址BIGEMAP GIS Office-全能版

        下载安装完成之后打开软件,在左上角选择地图里点击添加,弹出自定义地图管理器,点击添加在线地图源,添加百度地图的官方地址(https://map.baidu.com/)(高德好像不支持,可以先试用百度地图,后面回转化坐标系),如下图所示:

        地图自定义成功后,在选择地图里点击刚刚添加的地图(没有自定义的地图不能下载文件),在右上角选择要下载的乡镇名称,地图直接出现该乡镇的边界线,双击边界线趋于,弹出下载对话框,如下图所示,点击确定会直接下载kml边界线文件;

二、kml文件转json文件

        打开geojson.io | powered by Mapbox网站(反应略慢,耐心等待),在左上角点击open导入下载的kml文件,地图会展示乡镇边界信息,右侧会有边界经纬度信息,点击save 保存为json文件并存放在项目目录下;

三、地球坐标系经纬度转火星坐标系

        通过geojson获取的文件中边界点位的经纬度直接放在高德地图上会有偏差,这是因为geojson获取的经纬度为地球坐标系,而高德试用的是火星坐标系,需要转换之后才能使用,转换方法参考JS不同地图坐标系经纬度转换(天地图、高德地图、百度地图、腾讯地图)_天地图坐标和高德地图坐标系-CSDN博客

四、高德地图加载边界线

       引入json文件,然后使用高德开发文档提供的api即可;如图

### 地图绘制技术及工具 #### Leaflet.draw 描述 Leaflet.draw 是一款用于地图绘制与编辑的强大工具,适用于多种场景。该插件能够集成到基于 Leaflet.js 构建的地图应用中,提供直观易用的界面让用户可以轻松完成各种绘图操作[^1]。 对于 **GIS 应用开发** 来说,在地理信息系统环境中,开发者利用此功能模块使终端使用者具备定义自定义区域或者路线的能力;而在 **在线地图编辑器** 方面,则能构建起支持公众参与规划方案讨论或是协作标注兴趣地点的服务平台;另外针对 **教育领域** ,它同样有助于增强课堂互动性和教学效果——比如让学生亲手勾勒国家轮廓从而加深记忆印象;最后提及的是其在 **数据可视化** 上的作用,即借助图形化表达方式帮助分析师更清晰地呈现空间分布特征并从中挖掘潜在规律。 除了上述提到的功能特性外,值得注意的一点在于该项目本身具有良好的社区维护状态以及丰富的文档资源可供查阅学习,这无疑降低了初学者入门门槛同时也保障了长期使用的稳定性与安全性。 #### Pymaps 工具集概述 另一个值得关注的地图绘制解决方案是由 Python 编写的 pymaps 工具包。通过简单的 API 调用即可实现在网页端展示静态或动态的地图视图,并且可以根据需求调整样式风格、添加标记物乃至热力图层等高级选项[^2]。 pymaps 提供了一种便捷的方式来快速生成 HTML 文件形式的地图作品,尤其适合那些希望专注于数据分析而非前端工程细节的研究人员或爱好者群体。尽管官方仓库已经停止更新多年但仍有许多第三方分支延续着这项开源事业的生命力,因此仍然不失为一个值得考虑的选择之一。 ```python from pymaps import Map, Marker mymap = Map('map_canvas', '40%', '80%') marker = Marker(-37.81692578897363, 144.967155456543) mymap.add_marker(marker) print(mymap.write()) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值