查询两城市地址

1.百度地图开放平台 | 百度地图API SDK | 地图开发 (baidu.com)

进入百度地图开放平台后,登陆用户,点击控制台——应用管理——我的应用——创建应用——应用名任意——应用类型:服务端——请求校验方式:IP白名单——IP白名单:不做任何限制(填写0.0.0.0/0)
 

 2,

# 本次整体的源代码
AK = ''
#百度地图开发平台AK码

import pandas as pd
import requests
import json
from itertools import combinations


def getPosition(address):
    url = r"http://api.map.baidu.com/place/v2/search?query={}&region=全国&output=json&ak={}".format(
        address,
        AK
    )
    res = requests.get(url)
    json_data = json.loads(res.text)
#获取对应地点的经纬度
    if json_data['status'] == 0:
        lat = json_data["results"][0]["location"]["lat"]  # 纬度
        lng = json_data["results"][0]["location"]["lng"]  # 经度
    else:
        print("[ERROR] Can not find {}.".format(address))
        return "0,0", json_data["status"]
    return str(lat) + "," + str(lng), json_data["status"]

#获取两地之间的距离
def getDistance(start, end):
    url = "http://api.map.baidu.com/routematrix/v2/driving?output=json&origins={}&destinations={}&ak={}".format(
        start,
        end,
        AK
    )
    res = requests.get(url)
    content = res.content
    jsonv = json.loads(str(content, "utf-8"))
    dist = jsonv["result"][0]["distance"]["value"]
    return dist

#合并函数调用
def calcDistance(startName, endName):
    start, status1 = getPosition(startName)
    end, status2 = getPosition(endName)
    if status1 == 0 and status2 == 0:
        return getDistance(start, end)
    else:
        return -1


if __name__ == "__main__":
    data =pd.read_excel("D:\Practice\city_data.xlsx")
    res = []
    #计算几座城市之间的非重复排列组合关系
    stat_city = data.iloc[:, 0]
    end_city = data.iloc[:, 1]
    for i in range(0, 52):
        startName = stat_city[i]
        for j in range(0, 11):
            endName = end_city[j]
            print(startName, endName)
            dist = calcDistance(startName, endName)
            res.append([startName, endName, dist / 1000])
            pd.DataFrame(res).to_excel(
                "result2.xlsx",
                header=["起点", "终点", "距离"],
                index=None,
                encoding="utf-8"
            )

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值