高德地图API-批量获取位置信息的经纬度

news2024/11/16 16:00:48

我们会遇到一些需要批量把地址数据转换成坐标的问题,一个个查的话通常会比较麻烦,那有没有比较方便的方法呢,我们可以利用高德的地理编码/逆地理编码 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.coloradmin.cn/o/1984068.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

渗透课程练习

第一步进入网站软件,启动Apache和Mysql,这里出了点小插曲,电脑自身的mysl如果没有停止运行就无法启动mysql,找到“服务”后进入寻找mysql停止运行。 第一关 get传参浏览器中输入?id1 创建价格表 修改php的文件后重新输…

MySQL 5.7使用 GTID 和 Binlog高可用方案

文章目录 介绍GTID和Binlog的关系GTID(Global Transaction ID)Binlog(二进制日志) MySQL5.7基于yum搭建安装 MySQL初始化并设置远程登录密码 配置基于GTID的复制模式第一台主服务器配置主服务器配置启动从服务 第二台主服务器配置…

【Linux学习】文件系统 - 第三篇

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 🦅重定向原理以及实现🐱dup2系统调用实现重定向。🎈dup2 系统调用🍑在自定义shell中实…

MM 10 -采购- 标准采购订单

思维导图 说明 采购订单页面介绍 抬头 支付、开票: 付款条件 文本: 机构数据: 其余sheet不常用 行项目 物料 数量 交货日期 价格 :信息记录带出来 工厂 行项目明细 物料 供应商物料号 供应商子范围: 批次&a…

PXE安装配置(rhel7)

实验需求: rhel7 虚拟机 所需软件安装: sudo yum install -y dhcp tftp-server httpd syslinux system-config-kickstart 启动: system-config-kickstart 制作ks文件 注意:File----Save保存一下 打开root下的ks.cfg在分区信…

python:将 NWPU_VHR-10 遥感目标检测数据集转换成 YOLO 格式

作者:CSDN _养乐多_ 本文将介绍将 NWPU_VHR-10 遥感目标检测数据集转换成 YOLO 格式的 python 脚本。 文章目录 一、数据集介绍1.1 数据集下载1.2 数据集介绍1.3 数据格式 二、格式转换三、完整代码 一、数据集介绍 1.1 数据集下载 https://opendatalab.com/Ope…

GRU门控循环单元【数学+图解】

文章目录 1、简介2、门控机制3、公式4、图解GRU4.1、重置门和更新门4.2、候选隐藏状态和隐藏状态⭐ 5、LSTM与GRU的对比6、应用7、训练技巧 🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习&#xff…

MATLAB车道线检测系统

研究了汽车辅助驾驶系统中的计算机视觉问题 . 一方面 , 用小波变换对高速公路上的道路边缘进行检测 ; 另一方面 , 利用灰度以及几何特征实时跟踪和检测车道边缘 , 通过建立道路边缘模型 , 采用数据拟合的方法确定边界轨迹方程 , 从而估算出公路的延伸方向 , 实现汽车的自动防偏…

信号链直流误差

1 简介 在信号链中,可能会累积的误差有两类:直流和交流误差。直流或静态误差(如增益和失调误差)有助于了解信号链的精度或灵敏度。交流类误差也称为噪声和失真,限制着系统的性能和动态范围。这两类误差都需要了解&…

js中的ajax【Axios,XMLHttpRequest,Promise,async】回调函数地狱等问题

目录 前置知识 1.什么是异步请求? 2.什么是回调函数 3.如何查看网页的异步请求(XHR)? 4.什么是ajax jquery的ajax,xhr,axios关系 正文---几种请求之间的关系 axios Axios的诞生 Axios的介绍 定义…

同城交易小程序的设计

管理员账户功能包括:系统首页,个人中心,商家管理,用户管理,商品分类管理,商品信息管理,订单管理,系统管理 微信端账号功能包括:系统首页,商品信息&#xff0…

2024年“华数杯”数学建模竞赛C题完整解析 | 代码与论文分享

C题 技术文档(论文)数据预处理问题一问题二问题三问题四 数据与代码问题一问题二问题三问题四 技术文档(论文) 29页,1w字,完整论文请看文章最后~ 数据预处理 (1)利用python对数据文件…

【安当产品应用案例100集】005-安当ASP实现Exchange双因素登录认证

Exchange双因素登录通过增加额外的安全验证层,可以有效提高企业邮箱系统的安全性,减少了数据泄露和账号被盗的风险,同时也符合了日益严格的安全合规要求。 其必要性主要体现在以下几个方面: 提高安全性:传统的用户名…

未授权访问漏洞系列详解⑤!

Kubernetes Api Server未授权访问漏洞 Kubernetes 的服务在正常启动后会开启两个端口:Localhost Port(默认8080)Secure Port(默认6443)。这两个端口都是提供 Api Server 服务的,一个可以直接通过Web 访问,另一个可以通过 kubectl 客户端进行调用。如果运…

html+css 实现hover上下边框生长

前言:哈喽,大家好,今天给大家分享htmlcss 绚丽效果!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 文…

平安城市行业无人机解决方案(夜间作业场景应用)

夜间作业场景痛点: 夜间隐蔽作业需要权衡看清楚和隐蔽性 可见光相机夜间无法使用 “五合一”混合夜视传感器-H20N 夜间侦察巡逻 H20N星光级相机提升夜间作业覆盖效率 Zenmuse H20N变焦镜头夜景模式效果 Zenmuse H20N变焦镜头夜景模式效果 Zenmuse H20T变焦镜头夜…

【Android】四大组件(Activity、Service、Broadcast Receiver、Content Provider)、结构目录

文章目录 Android系统架构Android四大组件ActivityServiceBroadcast ReceiverContent Provider 两大视图主要结构目录 Android系统架构 https://blog.csdn.net/xzzteach/article/details/140904613 Android四大组件 Activity 一个 Activity 包含了用户能够看到的界面&#xff0…

判断Windows设备是否为翻新

网购设备难免踩坑,一定要学会查验,及时保存证据并投诉商家。 1、查验包装信息,是否有拆封痕迹 商家翻新处理的第一道工序就是换个完整的包装,一般不会把拆过的包装打包卖给买家,除非声明是二手。 2、查验序列号&#x…

干货-并发编程提高——线程的唤醒(七)

没有参数的wait()方法等价于wait(0),等价于永远等下去。虚假唤醒:一个线程也能在没有被通知,中断,或超时的情况下被唤醒。也即所谓的“虚假唤醒”。解决虚假唤醒的办法就是通过while循环来判断条件。 何为虚假唤醒 简单讲,要避免使…

磷酸铁锂与三元锂:谁会取得压倒性的胜利?

在电动车市场中,磷酸铁锂(LFP)和三元锂(NCM/NCA)电池是两种主要的锂离子电池技术。近年来,关于这两种电池的讨论愈发热烈。本文将深入探讨磷酸铁锂与三元锂的真正区别,以及它们在未来电动车市场…