import lib_time from lib_timetable import Stations, Timetable import matplotlib.pyplot as plt import numpy as np from rtree import index from collections import defaultdict def new_round(_float, _len): if str(_float)[-1] == '5': return (round(float(str(_float)[:-1] + '6'), _len)) else: return (round(_float, _len)) ttt = lib_time.MeasureT() f_stations = "/run/media/pengfei/OTHERS/Code/Data/ChinaRailway/China_Station_Location_City.xls" stations_obj = Stations() stations_obj.load_file(f_stations) dict_NameLoc_stations = stations_obj.get_NameLoc_Index() #dict_IDStations = {} # 为车站点创建 ID与位置的映射,(其实直接用名字做映射也可以) f_links = '/run/media/pengfei/OTHERS/OSM/OSMData/China/china-latest-rail-links.csv' f_nodes = '/run/media/pengfei/OTHERS/OSM/OSMData/China/china-latest-rail-nodes.csv' #G = lib_graph.createG_fromFile(f_links, source='source', target='target', attr='maxspeed') df_links = pd.read_csv(f_links) dict_IDLoc_nodes = lib_graph.getLocation_fromFile(f_nodes, ID='ID', lon='lon',
lons = sorted(lons) lats = sorted(lats) Beijing = (116.3912757, 39.906217) # (121.4890497,31.2252985)#上海 # lon = 0 lat = 0 for l in lons: if abs(l - Beijing[0]) < abs(lon - Beijing[0]): lon = l for l in lats: if abs(l - Beijing[1]) < abs(lat - Beijing[1]): lat = l ############################################################################### ####################### Program start ######################################### ttt = lib_time.MeasureT() ##### 开始计时 ##### 4. 计算任意起点到可达车站的最短旅行时间 ###### 选一个起点,设一个在家出来的时间 def func(str_startT): # DataFrame的一条,只能传进来列表 startT = strT_to_floatT(str_startT) list_layerAccess = [] dict_accessed = {} # 车站:最短旅行时间 dict_ChildInfo = {} # defaultdict(dict) # 车站:由N层到N+1层 所乘坐列车基本信息 originGrid = str((lon, lat)) carAccessHSR = list(nx.neighbors(G_HSRGrid, originGrid)) ## 1.5小时内开车到达的车站 for s in carAccessHSR: arriveT = startT + G_HSRGrid[s][originGrid][ 'duration_s'] / 60 / 60 # 出发时刻+开车时间+准备时间