vue将经纬度转换成地理名称_amapGeocode: 使用R进行高德地图地理编码/逆编码

本文介绍了R包amapGeocode,用于利用高德地图API进行地理编码和逆编码。在tidygeocoder等包因API升级失效或不满足需求的情况下,amapGeocode提供了根据地址获取经纬度和根据经纬度获取地址的功能。用户需要先申请高德API Key,然后可以使用包内的函数进行单条或批量查询,结果以tibble或JSON格式返回。此外,还介绍了包中的行政区获取和坐标转换等功能。
摘要由CSDN通过智能技术生成

b23716fe018d394df0337c9f8a986073.png

在最近的学习中,大量使用到了地理编码与地理逆编码,然而不幸的是目前广泛在 R 中介绍的能完成该任务的包因为 API 的 Breaking Upgrade 很多功能已经失效了。尤其是意外的发现,目前的包主要由百度地图 API 作数据源,于是为了满足在 R 中使用高德地图 API 进行地理编码与逆编码的需求,开发了 amapGeocode 这款包,如果能对有同样需求的同学有任何帮助,将不胜荣幸。

什么是地理编码/逆编码

根据地理小子在文章《地理编码与逆地理编码(上)——理解地理编码》中的陈述:

地理编码指将地名的详细地址以地理坐标(如经纬度)表示的过程。其中,将地址信息映射为地理坐标的过程称之为地理编码;将地理坐标转换为地址信息的过程称之为逆地理编码。如图1.1所示为地理编码和逆地理编码的关系。

8b15542c92b4d16aaa76f554dd35946a.png

无论是在科学研究还是数据处理的过程中,凡是涉及到位置信息的情况,经常会使用到地理编码与逆编码:例如给定样本的地址,将其转换为经纬度以便进行量化计算并进行可视化;亦或者给定样本地址信息,将其按照行政区域进行分类以便进行分组并统计。

如何在 R 中进行地理编码/逆编码

目前进行地理编码/逆编码的方法通常是使用地图供应商提供的 API 获取信息。在 R 中目前常使用 tidygeocoder,baidumap 以及 baidugeo 等 Package 完成这类任务。然而,其中 tidygeocoder 使用国际地理信息供应商,其准确度以及信息覆盖程度尚不能令人满意;而后两者因为百度地图 API 的升级,导致目前 Package 不能被新用户调用(其中前者笔者已经提交了 Request,不过是否会被合并还需要进一步等待;后者笔者正在和开发者进行更新,具体修复时间还需等待)。

此外,通过笔者在实际项目的使用过程中发现,在相当多的情况下,高德地图提供的地理编码/逆编码信息似乎好于百度地图,当然因为没有进行客观的对照分析,仅作为个人体验以作参考,如有谬误,您说的对。

amapGeocode

基于以上原因,笔者使用高德开放平台 API 编写了用于 R 的地理编码/逆编码的 Package amapGeocode。代码托管于 Github。具体的高德文档可以查看这里和这里。

目前 amapGeocode 支持通过 getCoord() 进行地理编码,即根据地址获取坐标等信息;以及通过 getLocation() 进行地理逆编码,即根据经纬度获取地址等信息。此外还可以通过 getAdmin() 获取给定行政区其下属行政区(JSONXML 支持多级行政区)。

上述 function 支持输入单条的文本地址/坐标/行政区,同时也支持批量输入信息,其默认返回结果为 tibble, 同时也可以返回原生的 JSON 格式以及 XML 格式,此时批量查询的地址将以 list 的结构保存。

安装

目前可以通过下列命令从 CRAN 安装稳定版:

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue 高德地图地理编码可以使用 AMap JavaScript API 实现。以下是一个简单的示例: 首先需要在 `index.html` 中引入高德地图 JavaScript API: ```html <script src="https://webapi.amap.com/maps?v=1.4.15&key=your-amap-key"></script> ``` 然后在 Vue 组件中,可以使用以下代码获取当前位置的地理编码信息: ```vue <template> <div> <div ref="map" style="width: 100%; height: 400px;"></div> <div>{{ address }}</div> </div> </template> <script> export default { data() { return { address: "" }; }, mounted() { // 创建地图 const map = new AMap.Map(this.$refs.map, { zoom: 16 }); // 获取当前位置 map.plugin("AMap.Geolocation", () => { const geolocation = new AMap.Geolocation({ enableHighAccuracy: true, // 是否使用高精度定位,默认为 false timeout: 10000, // 超过 10 秒后停止定位,默认值为 无穷大 maximumAge: 0, // 定位结果缓存时间,默认值为 0 convert: true, // 自动偏移坐标,偏移后的坐标为高德坐标,默认为 true showButton: true, // 显示定位按钮,默认为 true buttonPosition: "LB", // 定位按钮的位置,默认为 'LB',左下角 buttonOffset: new AMap.Pixel(10, 10), // 定位按钮距离容器左下角的偏移量,默认为 Pixel(10, 20) showMarker: true, // 定位成功后在定位到的位置显示点标记,默认为 true showCircle: true, // 定位成功后用圆圈表示定位精度范围,默认为 true panToLocation: true, // 定位成功后将定位到的位置作为地图中心点,默认为 true zoomToAccuracy: true // 定位成功后自动调整地图缩放级别以适合定位结果的范围,默认为 true }); geolocation.getCurrentPosition((status, result) => { if (status === "complete") { this.getAddress(result.address); } else { console.log("获取当前位置信息失败"); } }); }); }, methods: { // 地理编码 getAddress(address) { this.address = address; } } }; </script> ``` 在 `mounted` 钩子函数中,我们使用 `AMap.Geolocation` 插件获取当前位置信息。然后在 `getCurrentPosition` 回调函数中,我们通过 `result.address` 获取当前位置的地理编码信息,并将其赋值给 `this.address`,以在页面中显示。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值