예제 #1
0
 def _start_priority_queue(self):
     if (self._update_prio_queue_thread is None and (self.delay_after_timestamp_prio is not None or self.mode ==
                                                     "iv_mitm") and not self.mode == "pokestops"):
         self._prio_queue = []
         if self.mode not in ["iv_mitm", "pokestops"]:
             self.clustering_helper = ClusteringHelper(self._max_radius,
                                                       self._max_coords_within_radius,
                                                       self._cluster_priority_queue_criteria())
         self._update_prio_queue_thread = Thread(name="prio_queue_update_" + self.name,
                                                 target=self._update_priority_queue_loop)
         self._update_prio_queue_thread.daemon = False
         self._update_prio_queue_thread.start()
예제 #2
0
    def __init__(self, db_wrapper, coords, max_radius, max_coords_within_radius, path_to_include_geofence,
                 path_to_exclude_geofence, routefile, mode=None, init=False,
                 name="unknown", settings=None):
        self.db_wrapper = db_wrapper
        self.init = init
        self.name = name
        self._coords_unstructured = coords
        self.geofence_helper = GeofenceHelper(
            path_to_include_geofence, path_to_exclude_geofence)
        self._routefile = routefile
        self._max_radius = max_radius
        self._max_coords_within_radius = max_coords_within_radius
        self.settings = settings
        self.mode = mode

        self._last_round_prio = False
        self._manager_mutex = Lock()
        self._round_started_time = None
        if coords is not None:
            if init:
                fenced_coords = coords
            else:
                fenced_coords = self.geofence_helper.get_geofenced_coordinates(
                    coords)
            self._route = getJsonRoute(
                fenced_coords, max_radius, max_coords_within_radius, routefile)
        else:
            self._route = None
        self._current_index_of_route = 0
        self._init_mode_rounds = 0
        if settings is not None:
            self.delay_after_timestamp_prio = settings.get(
                "delay_after_prio_event", None)
            if self.delay_after_timestamp_prio == 0:
                self.delay_after_timestamp_prio = None
            self.starve_route = settings.get("starve_route", False)
        else:
            self.delay_after_timestamp_prio = None
            self.starve_route = False
        if self.delay_after_timestamp_prio is not None or mode == "iv_mitm":
            self._prio_queue = []
            if mode != "iv_mitm":
                self.clustering_helper = ClusteringHelper(self._max_radius,
                                                          self._max_coords_within_radius,
                                                          self._cluster_priority_queue_criteria())
            self._stop_update_thread = Event()
            self._update_prio_queue_thread = Thread(name="prio_queue_update_" + name,
                                                    target=self._update_priority_queue_loop)
            self._update_prio_queue_thread.daemon = True
            self._update_prio_queue_thread.start()
        else:
            self._prio_queue = None
예제 #3
0
파일: routecalc.py 프로젝트: mossmap/MAD
    def getLessCoords(self, npCoordinates, maxRadius, maxCountPerCircle, useS2: bool=False, S2level: int=15):
        coordinates = []
        for coord in npCoordinates:
            coordinates.append(
                (0, Location(coord[0].item(), coord[1].item()))
            )

        clustering_helper = ClusteringHelper(max_radius=maxRadius, max_count_per_circle=maxCountPerCircle,
                                             max_timedelta_seconds=0, useS2=useS2, S2level=S2level)
        clustered_events = clustering_helper.get_clustered(coordinates)
        coords_cleaned_up = []
        for event in clustered_events:
            coords_cleaned_up.append(event[1])
        return coords_cleaned_up
예제 #4
0
 def _start_priority_queue(self):
     logger.info("Try to activate PrioQ thread for route {}".format(str(self.name)))
     if (self.delay_after_timestamp_prio is not None or self.mode == "iv_mitm") and not self.mode == "pokestops":
         logger.info("PrioQ thread for route {} could be activate".format(str(self.name)))
         self._prio_queue = []
         if self.mode not in ["iv_mitm", "pokestops"]:
             self.clustering_helper = ClusteringHelper(self._max_radius,
                                                       self._max_coords_within_radius,
                                                       self._cluster_priority_queue_criteria())
         self._update_prio_queue_thread = Thread(name="prio_queue_update_" + self.name,
                                                 target=self._update_priority_queue_loop)
         self._update_prio_queue_thread.daemon = True
         self._update_prio_queue_thread.start()
     else:
         logger.info("Cannot activate Prio Q - maybe wrong mode or delay_after_prio_event is null")
예제 #5
0
def getLessCoords(npCoordinates, maxRadius, maxCountPerCircle):
    coordinates = []
    for coord in npCoordinates:
        coordinates.append((0, Location(coord[0].item(), coord[1].item())))

    clustering_helper = ClusteringHelper(
        max_radius=maxRadius,
        max_count_per_circle=maxCountPerCircle,
        max_timedelta_seconds=0)
    clustered_events = clustering_helper.get_clustered(coordinates)
    # relations = __getRelationsInRange(coordinates, maxRadius)
    # summedUp = __sumUpRelations(relations, maxCountPerCircle, maxRadius)
    coords_cleaned_up = []
    for event in clustered_events:
        coords_cleaned_up.append(event[1])

    # print "Done summing up: " + str(summedUp) + " that's just " + str(len(summedUp))
    return coords_cleaned_up