300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > Python通过百度地图API批量计算两地路线距离(货车路线规划)

Python通过百度地图API批量计算两地路线距离(货车路线规划)

时间:2018-12-07 17:58:03

相关推荐

Python通过百度地图API批量计算两地路线距离(货车路线规划)

与之前普通车辆的代码大体相似,只是货车参数较多,根据自己需要设定。需要注意的是百度地图开发者的Web API 免费额度是不提供货车路线规划数据的,因此有这个需求的话,需要付费购买。import pandas as pdimport requestsimport jsonAK = "******" #你自己的注册码def getLocation_truck(address):url = f"https://api./geocoding/v3/?address={address}&output=json&ak={AK}"#百度地图res = requests.get(url)json_data = json.loads(res.text)if json_data["status"] == 0:lat = json_data["result"]["location"]["lat"]lng = json_data["result"]["location"]["lng"]else:return "no data", json_data["status"]return str(lat) + "," + str(lng), json_data["status"]def getDistance_truck(start, end):url = f"https://api./logistics_direction/v1/truck?origin={start}&destination={end}&height=1.8&width=1.9&weight=2.5&length=4.2&axle_weight=2&axle_count=2&is_trailer=0&plate_province=&plate_number=&plate_color=0&ak={AK}"# 货车参数较多,根据所需路线规划的车辆设定,一般来说规划的路线是相同的,所以采用默认参数即可。res = requests.get(url)json_data = json.loads(res.text)if json_data["status"] == 0:return json_data["result"]["routes"][0]["distance"]else:return -1def calDistance(startAddr, endAddr):start, status1 = getLocation_truck(startAddr)end, status2 = getLocation_truck(endAddr)if status1 == 0 and status2 == 0:return getDistance_truck(start, end)else:return -1if __name__ == "__main__":data = pd.read_excel("bj.xlsx")result = []for i in range(0, 51):# 用len(data)会卡住,直接写数字多少行,每次最多70startAddr = data.iloc[i,0]endAddr = data.iloc[i,1]dist = calDistance(startAddr, endAddr)result.append([startAddr, endAddr, dist/1000])pd.DataFrame(result).to_excel("result.xlsx",header=["出发地", "目的地", "距离"],encoding="utf-8")

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。