diff --git a/germany.svg b/germany.svg
new file mode 100644
index 0000000..e109b03
--- /dev/null
+++ b/germany.svg
@@ -0,0 +1,77 @@
+
+
+
diff --git a/get_coordinates.py b/get_coordinates.py
index 186c30e..e63184b 100755
--- a/get_coordinates.py
+++ b/get_coordinates.py
@@ -1,14 +1,38 @@
#!/usr/bin/python
-import requests, json, pickle, os.path, svgwrite
+import requests, json, pickle, os.path, svgwrite, math
URL = "https://directory.spaceapi.io/"
NORTHERNMOST = 55.05
EASTERNMOST = 15.033333
SOUTHERNMOST = 47.270108
WESTERNMOST = 5.866667
+threshold = 0.10
YSPAN = NORTHERNMOST - SOUTHERNMOST
XSPAN = EASTERNMOST - WESTERNMOST
locations = {}
+blacklist = ["Chaostreff Salzburg", "DevLoL", "CCC Basel", "Chaostreff Zürich", "ChaosStuff"]
+
+def dist(n1, n2):
+ y = n1[0] - n2[0]
+ x = n1[1] - n2[1]
+ return math.sqrt(math.pow(x, 2) + math.pow(y, 2))
+
+def conflict(targetlist, node):
+ returner = None
+ for element in targetlist:
+ if dist(node, targetlist[element]) < threshold:
+ returner = element
+ continue
+ return returner
+
+def merge(n1, n2):
+ lat = (n1[0] + n2[0]) / 2
+ lon = (n1[1] + n2[1]) / 2
+ returner = []
+ returner.append(lat)
+ returner.append(lon)
+ return returner
+
if os.path.isfile('locations.bin'):
print ("using offline data...")
with open("locations.bin", "rb") as f:
@@ -42,22 +66,37 @@ german_locations = locations.copy()
for space in locations:
if locations[space][0] > NORTHERNMOST:
del german_locations[space]
- print ("kicked " + space + " too far north")
elif locations[space][0] < SOUTHERNMOST:
del german_locations[space]
- print ("kicked " + space + " too far south")
elif locations[space][1] < WESTERNMOST:
del german_locations[space]
- print ("kicked " + space + " too far west")
elif locations[space][1] > EASTERNMOST:
del german_locations[space]
- print ("kicked " + space + " too far east")
+for space in blacklist:
+ del german_locations[space]
+
+
+finallist = {}
+while german_locations:
+ n1 = next(iter(german_locations))
+ conflictnode = conflict(finallist, german_locations[n1])
+ if conflictnode == None:
+ finallist.update({n1 : german_locations[n1]})
+ del german_locations[n1]
+ else:
+ mergenode = merge(german_locations[n1], finallist[conflictnode])
+ del german_locations[n1]
+ del finallist[conflictnode]
+ german_locations.update({"MERGED: " + n1 + " " + conflictnode : mergenode})
+
+for space in finallist:
+ print(space + " " + str(finallist[space][0]) + " " + str(finallist[space][1]))
dwg = svgwrite.Drawing('svgwrite-example.svg', profile='tiny')
-dwg.add(svgwrite.image.Image(href="Karte_Deutschland.svg", size=(572,770)))
+#dwg.add(svgwrite.image.Image(href="Karte_Deutschland.svg", size=(586, 793)))
dwg.add(dwg.circle(center=(0,0), r=3, fill='black'))
-for space in german_locations:
- ypoint = (770 - (((german_locations[space][0] - SOUTHERNMOST) / YSPAN)* 770))
- dwg.add(dwg.circle(center=(((locations[space][1] - WESTERNMOST) / XSPAN) *
- 572, ypoint), r=1, fill='black'))
+for space in finallist:
+ ypoint = (793 - (((finallist[space][0] - SOUTHERNMOST) / YSPAN)* 793))
+ dwg.add(dwg.circle(center=(((finallist[space][1] - WESTERNMOST) / XSPAN) *
+ 586, ypoint), r=5, fill='green'))
dwg.save()
diff --git a/svgwrite-example.svg b/svgwrite-example.svg
index 9687f50..e3e1c2e 100644
--- a/svgwrite-example.svg
+++ b/svgwrite-example.svg
@@ -1,2 +1,2 @@
-
\ No newline at end of file
+
\ No newline at end of file