Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用地理编码获取两个位置之间的距离_Python_Python 2.7_Google Api_Google Geocoding Api - Fatal编程技术网

Python 使用地理编码获取两个位置之间的距离

Python 使用地理编码获取两个位置之间的距离,python,python-2.7,google-api,google-geocoding-api,Python,Python 2.7,Google Api,Google Geocoding Api,我想用谷歌API找到两个位置之间的距离。我希望输出看起来像-“位置1和位置2之间的距离是500英里(此处的距离是示例目的)”,但是当当前程序显示各种输出时,我如何获得所需的输出(我无法使用这些输出来获得所需的输出)。你们能告诉我怎么做吗?或者告诉我做这件事的具体步骤是什么 import urllib import json serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?' while Tru

我想用谷歌API找到两个位置之间的距离。我希望输出看起来像-“位置1和位置2之间的距离是500英里(此处的距离是示例目的)”,但是当当前程序显示各种输出时,我如何获得所需的输出(我无法使用这些输出来获得所需的输出)。你们能告诉我怎么做吗?或者告诉我做这件事的具体步骤是什么

   import urllib
   import json
   serviceurl = 'http://maps.googleapis.com/maps/api/geocode/json?'

   while True:
   address = raw_input('Enter location: ')
   if len(address) < 1 : break

   url = serviceurl + urllib.urlencode({'sensor':'false', 'address': address})
   print 'Retrieving', url
   uh = urllib.urlopen(url)
   data = uh.read()
   print 'Retrieved',len(data),'characters'

   try: js = json.loads(str(data))
   except: js = None
   if 'status' not in js or js['status'] != 'OK':
    print '==== Failure To Retrieve ===='
    print data
    continue

   print json.dumps(js, indent=4)

   lat = js["results"][0]["geometry"]["location"]["lat"]
   lng = js["results"][0]["geometry"]["location"]["lng"]
   print 'lat',lat,'lng',lng
   location = js['results'][0]['formatted_address']
   print location
导入urllib
导入json
serviceurl=http://maps.googleapis.com/maps/api/geocode/json?'
尽管如此:
地址=原始输入('输入位置:')
如果len(地址)<1:中断
url=serviceurl+urllib.urlencode({'sensor':'false','address':address})
打印“正在检索”,url
uh=urllib.urlopen(url)
data=uh.read()
打印“已检索”,len(数据),“字符”
try:js=json.loads(str(data))
除外:js=None
如果“状态”不在js或js[“状态”]!='好的:
打印“===检索失败===”
打印数据
持续
打印json.dumps(js,缩进=4)
lat=js[“结果”][0][“几何体”][“位置”][“lat”]
lng=js[“结果”][0][“几何体”][“位置”][“lng”]
打印“lat”,lat,“lng”,lng
location=js['results'][0]['formatted_address']
打印位置

谷歌有一个专门的api,叫做

多个目的地和运输模式的距离和持续时间
根据推荐路线检索持续时间和距离值 在起点和终点之间



如果你只需要地球上两点之间的距离,你可能需要使用谷歌有一个专门的api,它叫做

多个目的地和运输模式的距离和持续时间
根据推荐路线检索持续时间和距离值 在起点和终点之间



如果您只需要地球仪上两点之间的距离,您可能需要使用如果您知道
lat
lon
,请使用geopy软件包:

In [1]: from geopy.distance import great_circle

In [2]: newport_ri = (41.49008, -71.312796)

In [3]: cleveland_oh = (41.499498, -81.695391)

In [4]: great_circle(newport_ri, cleveland_oh).kilometers
Out[4]: 864.4567616296598

如果您知道
lat
lon
,请使用geopy软件包:

In [1]: from geopy.distance import great_circle

In [2]: newport_ri = (41.49008, -71.312796)

In [3]: cleveland_oh = (41.499498, -81.695391)

In [4]: great_circle(newport_ri, cleveland_oh).kilometers
Out[4]: 864.4567616296598