aboutsummaryrefslogtreecommitdiff
path: root/dev/cluster.py
diff options
context:
space:
mode:
Diffstat (limited to 'dev/cluster.py')
-rw-r--r--dev/cluster.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/dev/cluster.py b/dev/cluster.py
new file mode 100644
index 0000000..b43e63c
--- /dev/null
+++ b/dev/cluster.py
@@ -0,0 +1,40 @@
+import sys
+import math
+import json
+
+with open(sys.argv[1], 'r') as f:
+ input_data = json.load(f)
+
+
+def dist(a, b):
+ return math.sqrt((a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2)
+
+
+def do_merge():
+ threshold = 0.003
+
+ for a in range(len(input_data) - 1):
+ if len(input_data[a]['cams']) == 0:
+ continue
+ for b in range(a + 1, len(input_data)):
+ if len(input_data[b]['cams']) == 0:
+ continue
+ a_loc = input_data[a]['coord']
+ b_loc = input_data[b]['coord']
+ if dist(a_loc, b_loc) < threshold:
+ input_data[a]['cams'].extend(input_data[b]['cams'])
+ input_data[b]['cams'] = []
+
+ output_data = [x for x in input_data if len(x['cams']) > 0]
+
+ with open(sys.argv[1], 'w') as f:
+ json.dump(output_data, f)
+
+
+def find_closest():
+ closest_dist = min(dist(input_data[a]['coord'], input_data[b]['coord'])
+ for a in range(len(input_data) - 1) for b in range(a + 1, len(input_data)))
+ print(closest_dist)
+
+
+do_merge()