Get MapQuest

mail@pastecode.io avatar
unknown
python
2 years ago
2.5 kB
3
Indexable
Never
''' đầu tiên sử dụng hàm Build_Request_From_MapQuest này 
để tạo ra request để có thể get data từ MapQuest ''' 
def Build_Request_From_MapQuest(apiKey, x1, y1, x2, y2, filters):
  '''
  apiKey: truyền vào API
  x1, y1, x2, y2:kiểu float, thông số của Bounding Box, chỉ định vùng tìm kiếm sự cố (incidents)
  filters: optional, kiểu list, các loại sự cố cần tìm (incidents, construction, event, congestion). 
    Nếu rỗng thì mặc định = incidents,construction.
  TrẢ về chuỗi string về URL để sử dụng trong get data.
  '''
  bbox = ",".join([str(x1), str(y1), str(x2), str(y2)])
  request = "http://www.mapquestapi.com/traffic/v2/incidents?key="+str(apiKey)+"&boundingBox="+bbox+""
  if filters != []:
    f = ','.join(filters)
    request = request + "&filters="+f
  return request
  
'''
Get data bằng công thức lệnh 
>>> !curl -X GET + URL 
với URL = Build_Request_From_MapQuest(...)
Gán kết quả vào biến s.
Dòng 25 là ví dụ.
'''
s = !curl -X GET "http://www.mapquestapi.com/traffic/v2/incidents?key=AwpkydowEp2NQDncMwYzbFsoGk07HB8R&boundingBox=39.95,-105.25,39.52,-104.71&filters=construction,congestion,incidents"

'''
Sau khi có kết quả thô ở biến s,
truyền s vào hàm Json_To_DF để lấy Dataframe
'''
def Json_To_DF(s):
  # s: data đã GET từ MapQuest ở dạng thô
  # return df: trả về một DataFrame gồm các thuộc tính của từng incidents
  mapquest_data = json.loads(s[0])
  df = []
  for i in range(len(mapquest_data['incidents'])):
    incidents_key = list(mapquest_data['incidents'][i].keys())
    incidents_key.remove('parameterizedDescription')
    parameterized_key = mapquest_data['incidents'][i]['parameterizedDescription'].keys()
    d = dict()
    for key in incidents_key:
      d.update({key:mapquest_data['incidents'][i][key]})
    for key in parameterized_key:
      d.update({key:mapquest_data['incidents'][i]['parameterizedDescription'][key]})
    d.update({'URL': mapquest_data['mqUrl']})
    d.update({'Copyright': mapquest_data['info']['copyright']['text']})
    d.update({'CopyrightImage': mapquest_data['info']['copyright']['imageUrl']})
    d.update({'Status': mapquest_data['info']['statuscode']})
    d.update({'Message': mapquest_data['info']['messages']})
    df.append(d)
  return pd.DataFrame(df)

'''
Sau khi có kết quả thô ở biến s,
truyền s vào hàm Json_To_DF để lấy Dataframe
'''
df = Json_To_DF(s)
df.head()

'''
Get xong dữ liệu
'''