1

我的问题是我想获得大约 4000 lat longs 的距离。为此,我使用了 Google Direction 矩阵服务。在某种程度上,它对我来说效果很好。之后我收到无效请求的错误。这是因为 GET 方法。我想要一个解决方案,如何使用 Python 将距离矩阵服务与 POST 一起使用。感谢您对此的帮助。提前致谢。

我正在使用 appengine 用 python 编写一个谷歌距离矩阵,我对 urllib post 方法感到震惊

代码: url = 'http://maps.googleapis.com/maps/api/distancematrix/json'

    conn = getConnection()
    cursor = conn.cursor()
    origins=[]
    try:
        cursor.execute('select username,lat,lng,cabNo,orderno from tripsheet order by username;')
        origins= cursor.fetchall()
    except:
        self.response.out.write("Some thing bad happened")    
    conn.close()
    responseArray= []
    for o in origins :
        origin= {}
        key= "blah"
        origin = {"name":o[0],"key":key, "latitude":o[1],"longitude":o[2],"cabNo":o[3],"order":o[4]}
        responseArray.append(origin)
        url=url+o[1]+','+o[2]+'|'
    values = {
      'sensor' : 'false',
      'mode' : 'driving',
      'avoid' : 'tolls',
      'destinations': '%s,%s' % (destination["lat"] ,destination["lon"])
    }
    data = urllib.urlencode(values)
    req = urllib2.Request(url, data)
    response = urllib2.urlopen(req)
    the_page = response.read()
    self.response.out.write(the_page)

我正在尝试通过大约 4000 个起点和单个目的地。

得到以下错误消息,因为它被视为 GET 。我想使用 urllib2 转换成 POST:

Traceback (most recent call last):
  File "/home/xxx/Projects/google_appengine/google/appengine/ext/webapp/_webapp25.py", line 714, in __call__
    handler.get(*groups)
  File "/home/xxx/4.2WorkSpace/RouteOptimization/src/main.py", line 41, in get
    self.calculate_indv_distance(destination)
  File "/home/xxx/4.2WorkSpace/RouteOptimization/src/main.py", line 109, in calculate_indv_distance
    response = urllib2.urlopen(req)
  File "/usr/lib/python2.7/urllib2.py", line 126, in urlopen
    return _opener.open(url, data, timeout)
  File "/usr/lib/python2.7/urllib2.py", line 400, in open
    response = self._open(req, data)
  File "/usr/lib/python2.7/urllib2.py", line 418, in _open
    '_open', req)
  File "/usr/lib/python2.7/urllib2.py", line 378, in _call_chain
    result = func(*args)
  File "/usr/lib/python2.7/urllib2.py", line 1207, in http_open
    return self.do_open(httplib.HTTPConnection, req)
  File "/usr/lib/python2.7/urllib2.py", line 1182, in do_open
    r = h.getresponse()
  File "/home/xxx/Projects/google_appengine/google/appengine/dist/httplib.py", line 222, in getresponse
    deadline=self.timeout)
  File "/home/xxx/Projects/google_appengine/google/appengine/api/urlfetch.py", line 266, in fetch
    return rpc.get_result()
  File "/home/xxx/Projects/google_appengine/google/appengine/api/apiproxy_stub_map.py", line 604, in get_result
    return self.__get_result_hook(self)
  File "/home/xxx/Projects/google_appengine/google/appengine/api/urlfetch.py", line 370, in _get_fetch_result
    'Invalid request URL: ' + url + error_detail)
InvalidURLError: Invalid request URL: http://maps.googleapis.com/maps/api/distancematrix/

任何帮助真的很感激。

4

0 回答 0