100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > python调用百度地图 通过经纬度定位_python调用百度地图API得到两地经纬度计算直线距离...

python调用百度地图 通过经纬度定位_python调用百度地图API得到两地经纬度计算直线距离...

时间:2019-11-06 04:33:50

相关推荐

python调用百度地图 通过经纬度定位_python调用百度地图API得到两地经纬度计算直线距离...

[TOC]

程序简介

程序封装了两个函数 一、调用百度地图的API来获得地点的经纬度 二、调用python的geopy模块来计算两个经纬度的直线距离 输入:地点名称 输出:经纬度、直线距离

程序/数据集下载

点击进入下载地址

代码分析

导入模块、填写AK、SK码

# -*- coding: utf-8 -*-

from geopy.distance import geodesic

import urllib.parse

import hashlib

import requests

ak = "xxxxxxxxxxx"#百度地图ak码

sk = "xxxxxxxxxxx"#百度地图sk码

getCoordinate函数可以根据地名来获得对应经纬度,这里拿秦皇岛做测试

def getCoordinate(address):

'''

输入地址输出坐标(经度,维度)

address:城市名

'''

#产生sn码

queryStr = "/geocoder/v2/?address="+address+'&output=json&ak='+ak

encodedStr = urllib.parse.quote(queryStr, safe="/:=&?#+!$,;'@()*[]")

rawStr = encodedStr+sk

sn = (hashlib.md5(urllib.parse.quote_plus(rawStr).encode("utf8")).hexdigest())

#生成url

url = urllib.parse.quote("http://api."+queryStr+"&sn="+sn,safe="/:=&?#+!$,;'@()*[]")

result = requests.get(url).json()

coordinate = (result['result']['location']['lng'],result['result']['location']['lat'])

return coordinate

print('秦皇岛经纬度',getCoordinate('秦皇岛'))

秦皇岛经纬度 (119.60853063334328, 39.941748102377936)

calDistance函数可以根据两地名来获得对应其直线距离,其中需要调用到上面的getCoordinate函数来获取坐标,这里拿北京、秦皇岛做测试

def calDistance(place1,place2):

'''

输入两个地点名,输出直线距离(米)

place1:地点1

place2:地点2

'''

coor1 = getCoordinate(place1)#经纬度1

coor2 = getCoordinate(place2)#经纬度2

#这里输入纬度在前,经度在后,所以做一下反转

distance = geodesic(coor1[::-1],coor2[::-1]).m#距离(米)

return distance

distance = calDistance("北京市","秦皇岛市")

print("秦皇岛、北京距离约为%d米"%distance)

秦皇岛、北京距离约为273145米

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