当前位置: 首页 > news >正文

地址转坐标:利用高德API进行批量地理编码

我们会遇到一些需要批量把地址数据转换成坐标的问题,一个个查的话通常会比较麻烦,那有没有比较方便的方法呢,我们可以利用高德的地理编码/逆地理编码API功能,通过HTTP/HTTPS协议访问远程服务的接口,提供结构化地址与经纬度之间的相互转化的能力;

这里我们先拿一些数据作为分析的基础,数据源来源:‘‘上海市公共数据开放平台’’,数据更新日期:2022年9月29日,网址:加油站-上海市经济和信息化委员会-上海市公共数据开放平台 (sh.gov.cn)

我们可以看到原始数据包含了油站名称、地址、电话等一些标签,但是没有坐标,我们要做的是把地址批量转化坐标。

直接利用批量地理坐标转经纬度工具:地理编码 (高德) 地址转经纬度 - 批量工具网 (piliang.tech)

直接把我们获取的位置放进去,城市选择数据所在的城市即可,这里是’‘上海’’ ,这里需要申请一下高德是key,个人开发者地理编码api调用的限额是5000条/天,数量量大于这个的话,可以多天处理或者多个账号处理,这里放上开发文档,如何申请key看官方文档:创建应用和 Key-Web服务 API | 高德地图API (amap.com)

这里可以直接下载转换结果,坐标系GCJ-02,当然还有个别地址描述太模糊的,会查不出坐标,手动查一下坐标即可,大部分还是可以查到的,以上海加油站分布数据为例,830条数据仅有8条查不出来地址,可以手动调整一下地址,或者直接用高德坐标拾取器,拾取坐标:坐标拾取器 | 高德地图API (amap.com);

这里我们拿高德的坐标拾取器挑一个点验证一下,准确度还可以;

我们把它放到GIS里看一下,导入GIS里时要注意一下文件格式是.csv或者.xls,打开arcgis10.8——>添加数据——>右键显示xy数据——>选择x,y字段,arcgisPro的话是支持.xlsx的,流程一样;

结果如下图所示;

当然这里通过python脚本调用高德地图地理编码API也可以,只要把文件路径和 API 密钥改成自己的即可;

完整代码#运行环境 Python 3.11

import pandas as pd import requests def geocode(address, key): """ 使用高德地图API进行地理编码 :param address: 地址字符串 :param key: 高德地图API密钥 :return: 返回地理编码结果的字典 """ base = 'https://restapi.amap.com/v3/geocode/geo' params = { 'address': address, 'key': key, 'output': 'json' } response = requests.get(base, params=params) answer = response.json() return answer def process_addresses_from_xlsx(file_path, key): """ 从XLSX文件中读取地址,并进行地理编码。 :param file_path: XLSX文件路径 :param key: 高德地图API密钥 :return: None """ # 读取XLSX文件 df = pd.read_excel(file_path) # 假设地址在名为'地址'的列中 addresses = df['地址'] # 创建一个空列表以保存地理编码的结果 results = [] # 遍历地址列中的每一项 for address in addresses: # 调用地理编码API result = geocode(address, key) # 尝试获取结果 try: location = result['geocodes'][0]['location'] lng, lat = location.split(',') # 添加经度和纬度到结果列表 results.append({ 'Address': address, 'Longitude': float(lng), 'Latitude': float(lat) }) except (KeyError, IndexError): # 如果地理编码失败,则跳过该地址 continue # 将结果保存到一个新的DataFrame results_df = pd.DataFrame(results) # 保存结果到新的XLSX文件 results_df.to_excel('加油站GCJ-02坐标.xlsx', index=False) if __name__ == '__main__': # 替换这里的key为您自己的API密钥 api_key = 'your_api_key_here' # 替换为您的实际API密钥 file_path = 'E:/data/加油站.xlsx' # 根据实际情况进行更改文件路径 # 处理XLSX文件并进行地理编码 process_addresses_from_xlsx(file_path, api_key)

因为当前坐标系是GCJ02,需要批量转成WGS84/BD09的话可以用免费这个网站:地图坐标系转换 - 在线工具 (try8.cn)

文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。

http://www.jsqmd.com/news/452747/

相关文章:

  • 基于Java+SSM+Flask网页商城系统(源码+LW+调试文档+讲解等)/网页商城系统使用教程/网页商城系统开发/网页商城系统模板/网页商城系统源码/网页商城系统搭建/网页商城系统优势
  • Flutter 组件 http_retry 的适配 鸿蒙Harmony 深度进阶 - 驾驭分布式负载感知重试、实现鸿蒙端高可靠通讯与协议幂等性审计方案
  • Flutter 组件 mock_client 的适配 鸿蒙Harmony 实战 - 驾驭 HTTP 协议级测试模拟、实现鸿蒙端离线环境下的接口断言与质量门禁方案
  • 某外包全员降薪,AI编程概念还没落地,外包程序员先背了锅,说句扎心的,这只是开始
  • Flutter 组件 shared_aws_api 的适配 鸿蒙Harmony 实战 - 驾驭跨平台 AWS 云服务通讯、实现鸿蒙端签名版本 4 (SigV4) 自动审计与高性能 API 鉴权方案
  • Flutter 组件 simplify 的适配 鸿蒙Harmony 实战 - 驾驭路径精简算法、实现鸿蒙端高性能地理足迹渲染与矢量图形优化方案
  • Flutter 组件 lcov_parser 的适配 鸿蒙Harmony 实战 - 驾驭 0307 批次代码质量审计、实现鸿蒙端测试覆盖率分析与自动化治理看板方案
  • Edge浏览器STATUS_ACCESS_DENIED错误终极指南:从原因分析到一键修复
  • ChatGPT指令实战指南:从基础到高级应用的最佳实践
  • 如何安全留存社交记忆?GetQzonehistory全攻略
  • 内容访问技术解析:开源工具辅助资源获取系统指南
  • x64dbg调试器实战:从零开始分析32位程序的完整流程(附常见问题解答)
  • 4步掌握开源内容解锁工具:突破付费访问限制的完整方案
  • 数字记忆备份完整指南:3个维度构建个人数据安全防线
  • 网页内容访问优化指南:合法获取付费内容的技术策略
  • 3步搞定音乐获取:让Spotify音乐实现永久离线自由
  • AI 辅助开发实战:基于 Spring Boot + Vue 的毕业设计高效构建与参考文献整合指南
  • PADS差分对设置避坑指南:为什么你的高速信号总是不稳定?
  • 【多目全景】基于海思3403平台的实时4路视频拼接与畸变校正技术解析
  • 客服智能体的运行图:从架构设计到性能优化实战
  • Flutter 三方库 brick_offline_first_with_rest 的鸿蒙化适配指南 - 打造离线优先架构、SQL与REST多端数据同步及一致性保障实战
  • 手把手教你用TP4056打造单节锂电池智能充电模块(附电路优化技巧)
  • 三步掌握Resynthesizer:高效部署GIMP纹理合成插件零门槛全平台实践指南
  • Blender建模避坑指南:为什么你的模型细分后总是变形?5个布线核心原则解析
  • Flutter 组件 dartframe 的适配 鸿蒙Harmony 实战 - 极简主义后端框架集成、多端逻辑复用与业务解耦重构方案
  • 从数据库到前端展示:一个Java时间格式转换的完整解决方案(含SimpleDateFormat最佳实践)
  • 数字内容访问的技术方案:Bypass Paywalls Clean应用指南
  • Flutter 组件 globe_cli 的鸿蒙适配 鸿蒙Harmony 实战 - 自动化部署云端边缘函数、实现高效跨端 CI/CD 与开发者工具链集成方案
  • 如何让学术资源获取不再受限:Unpaywall高效解锁开放获取文献指南
  • 突破付费内容限制:Bypass Paywalls Clean实用指南