def return_grid_map(mid_path, mif_path, link_id_index, df_index): global dict_links_by_grid msup.load_mid_file(mid_path) msup.load_mif_file(mif_path) msup.read_pre_mif_lines() link_index = 0 while msup.read_all_links() == False: (mid_line, mif_coord_list) = msup.read_one_link_info() link_index = link_index + 1 if link_index % 1000 == 0: logging.info('proc link: ' + '{:d}'.format(link_index)) # 处理过程. items = mid_line.replace('\"', '').split(',') link_id = items[link_id_index].strip('\"') up_dir = int(items[df_index]) for i in range(len(mif_coord_list) - 1): bgn_coord_str = mif_coord_list[i] end_coord_str = mif_coord_list[i + 1] bgn_coord_items = bgn_coord_str.split(' ') long1 = float(bgn_coord_items[0]) lat1 = float(bgn_coord_items[1]) end_coord_items = end_coord_str.split(' ') long2 = float(end_coord_items[0]) lat2 = float(end_coord_items[1]) get_grid_of_sublink(link_id, up_dir, i, len(mif_coord_list) - 2 - i, long1, lat1, long2, lat2) return dict_links_by_grid
def create_map_obj(self, mid_path, mif_path): midmif_supporter.load_mid_file(mid_path) midmif_supporter.load_mif_file(mif_path) midmif_supporter.read_pre_mif_lines() line_count = 0 link_count = 0 while midmif_supporter.read_all_links() == False: # 读取一行的信息. (mid_line, mif_coord_list) = midmif_supporter.read_one_link_info() line_count = line_count + 1 mid_items = mid_line.split(',') # link_id = mid_items[1].strip('\"') ######################################################### # 以下需要重写. up_dir = int(mid_items[6]) if up_dir == 1: self.create_up_link_obj(mid_line, mif_coord_list) self.create_down_link_obj(mid_line, mif_coord_list) link_count = link_count + 2 elif up_dir == 2: self.create_up_link_obj(mid_line, mif_coord_list) link_count = link_count + 1 elif up_dir == 3: self.create_down_link_obj(mid_line, mif_coord_list) link_count = link_count + 1 else: pass logging.info('total read line: %d ' % line_count) logging.info('total create link: %d' % link_count)
def grid_map(mid_path, mif_path, link_id_index, df_index, output_path): global dict_links_by_grid msup.load_mid_file(mid_path) msup.load_mif_file(mif_path) msup.read_pre_mif_lines() link_index = 0 while msup.read_all_links() == False: (mid_line, mif_coord_list) = msup.read_one_link_info() link_index = link_index + 1 if link_index % 1000 == 0: logging.info('proc link: ' + '{:d}'.format(link_index)) # 处理过程. items = mid_line.split(',') link_id = items[link_id_index].strip('\"') up_dir = int(items[df_index]) for i in range(len(mif_coord_list) - 1): bgn_coord_str = mif_coord_list[i] end_coord_str = mif_coord_list[i + 1] bgn_coord_items = bgn_coord_str.split(' ') long1 = float(bgn_coord_items[0]) lat1 = float(bgn_coord_items[1]) end_coord_items = end_coord_str.split(' ') long2 = float(end_coord_items[0]) lat2 = float(end_coord_items[1]) get_grid_of_sublink(link_id, up_dir, i, len(mif_coord_list) - 2 - i, long1, lat1, long2, lat2) output = open(output_path, 'w') logging.info('begin print map indexer.\n') global min_long global min_lat global max_long global max_lat global grid_len global max_grid_cx global max_grid_cy title_str = '{:.6f}'.format(min_long) + ' {:.6f}'.format(min_lat) \ + ' {:.6f}'.format(max_long) + ' {:.6f}'.format(max_lat) + ' {:.6f}'.format(grid_len) \ + ' {:d}'.format(max_grid_cx) + ' {:d}'.format(max_grid_cy) output.write(title_str + '\n') for grid_id in sorted(dict_links_by_grid.keys()): link_list = dict_links_by_grid[grid_id] sss = set(link_list) output.write(grid_id + ' ' + '{:d}'.format(len(sss)) + ' ') for link_ss_id in sss: output.write(link_ss_id + ',') output.write('\n') output.close()
def create_map_obj(self, mid_path, mif_path): midmif_supporter.load_mid_file(mid_path) midmif_supporter.load_mif_file(mif_path) midmif_supporter.read_pre_mif_lines() for p_mif_line in midmif_supporter.pre_mif_lines: self.pre_mif_lines.append(p_mif_line) line_count = 0 link_count = 0 while midmif_supporter.read_all_links() == False: # 读取一行的信息. (mid_line, mif_coord_list) = midmif_supporter.read_one_link_info() line_count = line_count + 1 mid_items = mid_line.replace('\"', '').split(',') trip_name = mid_items[self.trip_name_index] trip_updir = mid_items[self.trip_updir_index] poi_name = mid_items[self.poi_name_index] poi_type = mid_items[self.poi_type_index] trip_key1 = '' trip_key2 = '' trip_key = '' if poi_type == '8': # 枢纽先不处理. continue elif poi_type == '3': # 收费站不区分上下行 (2个都写到一起吧). if trip_updir == '1' or trip_updir == '2': trip_key = trip_name + ',' + '12' + ',' + poi_type elif trip_updir == '3' or trip_updir == '4': trip_key = trip_name + ',' + '34' + ',' + poi_type elif trip_updir == '5' or trip_updir == '6': trip_key = trip_name + ',' + '56' + ',' + poi_type elif trip_updir == '7' or trip_updir == '8': trip_key = trip_name + ',' + '78' + ',' + poi_type elif poi_type == '9' or poi_type == '15': #桥隧要往两边分. if trip_updir == '12': trip_key1 = trip_name + ',' + '1' + ',' + poi_type trip_key2 = trip_name + ',' + '2' + ',' + poi_type elif trip_updir == '34': trip_key1 = trip_name + ',' + '3' + ',' + poi_type trip_key2 = trip_name + ',' + '4' + ',' + poi_type elif trip_updir == '56': trip_key1 = trip_name + ',' + '5' + ',' + poi_type trip_key2 = trip_name + ',' + '6' + ',' + poi_type elif trip_updir == '78': trip_key1 = trip_name + ',' + '7' + ',' + poi_type trip_key2 = trip_name + ',' + '8' + ',' + poi_type else: if trip_updir == '1' or trip_updir == '2' or trip_updir == '3' or trip_updir == '4' \ or trip_updir == '5' or trip_updir == '6' or trip_updir == '7' or trip_updir == '8': trip_key = trip_name + ',' + trip_updir + ',' + poi_type else: logging.error('unexpected trip_updir = ' + trip_updir + ', from mid_line = ' + mid_line) else: if trip_updir == '1' or trip_updir == '2' or trip_updir == '3' or trip_updir == '4' \ or trip_updir == '5' or trip_updir == '6' or trip_updir == '7' or trip_updir == '8': trip_key = trip_name + ',' + trip_updir + ',' + poi_type else: logging.error('unexpected trip_updir = ' + trip_updir + ', from mid_line = ' + mid_line) if trip_key1 != '': final_name = '' if trip_key1 not in self.dict_trips.keys(): trip = {} final_name = self.add_name_to_dict(trip, poi_name, mif_coord_list[0], poi_type) # 处理POI重名的情况. self.dict_trips[trip_key1] = trip else: trip = self.dict_trips[trip_key1] final_name = self.add_name_to_dict(trip, poi_name, mif_coord_list[0], poi_type) # 处理POI重名的情况. if final_name != poi_name: logging.error('error: name changed, poi_name = ' + poi_name + ', final name = ' + final_name) if trip_key2 != '': final_name = '' if trip_key2 not in self.dict_trips.keys(): trip = {} final_name = self.add_name_to_dict(trip, poi_name, mif_coord_list[0], poi_type) # 处理POI重名的情况. self.dict_trips[trip_key2] = trip else: trip = self.dict_trips[trip_key2] final_name = self.add_name_to_dict(trip, poi_name, mif_coord_list[0], poi_type) # 处理POI重名的情况. if final_name != poi_name: logging.error('error: name changed, poi_name = ' + poi_name + ', final name = ' + final_name) if trip_key != '': final_name = '' if trip_key not in self.dict_trips.keys(): trip = {} final_name = self.add_name_to_dict(trip, poi_name, mif_coord_list[0], poi_type) # 处理POI重名的情况. self.dict_trips[trip_key] = trip else: trip = self.dict_trips[trip_key] final_name = self.add_name_to_dict(trip, poi_name, mif_coord_list[0], poi_type) # 处理POI重名的情况. if final_name != poi_name: logging.error('error: name changed, poi_name = ' + poi_name + ', final name = ' + final_name)
def create_map_obj(self, mid_path, mif_path): midmif_supporter.load_mid_file(mid_path) midmif_supporter.load_mif_file(mif_path) midmif_supporter.read_pre_mif_lines() for p_mif_line in midmif_supporter.pre_mif_lines: self.pre_mif_lines.append(p_mif_line) line_count = 0 link_count = 0 while midmif_supporter.read_all_links() == False: # 读取一行的信息. (mid_line, mif_coord_list) = midmif_supporter.read_one_link_info() line_count = line_count + 1 mid_items = mid_line.replace('\"', '').split(',') trip_name = mid_items[self.trip_name_index] trip_updir = mid_items[self.trip_updir_index] poi_name = mid_items[self.poi_name_index] poi_type = mid_items[self.poi_type_index] if poi_type != '8' and poi_type != '9' and poi_type != '2' and poi_type != '3' and poi_type != '15': continue poi = poi_info_obj() poi.mid_line = mid_line poi.coord_str = mif_coord_list[0] poi.trip_name = trip_name poi.trip_updir = trip_updir poi.poi_name = poi_name poi.poi_type = poi_type poi.if_print = True poi.if_created = False poi_key = poi.trip_name + '|' + poi.trip_updir + '|' + poi.poi_type + '|' + poi.coord_str if poi_key not in self.dict_pois.keys(): self.dict_pois[poi_key] = poi # 将 9 中带立交桥的 移植到 8中. for poi_key in sorted(self.dict_pois.keys()): poi = self.dict_pois[poi_key] if poi.poi_type == '9' and ('小桥' in poi.poi_name or '无名' in poi.poi_name \ or '通道' in poi.poi_name or '分离' in poi.poi_name \ or '排水沟' in poi.poi_name or '干沟' in poi.poi_name \ or '天桥' in poi.poi_name or '+' in poi.poi_name\ or '中桥' == poi.poi_name or '跨线桥' == poi.poi_name \ or '互通跨线桥' == poi.poi_name or '大桥' == poi.poi_name) : poi.if_print = False # 将这种删除 if poi.poi_type == '9' and ('立交桥' in poi.poi_name or '互通' in poi.poi_name or '枢纽' in poi.poi_name): poi.if_print = False # 将这种删除. create_poi_key = poi.trip_name + '|' + poi.trip_updir + '|' + '8' + '|' + poi.coord_str if create_poi_key not in self.dict_pois.keys(): create_poi = poi_info_obj() create_poi_items = poi.mid_line.split(',') create_poi_items[self.poi_type_index] = '8' create_mid_line = '' for k in range(len(create_poi_items) - 1): create_mid_line = create_mid_line + create_poi_items[k] + ',' create_mid_line = create_mid_line + create_poi_items[len(create_poi_items) - 1] create_poi.mid_line = create_mid_line create_poi.coord_str = poi.coord_str create_poi.trip_name = poi.trip_name create_poi.trip_updir = poi.trip_updir create_poi.poi_name = poi.poi_name create_poi.poi_type = '8' create_poi.if_print = True create_poi.if_created = True self.dict_pois[create_poi_key] = create_poi # 将 8 中 带’大桥‘的POI移植到9中. for poi_key in sorted(self.dict_pois.keys()): poi = self.dict_pois[poi_key] if poi.poi_type == '8' and ('大桥' in poi.poi_name or '中桥' in poi.poi_name) \ and (poi.poi_name != '大桥' and poi.poi_name != '中桥') \ and ('无名' not in poi.poi_name and '通道' not in poi.poi_name and '分离' not in poi.poi_name): create_poi_key = poi.trip_name + '|' + poi.trip_updir + '|' + '9' + '|' + poi.coord_str if create_poi_key not in self.dict_pois.keys(): create_poi = poi_info_obj() create_poi_items = poi.mid_line.split(',') create_poi_items[self.poi_type_index] = '9' create_mid_line = '' for k in range(len(create_poi_items) - 1): create_mid_line = create_mid_line + create_poi_items[k] + ',' create_mid_line = create_mid_line + create_poi_items[len(create_poi_items) - 1] create_poi.mid_line = create_mid_line create_poi.coord_str = poi.coord_str create_poi.trip_name = poi.trip_name create_poi.trip_updir = poi.trip_updir create_poi.poi_name = poi.poi_name create_poi.poi_type = '9' create_poi.if_print = True create_poi.if_created = True self.dict_pois[create_poi_key] = create_poi
def create_map_obj(self, mid_path, mif_path): midmif_supporter.load_mid_file(mid_path) midmif_supporter.load_mif_file(mif_path) midmif_supporter.read_pre_mif_lines() for p_mif_line in midmif_supporter.pre_mif_lines: self.pre_mif_lines.append(p_mif_line) line_count = 0 link_count = 0 while midmif_supporter.read_all_links() == False: # 读取一行的信息. (mid_line, mif_coord_list) = midmif_supporter.read_one_link_info() line_count = line_count + 1 mid_items = mid_line.replace('\"', '').split(',') bgn_stake = mid_items[4] end_stake = mid_items[5] if bgn_stake == '0' and end_stake == '0': continue up_dir = int(mid_items[self.df_index]) if up_dir != 2 and up_dir != 3: continue trip_id = mid_items[2] trip_name = mid_items[3] trip_updir = mid_items[6] city_code = mid_items[11] trip_key = trip_id + ',' + trip_name + ',' + trip_updir # 整形. bgn_new_stake = int(float(bgn_stake) * 1000) end_new_stake = int(float(end_stake) * 1000) bgn_new_coord = '' end_new_coord = '' if up_dir == 2: bgn_new_coord = mif_coord_list[0] + '|' + city_code end_new_coord = mif_coord_list[len(mif_coord_list) - 1] + '|' + city_code elif up_dir == 3: bgn_new_coord = mif_coord_list[len(mif_coord_list) - 1] + '|' + city_code end_new_coord = mif_coord_list[0] + '|' + city_code if trip_key in self.dict_trips.keys(): trip = self.dict_trips[trip_key] trip[bgn_new_stake] = bgn_new_coord trip[end_new_stake] = end_new_coord else: trip = {} trip[bgn_new_stake] = bgn_new_coord trip[end_new_stake] = end_new_coord self.dict_trips[trip_key] = trip logging.info('total read line: %d ' % line_count) logging.info('total create link: %d' % link_count)