示例#1
0
    def _pattern_intersection(self, key):
        """
        regarde la cellule voisine pointee par le pattern. Si l'intersection des 
        traces associees a ce pattern avec l'un des patterns de la cellule pointee, 
        alors on peut lier les 2 points d'equilibre (Center of Mass) des 2 patterns 
        pour obtenir un segment du chemin.
        """
        print "CELL:"
        for pattern, locs in self.all_nodes[key].significant_patterns.iteritems():
            if len(locs) > 0:
                print "current pattern: ", pattern
                direction_out = pattern[1]                
                dest_cell = self.location_index.neighbor_on_direction(self.all_nodes[key]._center_of_mass(),direction_out)
               
                # if dest_cell:
                print "dest cell: ", dest_cell._center_of_mass()
                print "current cell: ", self.all_nodes[key]._center_of_mass()
                for l in locs:
                    pass
                    #print l.latitude, l.longitude
                dest_cell_patterns = dest_cell.patterns_by_in_direction(Trajectory.reverse_direction(direction_out))
                print "dcp: ", dest_cell_patterns


                # self.pattern_edges.append((self.all_nodes[key]._center_of_mass(), dest_cell._center_of_mass()))
            
                if dest_cell_patterns:

                    for _p in dest_cell_patterns:
                        dest_midpoint = Trajectory.center_of_mass(dest_cell.significant_patterns[_p])
                        source_midpoint = Trajectory.center_of_mass(locs)
                        self.pattern_edges.append((source_midpoint, dest_midpoint))
                        print "segment added", (source_midpoint, dest_midpoint)