我在 python 中使用 OpenTripPlanner 来计算从一组约 70 个起点到一组约 600 个目标点的旅行时间。当我计算每组点的旅行时间时,我得到一组时间,但过程非常缓慢(大约 5 小时)。当我使用表面来查找时间时,它要快得多(3 分钟),但时间似乎不太准确(此处的文档:)。尽管起点不同,但许多目的地显示相同的时间。我正在使用来自所有湾区机构的 GTFS 数据图表。我的两个功能在这里:
# function to return the itineraries point to point
def return_itineraries(param):
ox = param[0]
oy = param[1]
dx = param[2]
dy = param[3]
date_us = param[4]
hr = param[5]
minute = param[6]
# parameters
options = {
'fromPlace': str(oy) + ", " + str(ox),
'toPlace': str(dy) + ", " + str(dx),
'time': str(hr)+':' + str(minute),
'date': date_us,
'mode': 'TRANSIT,WALK',
'maxWalkDistance':5000,
'clampInitialWait':0,
'wheelchair':False,
#'batch': True,
'numItineraries': 1
}
# send to server and get data
response = requests.get(
"http://localhost:8080/otp/routers/default/plan",
params = options
)
# return as json
data = json.loads(response.text)
return data
# one-to-many function
def return_itineraries_otm(param):
ox = param[0]
oy = param[1]
date_us = param[2]
hr = param[3]
minute = param[4]
# parameters
surface_options = {
'fromPlace': str(oy) + ", " + str(ox),
'time': str(hr)+':' + str(minute),
'date': date_us,
'mode': 'TRANSIT,WALK',
'maxWalkDistance':5000,
'clampInitialWait':0,
'wheelchair':False,
'batch': True,
}
#create surface
surf_resp = requests.post(
"http://localhost:8080/otp/surfaces",
params = surface_options)
surf_data = json.loads(surf_resp.text)
# parameters
options = {
'targets': 'destinations',
'detail':'true'
}
# send to server and get data
response = requests.get(
"http://localhost:8080/otp/surfaces/" + str(surf_data['id']) + "/indicator",
params = options)
# return as json
data = json.loads(response.text)
return data
有没有办法提高一对多函数的精度,让结果更接近点对点的计算?
谢谢!