def find_biggest_cluster(radius, points, order=None):
graph = nx.Graph()
for point in points:
if order is '9QM=':
#is a lure module - 9QM=
now = int(time.time())
remaining = now - point['last_modified_timestamp_ms']
f = point['latitude'], point['longitude'], remaining
else:
f = point['latitude'], point['longitude'], 0
graph.add_node(f)
for node in graph.nodes():
if node != f and distance(f[0], f[1], node[0], node[1]) <= radius*2:
graph.add_edge(f, node)
cliques = list(find_cliques(graph))
if len(cliques) > 0:
max_clique = max(list(find_cliques(graph)), key=lambda l: (len(l), sum(x[2] for x in l)))
merc_clique = [coord2merc(x[0], x[1]) for x in max_clique]
clique_x, clique_y = zip(*merc_clique)
best_point = np.mean(clique_x), np.mean(clique_y)
best_coord = merc2coord(best_point)
return {'latitude': best_coord[0], 'longitude': best_coord[1], 'num_points': len(max_clique)}
else:
return None
评论列表
文章目录