使用地理编码在两个位置之间获得距离

时间:2016-04-29 22:48:02

标签: python python-2.7 google-api google-geocoding-api

我想使用google 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

2 个答案:

答案 0 :(得分:4)

Google有一个特定的API,它被称为 Google Maps Distance Matrix API

  

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

如果你只需要地球上两点之间的距离,你可能想要使用Haversine formula

答案 1 :(得分:0)

如果您知道latlon,请使用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