コード例 #1
0
ファイル: grid_supporter.py プロジェクト: redrockhorse/python
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
コード例 #2
0
ファイル: map_supporter.py プロジェクト: redrockhorse/python
    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)
コード例 #3
0
ファイル: grid_supporter.py プロジェクト: redrockhorse/python
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()
コード例 #4
0
    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)
コード例 #5
0
    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
コード例 #6
0
ファイル: mile_stake.py プロジェクト: redrockhorse/python
    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)