使用高德API进行地址解析:省市县 --> 经纬度

使用高德API进行地址解析:省市县 --> 经纬度

官方文档:https://lbs.amap.com/api/webservice/guide/api/georegeo

参考:https://blog.csdn.net/zhusongziye/article/details/93783928

本文为原创项目

输入示例:
sampleaddressdate
S1江苏省,南京市,溧水区2022-04-12
S2浙江省,杭州市,钱塘区2022-04-18
S3江苏省,南京市,溧水区2022-04-18
S4江苏省,南京市,溧水区2022-04-11
S5安徽省,马鞍山市,含山县2022-04-15

其中日期格式:yyyy-MM-dd,编码格式:UTF-8

输出示例:
sampledatelatlon
S12022-04-1231.651133119.02828
S22022-04-1830.270389120.216211
S32022-04-1831.651133119.02828
S42022-04-1131.651133119.02828
S52022-04-1531.735599118.101421
代码:(注意使用自己的 高德 API key)
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

# @Version  : python3.7
# @Author   : 雪垆
# @Project  : GEE
# @File     : gaode_api.py
# @Time     : 2023/3/10 16:41
# @Software : PyCharm

import pandas as pd
import requests
from requests.exceptions import ReadTimeout, ConnectTimeout
from datetime import datetime

def transform(geo):
    parameters = {"address": geo,  "key":"xxxxxxx your key xxxxxxxxxxx" }
    base = "https://restapi.amap.com/v3/geocode/geo"
    loc = 0
    try:
        response = requests.get(base, parameters, timeout=2)
        if response.status_code == 200:
            answer = response.json()
            loc = answer['geocodes'][0]['location']
        else:
            pass
    except (ReadTimeout, ConnectTimeout):
        pass
    return loc

if __name__ == "__main__":
    path = "data/xxx.data.input.csv"
    data_input = pd.read_csv(path, sep=",", header=0, index_col=None, encoding='utf8')

    data_result = pd.DataFrame(columns=(['sample', 'date', 'lat', 'lon']))
    from tqdm import tqdm

    for index, row in tqdm(data_input.iterrows()):
        strdate = row["date"]
        try:
            a = datetime.strptime(strdate, "%Y-%m-%d %H:%M:%S")
            date = datetime.strftime(a, '%Y-%m-%d')

            address = row["address"]
            address = address.replace(",", "")  # 逗号变换,可有可无
            address = address.replace(",", "")
            # print(address)
            loc = transform(address)
            # 注意高德API返回坐标的顺序
            longitude = loc.split(',')[0]
            latitude = loc.split(',')[1]

            new = pd.DataFrame({"sample": row["sample"], "date": date, "lat": latitude, "lon": longitude},
                               index=["0"])
            data_result = data_result.append(new, ignore_index=True)

        except:
            pass

    outpath = 'data/xxx.data_result.gaode.csv'
    data_result.to_csv(outpath, index=False, header=True)

2023年3月13日

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值