我前面尝试使用以下代码创建路网上的乘客,但是在使用时候发现,部分乘客不在对应的线上(‘O_wgs_lng’, ‘O_wgs_lat’ 不在线段’起点路段节点1编号’, ‘起点路段节点2编号’),尝试多次未找到原因
def generate_customer_data(**kwargs): p_num = kwargs['p_num'] run_times = kwargs['run_times'] columns_cus_name = np.zeros(shape=(p_num, 1), dtype=object) columns_O_wgs_lng = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_O_wgs_lat = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_O_point_name1 = np.zeros(shape=(p_num, 1), dtype=object) columns_O_point_name2 = np.zeros(shape=(p_num, 1), dtype=object) columns_D_wgs_lng = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_D_wgs_lat = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_D_point_name1 = np.zeros(shape=(p_num, 1), dtype=object) columns_D_point_name2 = np.zeros(shape=(p_num, 1), dtype=object) columns_appear_time = np.zeros(shape=(p_num, 1), dtype=int) columns_state = np.zeros(shape=(p_num, 1), dtype=object) columns_car_name = np.zeros(shape=(p_num, 1), dtype=object) columns_get_car_time = np.zeros(shape=(p_num, 1), dtype=int) columns_on_car_time = np.zeros(shape=(p_num, 1), dtype=int) columns_off_car_time = np.zeros(shape=(p_num, 1), dtype=int) adjacent_data = pd.read_csv(r'..\Map\adjacent_inf.csv') for i in range(p_num): order_time = random.randint(1, run_times + 1) road_row_1 = random.randint(0, len(adjacent_data) - 1) O_point_name1 = adjacent_data.loc[road_row_1, 'fir_point_name'] O_point_name2 = adjacent_data.loc[road_row_1, 'lst_point_name'] A1 = [adjacent_data.loc[road_row_1, 'start_x'], adjacent_data.loc[road_row_1, 'start_y']] B1 = [adjacent_data.loc[road_row_1, 'end_x'], adjacent_data.loc[road_row_1, 'end_y']] P1 = sub_way.Get_Mid_Point(fir_point=A1, lst_point=B1) road_row_2 = random.randint(0, len(adjacent_data) - 1) D_point_name1 = adjacent_data.loc[road_row_2, 'fir_point_name'] D_point_name2 = adjacent_data.loc[road_row_2, 'lst_point_name'] A2 = [adjacent_data.loc[road_row_2, 'start_x'], adjacent_data.loc[road_row_2, 'start_y']] B2 = [adjacent_data.loc[road_row_2, 'end_x'], adjacent_data.loc[road_row_2, 'end_y']] P2 = sub_way.Get_Mid_Point(fir_point=A2, lst_point=B2) columns_cus_name[i, 0] = 'cus_' + str(i + 1) columns_O_wgs_lng[i, 0] = P1[0] columns_O_wgs_lat[i, 0] = P1[1] columns_O_point_name1[i, 0] = O_point_name1 columns_O_point_name2[i, 0] = O_point_name2 columns_D_wgs_lng[i, 0] = P2[0] columns_D_wgs_lat[i, 0] = P2[1] columns_D_point_name1[i, 0] = D_point_name1 columns_D_point_name2[i, 0] = D_point_name2 columns_appear_time[i, 0] = order_time columns_state[i, 0] = '未出现' customer_data = np.column_stack(( columns_cus_name, columns_O_wgs_lng, columns_O_wgs_lat, columns_O_point_name1, columns_O_point_name2, columns_D_wgs_lng, columns_D_wgs_lat, columns_D_point_name1, columns_D_point_name2, columns_appear_time, columns_state, columns_car_name, columns_get_car_time, columns_on_car_time, columns_off_car_time )) # np.save(r'..\Data\config\customer_data.npy', customer_data) fi_customer_data = pd.DataFrame(customer_data) fi_customer_data.columns = [ '乘客编号', 'O_wgs_lng', 'O_wgs_lat', '起点路段节点1编号', '起点路段节点2编号', 'D_wgs_lng', 'D_wgs_lat', '终点路段节点1编号', '终点路段节点2编号', '出现时间', '状态', '搭乘车的车牌号', '打车时间', '搭车时间', '下车时间' ] fi_customer_data.to_csv(r'..\Data\config\customer_data.csv', index=False, encoding='utf_8_sig')
而后我尝试先拼接,再输入数据,错误就解决了
def generate_customer_data(**kwargs): f = open(r'..\Data\config\Graph_layer.pkl', 'rb') G = pickle.load(f) p_num = kwargs['p_num'] run_times = kwargs['run_times'] columns_cus_name = np.zeros(shape=(p_num, 1), dtype=object) columns_O_wgs_lng = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_O_wgs_lat = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_O_point_name1 = np.zeros(shape=(p_num, 1), dtype=object) columns_O_point_name2 = np.zeros(shape=(p_num, 1), dtype=object) columns_D_wgs_lng = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_D_wgs_lat = np.zeros(shape=(p_num, 1), dtype=np.float32) columns_D_point_name1 = np.zeros(shape=(p_num, 1), dtype=object) columns_D_point_name2 = np.zeros(shape=(p_num, 1), dtype=object) columns_appear_time = np.zeros(shape=(p_num, 1), dtype=int) columns_state = np.zeros(shape=(p_num, 1), dtype=object) columns_car_name = np.zeros(shape=(p_num, 1), dtype=object) columns_get_car_time = np.zeros(shape=(p_num, 1), dtype=int) columns_on_car_time = np.zeros(shape=(p_num, 1), dtype=int) columns_off_car_time = np.zeros(shape=(p_num, 1), dtype=int) adjacent_data = pd.read_csv(r'..\Map\adjacent_inf.csv') customer_data = np.column_stack(( columns_cus_name, columns_O_wgs_lng, columns_O_wgs_lat, columns_O_point_name1, columns_O_point_name2, columns_D_wgs_lng, columns_D_wgs_lat, columns_D_point_name1, columns_D_point_name2, columns_appear_time, columns_state, columns_car_name, columns_get_car_time, columns_on_car_time, columns_off_car_time )) # np.save(r'..\Data\config\customer_data.npy', customer_data) fi_customer_data = pd.DataFrame(customer_data) fi_customer_data.columns = [ '乘客编号', 'O_wgs_lng', 'O_wgs_lat', '起点路段节点1编号', '起点路段节点2编号', 'D_wgs_lng', 'D_wgs_lat', '终点路段节点1编号', '终点路段节点2编号', '出现时间', '状态', '搭乘车的车牌号', '打车时间', '搭车时间', '下车时间' ] for customer_index in fi_customer_data.index: order_time = random.randint(1, run_times + 1) road_row_1 = random.randint(0, len(adjacent_data) - 1) O_point_name1 = adjacent_data.loc[road_row_1, 'fir_point_name'] O_point_name2 = adjacent_data.loc[road_row_1, 'lst_point_name'] A1 = [adjacent_data.loc[road_row_1, 'start_x'], adjacent_data.loc[road_row_1, 'start_y']] B1 = [adjacent_data.loc[road_row_1, 'end_x'], adjacent_data.loc[road_row_1, 'end_y']] P1 = sub_way.Get_Mid_Point(fir_point=A1, lst_point=B1) sub_way.Get_Pro(fir_point=A1, lst_point=B1, mid_point=P1, accuracy=7) road_row_2 = random.randint(0, len(adjacent_data) - 1) D_point_name1 = adjacent_data.loc[road_row_2, 'fir_point_name'] D_point_name2 = adjacent_data.loc[road_row_2, 'lst_point_name'] A2 = [adjacent_data.loc[road_row_2, 'start_x'], adjacent_data.loc[road_row_2, 'start_y']] B2 = [adjacent_data.loc[road_row_2, 'end_x'], adjacent_data.loc[road_row_2, 'end_y']] P2 = sub_way.Get_Mid_Point(fir_point=A2, lst_point=B2) sub_way.Get_Pro(fir_point=A2, lst_point=B2, mid_point=P2, accuracy=7) fi_customer_data.loc[customer_index, '乘客编号'] = 'cus_' + str(int(customer_index) + 1) fi_customer_data.loc[customer_index, ['O_wgs_lng', 'O_wgs_lat', '起点路段节点1编号', '起点路段节点2编号']] = \ P1[0], P1[1], O_point_name1, O_point_name2 fi_customer_data.loc[customer_index, ['D_wgs_lng', 'D_wgs_lat', '终点路段节点1编号', '终点路段节点2编号']] = \ P2[0], P2[1], D_point_name1, D_point_name2 fi_customer_data.loc[customer_index, ['出现时间', '状态']] = order_time, '未出现' # columns_cus_name[i, 0] = 'cus_' + str(i + 1) # columns_O_wgs_lng[i, 0] = P1[0] # columns_O_wgs_lat[i, 0] = P1[1] # columns_O_point_name1[i, 0] = O_point_name1 # columns_O_point_name2[i, 0] = O_point_name2 # columns_D_wgs_lng[i, 0] = P2[0] # columns_D_wgs_lat[i, 0] = P2[1] # columns_D_point_name1[i, 0] = D_point_name1 # columns_D_point_name2[i, 0] = D_point_name2 # columns_appear_time[i, 0] = order_time # columns_state[i, 0] = '未出现' fi_customer_data.to_csv(r'..\Data\config\customer_data.csv', index=False, encoding='utf_8_sig')
我只能说,阿巴巴