Пример #1
0
 def __init__(self):
     super(TrafficManagementHelper, self).__init__()
     self.id = ''
     for i in range(0,20):
         self.id = self.id + random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits)
     
     
     os.makedirs('tmp/' + self.id)
     shutil.copy2(TrafficManagement.NETWORK_FILE, 'tmp/' + self.id)
     shutil.copy2(TrafficManagement.NETWORK_NODE_FILE, 'tmp/' + self.id)
     
     self.traffic_manager = TrafficManagement(TrafficManagement.DATABASE_FILE, 'tmp/' + self.id + '/oulu.edg.xml', 'tmp/' + self.id + '/oulu.nod.xml')
Пример #2
0
class TrafficManagementHelper(threading.Thread):
    def __init__(self):
        super(TrafficManagementHelper, self).__init__()
        self.id = ''
        for i in range(0,20):
            self.id = self.id + random.choice(string.ascii_lowercase + string.ascii_uppercase + string.digits)
        
        
        os.makedirs('tmp/' + self.id)
        shutil.copy2(TrafficManagement.NETWORK_FILE, 'tmp/' + self.id)
        shutil.copy2(TrafficManagement.NETWORK_NODE_FILE, 'tmp/' + self.id)
        
        self.traffic_manager = TrafficManagement(TrafficManagement.DATABASE_FILE, 'tmp/' + self.id + '/oulu.edg.xml', 'tmp/' + self.id + '/oulu.nod.xml')

    def run(self):
        self.update_nearest_edge()
    
    def update_nearest_edge(self):
        conn = sqlite3.connect(TrafficManagement.DATABASE_FILE)
        conn.row_factory = sqlite3.Row
        cur = conn.cursor()
        
        while True:
            fetch_one_place = "SELECT * FROM places where is_coord_get = 1 and edge_id is null ORDER BY RANDOM() LIMIT 1;"
            
            cur.execute(fetch_one_place)
            row = cur.fetchone()
            
            update_place = "update places set is_coord_get=4 where id=?"
            cur.execute(update_place, (row['id'],))
            conn.commit()
            
            if (row is not None):
                print(row['main_type'], row['id'], datetime.now().strftime('%Y-%m-%d %H:%M:%S'))
                nearest_edge = self.traffic_manager.find_nearest_edge(float(row['x']), float(row['y']))
            else:
                break
            
            update_place = 'update places set edge_id=?, is_coord_get=1 where id=?'
            cur.execute(update_place, (nearest_edge.attrib['id'], row['id']))
            conn.commit()
        
        conn.close()
        shutil.rmtree('tmp/' + self.id)