diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..bee8a64
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+__pycache__
diff --git a/db/crawl.py b/db/crawl.py
new file mode 100755
index 0000000..93cbcfa
--- /dev/null
+++ b/db/crawl.py
@@ -0,0 +1,124 @@
+#!/usr/bin/python
+
+import lxml.etree
+import requests
+import time
+import subprocess
+import gzip
+from queue import Queue
+from threading import Thread
+from pymongo import MongoClient
+client = MongoClient()
+
+db = client.freifunk
+
+CONFIG = {
+ "crawl_netif": "br-mesh",
+ "mac_netif": "br-mesh",
+ "vpn_netif": "fffVPN",
+ "crawl_outgoing_netif": "wlan0",
+ "num_crawler_threads": 10
+}
+
+crawl_hood = "nuernberg"
+
+def crawl(router):
+ print("Crawling »%(hostname)s«" % router)
+ crawl_ip = next(netif["ipv6_fe80_addr"] for netif in router["netifs"] if netif["name"] == CONFIG["crawl_netif"])
+ try:
+ node_data = subprocess.check_output(["curl", "-s", "--max-time", "5", "http://[%s%%%s]/node.data" % (
+ crawl_ip,
+ CONFIG["crawl_outgoing_netif"]
+ )])
+ try:
+ node_data = gzip.decompress(node_data)
+ except:
+ pass
+
+ assert "
404" not in str(node_data).upper()
+
+ tree = lxml.etree.fromstring(node_data)
+ print(" --> " + tree.xpath("/data/system_data/hostname/text()")[0])
+
+ router_update = {
+ "status": tree.xpath("/data/system_data/status/text()")[0],
+ "has_wan_uplink": len(tree.xpath("/data/interface_data/fffVPN")) > 0,
+ "hostname": tree.xpath("/data/system_data/hostname/text()")[0],
+ "neighbours": [], # list of mongoDB ids (or mac if no corresponding id found)
+ "netifs": [],
+ }
+
+ for netif in tree.xpath("/data/interface_data/*"):
+ interface = {
+ "name": netif.xpath("name/text()")[0],
+ "mtu": int(netif.xpath("mtu/text()")[0]),
+ "mac": netif.xpath("mac_addr/text()")[0].lower(),
+ }
+ if len(netif.xpath("ipv6_link_local_addr/text()")) > 0:
+ interface["ipv6_fe80_addr"] = netif.xpath("ipv6_link_local_addr/text()")[0].lower().split("/")[0]
+ if len(netif.xpath("ipv4_addr/text()")) > 0:
+ interface["ipv4_addr"] = netif.xpath("ipv4_addr/text()")[0]
+ router_update["netifs"].append(interface)
+
+ for originator in tree.xpath("/data/batman_adv_originators/*"):
+ o_mac = originator.xpath("originator/text()")[0]
+ o_nexthop = originator.xpath("nexthop/text()")[0]
+ # mac is the mac of the neighbour w2/5mesh if
+ # (which might also be called wlan0-1)
+ o_link_quality = originator.xpath("link_quality/text()")[0]
+ o_out_if = originator.xpath("outgoing_interface/text()")[0]
+ if o_mac.upper() == o_nexthop.upper():
+ # skip vpn server
+ if o_out_if == CONFIG["vpn_netif"]:
+ continue
+ neighbour = {
+ "mac": o_mac.lower(),
+ "quality": int(o_link_quality),
+ "net_if": o_out_if,
+ }
+ try:
+ neighbour_router = db.routers.find_one({"netifs.mac": neighbour["mac"]})
+ neighbour["_id"] = neighbour_router["_id"]
+ assert "coordinates" in neighbour_router["position"]
+ assert neighbour_router["position"]["coordinates"][0] != 0
+ assert neighbour_router["position"]["coordinates"][1] != 0
+ if "comment" in neighbour_router["position"]:
+ del neighbour_router["position"]["comment"]
+ neighbour["position"] = neighbour_router["position"]
+ except:
+ pass
+ router_update["neighbours"].append(neighbour)
+
+ db.routers.update_one({"_id": router["_id"]}, {"$set": router_update})
+
+ #from pprint import pprint
+ #pprint(router)
+ except subprocess.CalledProcessError:
+ db.routers.update_one({"_id": router["_id"]}, {"$set": {"status": "offline"}})
+ print(" --> OFFLINE")
+ except AssertionError:
+ db.routers.update_one({"_id": router["_id"]}, {"$set": {"status": "unknown"}})
+ print(" --> UNKNOWN")
+
+q = Queue()
+keep_working = True
+
+def worker():
+ while keep_working:
+ router = q.get()
+ crawl(router)
+ q.task_done()
+
+for i in range(CONFIG["num_crawler_threads"]):
+ t = Thread(target=worker)
+ t.daemon = True
+ t.start()
+
+for router in db.routers.find({"netifs.name": CONFIG["crawl_netif"], "hood": crawl_hood}):
+ q.put(router)
+
+# block until queue is empty
+q.join()
+
+# stop workers
+keep_working = False
diff --git a/db/hoods.py b/db/hoods.py
new file mode 100644
index 0000000..07c1214
--- /dev/null
+++ b/db/hoods.py
@@ -0,0 +1,85 @@
+#!/usr/bin/python
+
+from math import sin, cos, sqrt, atan2, radians
+from pymongo import MongoClient
+client = MongoClient()
+
+db = client.freifunk
+
+CONFIG = {"default_hood_id": 1}
+
+"""
+db.hoods.insert_many([
+{
+ "keyxchange_id": 1,
+ "name": "transition",
+ "net": "10.50.16.0/20"
+},
+{
+ "keyxchange_id": 2,
+ "name": "fuerth",
+ "net": "10.50.32.0/21",
+ "position": {"lat": 49.478330, "lng": 10.990270}
+},
+{
+ "keyxchange_id": 3,
+ "name": "nuernberg",
+ "net": "10.50.40.0/21",
+ "position": {"lat": 49.448856, "lng": 11.082108}
+},
+{
+ "keyxchange_id": 4,
+ "name": "ansbach",
+ "net": "10.50.48.0/21",
+ "position": {"lat": 49.300833, "lng": 10.571667}
+},
+{
+ "keyxchange_id": 5,
+ "name": "haßberge",
+ "net": "10.50.56.0/21",
+ "position": {"lat": 50.093555, "lng": 10.568013}
+},
+{
+ "keyxchange_id": 6,
+ "name": "erlangen",
+ "net": "10.50.64.0/21",
+ "position": {"lat": 49.600598, "lng": 11.001922}
+},
+{
+ "keyxchange_id": 6,
+ "name": "wuerzburg",
+ "net": "10.50.72.0/21",
+ "position": {"lat": 49.796880, "lng": 9.934890}
+}])
+"""
+
+def km_distance(pos1, pos2):
+ lng1 = radians(pos1["lng"])
+ lat1 = radians(pos1["lat"])
+ lng2 = radians(pos2["coordinates"][0])
+ lat2 = radians(pos2["coordinates"][1])
+
+ dlng = lng2 - lng1
+ dlat = lat2 - lat1
+
+ a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlng / 2)**2
+ c = 2 * atan2(sqrt(a), sqrt(1 - a))
+
+ # approximate radius of earth in km
+ R = 6373.0
+
+ distance = R * c
+
+ return distance
+
+def hood_by_pos(pos):
+ current_hood_dist = 99999999
+ current_hood = db.hoods.find({"keyxchange_id": CONFIG["default_hood_id"]})
+
+ for hood in db.hoods.find({"position": {"$exists": True}}):
+ distance = km_distance(hood["position"], pos)
+ if distance <= current_hood_dist:
+ current_hood_dist = distance
+ current_hood = hood
+
+ return current_hood
diff --git a/db/import_from_netmon.py b/db/import_from_netmon.py
new file mode 100755
index 0000000..0d0b7e9
--- /dev/null
+++ b/db/import_from_netmon.py
@@ -0,0 +1,82 @@
+#!/usr/bin/python
+
+import lxml.etree
+import requests
+import hoods
+from pymongo import MongoClient
+client = MongoClient()
+
+db = client.freifunk
+
+
+CONFIG = {
+ "crawl_netif": "br-mesh",
+ "mac_netif": "br-mesh",
+ "vpn_netif": "fffVPN"
+}
+
+# create db indexes
+db.routers.create_index([("position", "2dsphere")])
+
+
+tree = lxml.etree.fromstring(requests.get("https://netmon.freifunk-franken.de/api/rest/routerlist", params={"limit": 1000}).content)
+
+for r in tree.xpath("/netmon_response/routerlist/router"):
+ user_netmon_id = int(r.xpath("user_id/text()")[0])
+ user = db.users.find_one({"netmon_id": user_netmon_id})
+ if user:
+ user_id = user["_id"]
+ else:
+ user_id = db.users.insert({
+ "netmon_id": user_netmon_id,
+ "nickname": r.xpath("user/nickname/text()")[0]
+ })
+
+ router = {
+ "netmon_id": int(r.xpath("router_id/text()")[0]),
+ "hostname": r.xpath("hostname/text()")[0],
+ "user": user_id
+ }
+
+ try:
+ lng = float(r.xpath("longitude/text()")[0])
+ lat = float(r.xpath("latitude/text()")[0])
+ assert lng != 0
+ assert lat != 0
+ #router["position"]["lng"] = lng
+ #router["position"]["lat"] = lat
+ #router["loc"] = { "type": "Point", "coordinates": [ -73.88, 40.78 ], "comment": "foobar" }
+
+ router["position"] = {
+ "type": "Point",
+ "coordinates": [lng, lat]
+ }
+
+ # define hood
+ router["hood"] = hoods.hood_by_pos(router["position"])["name"]
+
+ # try to get comment
+ router["position"]["comment"] = r.xpath("location/text()")[0]
+ except (IndexError, AssertionError):
+ pass
+
+ try:
+ router["description"] = r.xpath("description/text()")[0]
+ except IndexError:
+ pass
+
+ if db.routers.find_one({"netmon_id": router["netmon_id"]}):
+ print("Updating »%(hostname)s«" % router)
+ db.routers.update_one({"netmon_id": router["netmon_id"]}, {"$set": router})
+ else:
+ print("Importing »%(hostname)s«" % router)
+ # crawl HTML page for CONFIG["crawl_netif"] ip for 1st direct router crawl
+ page = requests.get("https://netmon.freifunk-franken.de/router.php", params={"router_id": router["netmon_id"]}).text
+ if CONFIG["crawl_netif"] in page:
+ netif_ip = "fe80%s" % page.split("%s" % CONFIG["crawl_netif"])[1].split("fe80")[1].split("/")[0]
+ router["netifs"] = [{
+ "name": CONFIG["crawl_netif"],
+ "ipv6_fe80_addr": netif_ip
+ }]
+
+ db.routers.insert_one(router)
diff --git a/map/csv/links.csv b/map/csv/links.csv
index 3a8c3f5..a5fdfe6 100644
--- a/map/csv/links.csv
+++ b/map/csv/links.csv
@@ -1,86 +1,248 @@
WKT,quality
-"LINESTRING (11.102066 49.462707,11.102089 49.462664)",223
-"LINESTRING (11.102066 49.462707,11.101679 49.462870)",220
-"LINESTRING (11.102089 49.462664,11.101679 49.462870)",211
-"LINESTRING (11.102170 49.462784,11.102066 49.462707)",145
-"LINESTRING (11.081888 49.448674,11.082030 49.448728)",210
-"LINESTRING (11.101679 49.462870,11.102089 49.462664)",210
-"LINESTRING (11.235317 49.251154,11.235197 49.251260)",226
-"LINESTRING (11.240652 49.493332,11.240508 49.493497)",217
-"LINESTRING (11.240652 49.493332,11.240508 49.493497)",254
-"LINESTRING (11.243831 49.495752,11.243985 49.495789)",247
-"LINESTRING (11.243831 49.495752,11.244049 49.495666)",220
-"LINESTRING (11.326239 49.198173,11.326828 49.198261)",206
-"LINESTRING (11.326239 49.198173,11.326797 49.198226)",244
-"LINESTRING (11.326239 49.198173,11.327320 49.198487)",233
-"LINESTRING (11.056065 49.446113,11.055854 49.446147)",120
-"LINESTRING (11.243985 49.495789,11.244049 49.495666)",255
-"LINESTRING (11.243985 49.495789,11.243831 49.495752)",255
-"LINESTRING (11.243985 49.495789,11.243966 49.495742)",251
-"LINESTRING (11.354212 49.386132,11.354153 49.386207)",255
-"LINESTRING (11.059433 49.445555,11.059507 49.445610)",177
-"LINESTRING (11.350556 49.390745,11.350607 49.390785)",247
-"LINESTRING (11.327199 49.198747,11.327210 49.198556)",243
-"LINESTRING (11.075651 49.455823,11.075663 49.455889)",167
-"LINESTRING (11.118731 49.435057,11.118684 49.435194)",217
-"LINESTRING (11.118731 49.435057,11.118827 49.435124)",255
-"LINESTRING (11.118731 49.435057,11.118827 49.435124)",255
-"LINESTRING (11.118827 49.435124,11.118731 49.435057)",252
-"LINESTRING (11.118827 49.435124,11.118731 49.435057)",242
-"LINESTRING (11.326797 49.198226,11.326828 49.198261)",191
-"LINESTRING (11.326797 49.198226,11.326239 49.198173)",234
-"LINESTRING (11.283251 49.513215,11.283545 49.513014)",115
-"LINESTRING (11.283251 49.513215,11.283375 49.513155)",30
-"LINESTRING (11.086825 49.459502,11.086712 49.459419)",236
-"LINESTRING (11.326828 49.198261,11.326797 49.198226)",215
-"LINESTRING (11.326828 49.198261,11.326239 49.198173)",194
-"LINESTRING (11.064409 49.462178,11.064539 49.462205)",234
-"LINESTRING (11.118684 49.435194,11.118827 49.435124)",250
-"LINESTRING (11.082030 49.448728,11.082150 49.448860)",255
-"LINESTRING (11.082030 49.448728,11.081888 49.448674)",221
-"LINESTRING (11.088155 49.447751,11.092974 49.445546)",167
-"LINESTRING (11.929778 49.547877,11.929843 49.547945)",251
-"LINESTRING (11.929778 49.547877,11.929843 49.547945)",251
-"LINESTRING (11.929778 49.547877,11.929869 49.547872)",250
-"LINESTRING (11.082150 49.448860,11.082298 49.448933)",220
-"LINESTRING (11.082150 49.448860,11.082030 49.448728)",251
-"LINESTRING (11.033664 49.456434,11.033453 49.456213)",199
-"LINESTRING (11.055931 49.446185,11.068540 49.457040)",255
-"LINESTRING (11.055931 49.446185,11.055854 49.446147)",255
-"LINESTRING (11.350607 49.390785,11.350556 49.390745)",251
-"LINESTRING (11.353858 49.385904,11.354153 49.386207)",187
-"LINESTRING (11.353858 49.385904,11.354212 49.386132)",205
-"LINESTRING (11.327210 49.198556,11.327199 49.198747)",255
-"LINESTRING (11.327210 49.198556,11.327320 49.198487)",226
-"LINESTRING (11.060746 49.445249,11.060834 49.445703)",237
-"LINESTRING (11.929843 49.547945,11.929869 49.547872)",255
-"LINESTRING (11.929843 49.547945,11.929778 49.547877)",255
-"LINESTRING (11.929843 49.547945,11.929869 49.547872)",255
-"LINESTRING (11.929843 49.547945,11.929778 49.547877)",255
-"LINESTRING (11.029045 49.408248,11.029147 49.408264)",198
-"LINESTRING (11.068350 49.457076,11.068540 49.457040)",255
-"LINESTRING (11.068350 49.457076,11.068540 49.457040)",125
-"LINESTRING (11.053088 49.450201,11.053244 49.450160)",204
+"LINESTRING (11.101549 49.462832,11.101679 49.462870)",203
+"LINESTRING (11.101679 49.462870,11.102089 49.462664)",214
+"LINESTRING (11.101679 49.462870,11.102066 49.462707)",201
+"LINESTRING (11.101679 49.462870,11.101549 49.462832)",230
+"LINESTRING (11.101679 49.462870,11.102170 49.462784)",132
+"LINESTRING (11.102089 49.462664,11.102066 49.462707)",200
+"LINESTRING (11.102089 49.462664,11.101549 49.462832)",185
+"LINESTRING (11.102089 49.462664,11.101679 49.462870)",169
+"LINESTRING (11.102089 49.462664,11.102170 49.462784)",124
+"LINESTRING (11.102066 49.462707,11.102089 49.462664)",230
+"LINESTRING (11.102066 49.462707,11.101679 49.462870)",222
+"LINESTRING (11.064539 49.462205,11.064409 49.462178)",231
+"LINESTRING (11.054971 49.448058,11.055030 49.448210)",255
+"LINESTRING (11.054971 49.448058,11.055207 49.448157)",166
+"LINESTRING (11.054971 49.448058,11.055030 49.448210)",49
+"LINESTRING (11.064409 49.462178,11.064539 49.462205)",255
+"LINESTRING (11.929778 49.547877,11.929843 49.547945)",245
+"LINESTRING (11.929778 49.547877,11.929843 49.547945)",255
+"LINESTRING (11.929778 49.547877,11.929869 49.547872)",253
+"LINESTRING (11.060746 49.445249,11.060809 49.445722)",243
+"LINESTRING (11.060746 49.445249,11.060834 49.445703)",249
+"LINESTRING (11.309401 49.253167,11.309507 49.253117)",250
+"LINESTRING (11.034003 49.457036,11.053242 49.450239)",255
+"LINESTRING (11.053155 49.450302,11.053088 49.450201)",203
+"LINESTRING (11.053155 49.450302,11.053244 49.450160)",180
+"LINESTRING (11.053155 49.450302,11.053088 49.450201)",255
+"LINESTRING (11.053155 49.450302,11.053244 49.450160)",252
+"LINESTRING (11.053155 49.450302,11.053242 49.450239)",255
+"LINESTRING (11.053088 49.450201,11.052335 49.450259)",230
+"LINESTRING (11.053088 49.450201,11.053155 49.450302)",255
+"LINESTRING (11.053088 49.450201,11.053155 49.450302)",219
+"LINESTRING (11.053088 49.450201,11.053244 49.450160)",183
"LINESTRING (11.053088 49.450201,11.053244 49.450160)",255
-"LINESTRING (11.055833 49.446180,11.053244 49.450160)",122
+"LINESTRING (11.053088 49.450201,11.053242 49.450239)",255
+"LINESTRING (11.929843 49.547945,11.929869 49.547872)",255
+"LINESTRING (11.929843 49.547945,11.929778 49.547877)",247
+"LINESTRING (11.929843 49.547945,11.929869 49.547872)",251
+"LINESTRING (11.929843 49.547945,11.929778 49.547877)",255
+"LINESTRING (11.133719 49.426322,11.133572 49.426172)",237
+"LINESTRING (11.133719 49.426322,11.133547 49.426473)",247
+"LINESTRING (11.133719 49.426322,11.133227 49.426560)",250
+"LINESTRING (11.133719 49.426322,11.133471 49.426658)",231
+"LINESTRING (11.133719 49.426322,11.133790 49.426145)",255
+"LINESTRING (11.133719 49.426322,11.133987 49.426336)",239
+"LINESTRING (11.240508 49.493497,11.240652 49.493332)",255
+"LINESTRING (11.133987 49.426336,11.133719 49.426322)",242
+"LINESTRING (11.133987 49.426336,11.133572 49.426172)",241
+"LINESTRING (11.133987 49.426336,11.133547 49.426473)",251
+"LINESTRING (11.133987 49.426336,11.133227 49.426560)",228
+"LINESTRING (11.133987 49.426336,11.133790 49.426145)",255
+"LINESTRING (11.029045 49.408248,11.029123 49.408339)",251
+"LINESTRING (11.243966 49.495742,11.243985 49.495789)",194
+"LINESTRING (11.243966 49.495742,11.244049 49.495666)",229
+"LINESTRING (11.133790 49.426145,11.133719 49.426322)",223
+"LINESTRING (11.133790 49.426145,11.133572 49.426172)",251
+"LINESTRING (11.133790 49.426145,11.133547 49.426473)",221
+"LINESTRING (11.133790 49.426145,11.133987 49.426336)",240
+"LINESTRING (11.100321 49.463890,11.100011 49.463907)",255
+"LINESTRING (11.242560 49.500782,11.242362 49.500843)",236
+"LINESTRING (11.242560 49.500782,11.242584 49.500867)",238
+"LINESTRING (11.242560 49.500782,11.242506 49.500826)",229
+"LINESTRING (11.267096 49.504519,11.267260 49.504478)",254
+"LINESTRING (11.133471 49.426658,11.133547 49.426473)",247
+"LINESTRING (11.133471 49.426658,11.133227 49.426560)",255
+"LINESTRING (11.326797 49.198226,11.327049 49.198374)",233
+"LINESTRING (11.326797 49.198226,11.326828 49.198261)",230
+"LINESTRING (11.326797 49.198226,11.326239 49.198173)",250
+"LINESTRING (11.353858 49.385904,11.354212 49.386132)",186
+"LINESTRING (11.082520 49.441461,11.082675 49.441323)",167
+"LINESTRING (11.082520 49.441461,11.082450 49.441592)",230
+"LINESTRING (11.097160 49.454873,11.097184 49.454971)",255
+"LINESTRING (11.082675 49.441323,11.082598 49.441201)",217
+"LINESTRING (11.082675 49.441323,11.082520 49.441461)",151
+"LINESTRING (11.133572 49.426172,11.133790 49.426145)",255
+"LINESTRING (11.133572 49.426172,11.133987 49.426336)",219
+"LINESTRING (11.055854 49.446147,11.056065 49.446113)",186
+"LINESTRING (11.055854 49.446147,11.055833 49.446180)",255
+"LINESTRING (11.055854 49.446147,11.055931 49.446185)",255
+"LINESTRING (11.055854 49.446147,11.055853 49.446215)",255
+"LINESTRING (11.055854 49.446147,11.055853 49.446215)",250
+"LINESTRING (11.242584 49.500867,11.242362 49.500843)",250
+"LINESTRING (11.242584 49.500867,11.242560 49.500782)",246
+"LINESTRING (11.242584 49.500867,11.242506 49.500826)",238
+"LINESTRING (11.099227 49.484852,11.099139 49.484793)",255
+"LINESTRING (11.929869 49.547872,11.929843 49.547945)",251
+"LINESTRING (11.929869 49.547872,11.929843 49.547945)",255
+"LINESTRING (11.929869 49.547872,11.929778 49.547877)",251
+"LINESTRING (11.929869 49.547872,11.929778 49.547877)",231
+"LINESTRING (11.133227 49.426560,11.133719 49.426322)",222
+"LINESTRING (11.133227 49.426560,11.133547 49.426473)",236
+"LINESTRING (11.133227 49.426560,11.133471 49.426658)",255
+"LINESTRING (11.133227 49.426560,11.133987 49.426336)",225
+"LINESTRING (11.082450 49.441592,11.082520 49.441461)",226
+"LINESTRING (11.099139 49.484793,11.099227 49.484852)",250
+"LINESTRING (11.235197 49.251260,11.235317 49.251154)",240
+"LINESTRING (11.326239 49.198173,11.326828 49.198261)",225
+"LINESTRING (11.326239 49.198173,11.326797 49.198226)",234
+"LINESTRING (11.326239 49.198173,11.327210 49.198556)",228
+"LINESTRING (11.326239 49.198173,11.327320 49.198487)",202
+"LINESTRING (11.056065 49.446113,11.055833 49.446180)",6
+"LINESTRING (11.056065 49.446113,11.055854 49.446147)",111
+"LINESTRING (11.235317 49.251154,11.235197 49.251260)",238
+"LINESTRING (11.068350 49.457076,11.068540 49.457040)",255
+"LINESTRING (11.068350 49.457076,11.068540 49.457040)",110
+"LINESTRING (11.327320 49.198487,11.327199 49.198747)",236
+"LINESTRING (11.327320 49.198487,11.326239 49.198173)",245
+"LINESTRING (11.327320 49.198487,11.327210 49.198556)",255
+"LINESTRING (11.327320 49.198487,11.327564 49.198490)",238
+"LINESTRING (11.350607 49.390785,11.350556 49.390745)",255
+"LINESTRING (11.055931 49.446185,11.068540 49.457040)",255
+"LINESTRING (11.055931 49.446185,11.055833 49.446180)",255
+"LINESTRING (11.055931 49.446185,11.055853 49.446215)",255
+"LINESTRING (11.055931 49.446185,11.055854 49.446147)",255
+"LINESTRING (11.055931 49.446185,11.053242 49.450239)",152
+"LINESTRING (11.309507 49.253117,11.309635 49.253179)",246
+"LINESTRING (11.309507 49.253117,11.309401 49.253167)",243
+"LINESTRING (11.240652 49.493332,11.240508 49.493497)",218
+"LINESTRING (11.240652 49.493332,11.240508 49.493497)",255
+"LINESTRING (11.118684 49.435194,11.118731 49.435057)",242
+"LINESTRING (11.118684 49.435194,11.118827 49.435124)",246
+"LINESTRING (11.327199 49.198747,11.326239 49.198173)",173
+"LINESTRING (11.327199 49.198747,11.327210 49.198556)",230
+"LINESTRING (11.060577 49.445724,11.060809 49.445722)",232
+"LINESTRING (11.060577 49.445724,11.060834 49.445703)",255
+"LINESTRING (11.060577 49.445724,11.060652 49.445747)",255
+"LINESTRING (11.060577 49.445724,11.053242 49.450239)",246
+"LINESTRING (11.060577 49.445724,11.060834 49.445703)",195
+"LINESTRING (11.055833 49.446180,11.053244 49.450160)",123
"LINESTRING (11.055833 49.446180,11.055931 49.446185)",255
+"LINESTRING (11.055833 49.446180,11.055853 49.446215)",251
+"LINESTRING (11.055833 49.446180,11.055030 49.448210)",160
"LINESTRING (11.055833 49.446180,11.055854 49.446147)",255
-"LINESTRING (11.060834 49.445703,11.060577 49.445724)",124
-"LINESTRING (11.060834 49.445703,11.060577 49.445724)",140
-"LINESTRING (11.033453 49.456213,11.033664 49.456434)",188
-"LINESTRING (11.309507 49.253117,11.309635 49.253179)",243
-"LINESTRING (11.242560 49.500782,11.242506 49.500826)",246
-"LINESTRING (11.243966 49.495742,11.243985 49.495789)",199
-"LINESTRING (11.243966 49.495742,11.244049 49.495666)",212
-"LINESTRING (11.242362 49.500843,11.242560 49.500782)",235
-"LINESTRING (11.242362 49.500843,11.242506 49.500826)",247
-"LINESTRING (11.060809 49.445722,11.060834 49.445703)",151
-"LINESTRING (11.075663 49.455889,11.075651 49.455823)",97
-"LINESTRING (11.242584 49.500867,11.242362 49.500843)",255
-"LINESTRING (11.242584 49.500867,11.242560 49.500782)",232
-"LINESTRING (11.242584 49.500867,11.242506 49.500826)",253
-"LINESTRING (11.929869 49.547872,11.929843 49.547945)",247
-"LINESTRING (11.929869 49.547872,11.929843 49.547945)",216
-"LINESTRING (11.929869 49.547872,11.929778 49.547877)",245
-"LINESTRING (11.929869 49.547872,11.929778 49.547877)",223
-"LINESTRING (11.235197 49.251260,11.235317 49.251154)",253
+"LINESTRING (11.055833 49.446180,11.055853 49.446215)",88
+"LINESTRING (11.060834 49.445703,11.060809 49.445722)",200
+"LINESTRING (11.060834 49.445703,11.060577 49.445724)",152
+"LINESTRING (11.060834 49.445703,11.053242 49.450239)",254
+"LINESTRING (11.060834 49.445703,11.060577 49.445724)",255
+"LINESTRING (11.081578 49.448094,11.081778 49.448205)",217
+"LINESTRING (11.055207 49.448157,11.054971 49.448058)",220
+"LINESTRING (11.326828 49.198261,11.327049 49.198374)",250
+"LINESTRING (11.326828 49.198261,11.326797 49.198226)",251
+"LINESTRING (11.326828 49.198261,11.326239 49.198173)",255
+"LINESTRING (11.326828 49.198261,11.327210 49.198556)",211
+"LINESTRING (11.242362 49.500843,11.242560 49.500782)",241
+"LINESTRING (11.242362 49.500843,11.242584 49.500867)",223
+"LINESTRING (11.242362 49.500843,11.242506 49.500826)",246
+"LINESTRING (11.072188 49.455098,11.072346 49.455030)",223
+"LINESTRING (11.059507 49.445610,11.060577 49.445724)",44
+"LINESTRING (11.059507 49.445610,11.059433 49.445555)",235
+"LINESTRING (11.075663 49.455889,11.075651 49.455823)",182
+"LINESTRING (11.327049 49.198374,11.326828 49.198261)",246
+"LINESTRING (11.243831 49.495752,11.243985 49.495789)",251
+"LINESTRING (11.327210 49.198556,11.326828 49.198261)",205
+"LINESTRING (11.327210 49.198556,11.327199 49.198747)",239
+"LINESTRING (11.327210 49.198556,11.327564 49.198490)",231
+"LINESTRING (11.327210 49.198556,11.327320 49.198487)",247
+"LINESTRING (11.075651 49.455823,11.075663 49.455889)",202
+"LINESTRING (11.075651 49.455823,11.074909 49.455831)",149
+"LINESTRING (11.068540 49.457040,11.055931 49.446185)",255
+"LINESTRING (11.068540 49.457040,11.068350 49.457076)",255
+"LINESTRING (11.068540 49.457040,11.068350 49.457076)",163
+"LINESTRING (11.327564 49.198490,11.327210 49.198556)",242
+"LINESTRING (11.327564 49.198490,11.327320 49.198487)",243
+"LINESTRING (11.053244 49.450160,11.053088 49.450201)",205
+"LINESTRING (11.053244 49.450160,11.052335 49.450259)",245
+"LINESTRING (11.053244 49.450160,11.053155 49.450302)",254
+"LINESTRING (11.053244 49.450160,11.053155 49.450302)",190
+"LINESTRING (11.053244 49.450160,11.055833 49.446180)",155
+"LINESTRING (11.053244 49.450160,11.053088 49.450201)",255
+"LINESTRING (11.053244 49.450160,11.053242 49.450239)",255
+"LINESTRING (11.350556 49.390745,11.350607 49.390785)",255
+"LINESTRING (11.082598 49.441201,11.082675 49.441323)",210
+"LINESTRING (11.082150 49.448860,11.082298 49.448933)",203
+"LINESTRING (11.082150 49.448860,11.081778 49.448205)",255
+"LINESTRING (11.082150 49.448860,11.082030 49.448728)",255
+"LINESTRING (11.102170 49.462784,11.102066 49.462707)",169
+"LINESTRING (11.029123 49.408339,11.029045 49.408248)",234
+"LINESTRING (11.060652 49.445747,11.060809 49.445722)",228
+"LINESTRING (11.060652 49.445747,11.060577 49.445724)",201
+"LINESTRING (11.072346 49.455030,11.072188 49.455098)",236
+"LINESTRING (11.243985 49.495789,11.244049 49.495666)",250
+"LINESTRING (11.243985 49.495789,11.243831 49.495752)",250
+"LINESTRING (11.243985 49.495789,11.243966 49.495742)",204
+"LINESTRING (11.060809 49.445722,11.060577 49.445724)",176
+"LINESTRING (11.060809 49.445722,11.060746 49.445249)",173
+"LINESTRING (11.060809 49.445722,11.060652 49.445747)",185
+"LINESTRING (11.060809 49.445722,11.060834 49.445703)",202
+"LINESTRING (11.060536 49.444944,11.060834 49.445703)",34
+"LINESTRING (11.089671 49.466812,11.089810 49.466786)",242
+"LINESTRING (11.088155 49.447751,11.092974 49.445546)",210
+"LINESTRING (11.055030 49.448210,11.054971 49.448058)",255
+"LINESTRING (11.055030 49.448210,11.055833 49.446180)",114
+"LINESTRING (11.092974 49.445546,11.088155 49.447751)",198
+"LINESTRING (11.089810 49.466786,11.089671 49.466812)",250
+"LINESTRING (11.059433 49.445555,11.059507 49.445610)",229
+"LINESTRING (11.267260 49.504478,11.267096 49.504519)",234
+"LINESTRING (11.283251 49.513215,11.283375 49.513155)",143
+"LINESTRING (11.100011 49.463907,11.100321 49.463890)",251
+"LINESTRING (11.082030 49.448728,11.082150 49.448860)",251
+"LINESTRING (11.082030 49.448728,11.082298 49.448933)",196
+"LINESTRING (11.082030 49.448728,11.081778 49.448205)",255
+"LINESTRING (11.081778 49.448205,11.082150 49.448860)",251
+"LINESTRING (11.081778 49.448205,11.081578 49.448094)",238
+"LINESTRING (11.081778 49.448205,11.082030 49.448728)",251
+"LINESTRING (11.242506 49.500826,11.242362 49.500843)",247
+"LINESTRING (11.242506 49.500826,11.242560 49.500782)",250
+"LINESTRING (11.242506 49.500826,11.242584 49.500867)",249
+"LINESTRING (11.244049 49.495666,11.243985 49.495789)",253
+"LINESTRING (11.244049 49.495666,11.243831 49.495752)",255
+"LINESTRING (11.244049 49.495666,11.243966 49.495742)",238
+"LINESTRING (11.086825 49.459502,11.086712 49.459419)",226
+"LINESTRING (11.309635 49.253179,11.309507 49.253117)",213
+"LINESTRING (11.074909 49.455831,11.075651 49.455823)",157
+"LINESTRING (11.354212 49.386132,11.354153 49.386207)",254
+"LINESTRING (11.033453 49.456213,11.033664 49.456434)",191
+"LINESTRING (11.052335 49.450259,11.053088 49.450201)",144
+"LINESTRING (11.052335 49.450259,11.053244 49.450160)",146
+"LINESTRING (11.283375 49.513155,11.283251 49.513215)",173
+"LINESTRING (11.118827 49.435124,11.118731 49.435057)",255
+"LINESTRING (11.118827 49.435124,11.118684 49.435194)",235
+"LINESTRING (11.118827 49.435124,11.118731 49.435057)",242
+"LINESTRING (11.133547 49.426473,11.133719 49.426322)",246
+"LINESTRING (11.133547 49.426473,11.133227 49.426560)",255
+"LINESTRING (11.133547 49.426473,11.133471 49.426658)",255
+"LINESTRING (11.133547 49.426473,11.133790 49.426145)",236
+"LINESTRING (11.133547 49.426473,11.133987 49.426336)",255
+"LINESTRING (11.053242 49.450239,11.055931 49.446185)",242
+"LINESTRING (11.053242 49.450239,11.034003 49.457036)",255
+"LINESTRING (11.053242 49.450239,11.053155 49.450302)",255
+"LINESTRING (11.053242 49.450239,11.060834 49.445703)",242
+"LINESTRING (11.053242 49.450239,11.053088 49.450201)",255
+"LINESTRING (11.053242 49.450239,11.060577 49.445724)",243
+"LINESTRING (11.053242 49.450239,11.053244 49.450160)",255
+"LINESTRING (11.118731 49.435057,11.118684 49.435194)",247
+"LINESTRING (11.118731 49.435057,11.118827 49.435124)",255
+"LINESTRING (11.118731 49.435057,11.118827 49.435124)",255
+"LINESTRING (11.354153 49.386207,11.353858 49.385904)",226
+"LINESTRING (11.354153 49.386207,11.354212 49.386132)",255
+"LINESTRING (11.082298 49.448933,11.082150 49.448860)",233
+"LINESTRING (11.082298 49.448933,11.082030 49.448728)",219
+"LINESTRING (11.055853 49.446215,11.056065 49.446113)",156
+"LINESTRING (11.055853 49.446215,11.055833 49.446180)",51
+"LINESTRING (11.055853 49.446215,11.055833 49.446180)",255
+"LINESTRING (11.055853 49.446215,11.055931 49.446185)",255
+"LINESTRING (11.055853 49.446215,11.055854 49.446147)",251
+"LINESTRING (11.055853 49.446215,11.055854 49.446147)",251
+"LINESTRING (11.097184 49.454971,11.097160 49.454873)",231
diff --git a/map/csv/routers.csv b/map/csv/routers.csv
index 37b8ede..8fe8305 100644
--- a/map/csv/routers.csv
+++ b/map/csv/routers.csv
@@ -1,836 +1,878 @@
lng,lat,status
-10.525941,50.139822,offline
-11.340223,49.559511,offline
-12.876245,47.722455,offline
-12.876491,47.722397,offline
-12.488864,47.671465,offline
-9.942015,49.788808,unknown
-10.788091,49.406085,offline
-11.073679,49.416972,unknown
-11.000646,49.591327,offline
-11.073677,49.416949,unknown
-11.092324,49.445642,unknown
-10.878385,49.874056,offline
-10.833539,49.904606,offline
-10.527627,50.016878,offline
-11.021527,49.592351,unknown
-11.002459,49.458602,offline
-11.455897,49.296284,offline
-11.057572,49.457836,unknown
-10.568271,50.092782,offline
-11.302936,49.392122,offline
-11.920480,50.309827,offline
-12.720754,49.386128,unknown
-11.449773,49.292383,offline
-12.720866,49.385865,unknown
-12.876390,47.722300,offline
-10.523081,50.138232,unknown
-11.028449,49.452113,unknown
-9.933486,49.789724,unknown
-10.993559,49.571714,unknown
-10.788976,49.286827,offline
-12.856180,47.719058,offline
-11.920712,50.309814,offline
-10.961113,50.264736,offline
-10.961126,50.264679,offline
-10.961212,50.264717,offline
-10.522011,50.137372,unknown
-9.911240,49.793022,unknown
-10.532133,50.121706,offline
-9.911216,49.793065,unknown
-10.989276,49.566912,unknown
-10.882714,49.567824,unknown
-10.417507,49.501351,unknown
-12.876530,47.719331,offline
-11.504769,50.015039,offline
-11.920552,50.309804,offline
-12.876685,47.719352,offline
-11.920657,50.309832,offline
-11.037655,49.436696,unknown
-10.928628,49.487818,offline
-10.862520,49.466480,offline
-10.970516,49.483072,offline
-10.985384,49.461922,offline
-12.875139,47.726595,offline
-11.920662,50.309727,offline
-9.063665,50.000543,offline
-11.092141,49.442505,unknown
-11.920510,50.309784,offline
-11.920698,50.309767,offline
-12.875386,47.726432,offline
-11.035052,49.591197,offline
-10.987194,49.466779,offline
-11.006825,49.589743,offline
-11.916872,50.321122,unknown
-11.222889,49.088226,offline
-11.060126,49.445556,unknown
-11.006780,49.589737,offline
-10.532584,50.122269,offline
-11.544093,49.950430,offline
-12.877645,47.724412,offline
-12.875267,47.722320,offline
-12.536847,47.896881,offline
-10.892891,49.901734,offline
-11.034815,49.591138,offline
-11.543986,49.950399,offline
-9.063855,50.000205,offline
-10.520334,50.035783,offline
-11.495819,50.010280,offline
-10.532606,50.122273,offline
-10.828609,49.910265,offline
-10.509678,50.031500,offline
-11.003145,49.596533,offline
-12.876127,47.722416,offline
-12.876697,47.722391,offline
-12.875267,47.726502,offline
-9.973182,49.772862,offline
-10.775375,49.753544,offline
-12.876486,47.722398,offline
-10.975685,50.249875,offline
-10.877489,49.464505,offline
-9.214525,49.807541,offline
-10.984582,49.495361,offline
-12.841281,47.811387,offline
-12.856177,47.719050,offline
-9.957237,49.742232,offline
-10.512596,50.036752,offline
-10.981525,49.477825,offline
-10.160924,50.536065,offline
-10.078261,49.139316,offline
-10.568912,50.093722,offline
-10.505220,50.031364,offline
-9.289469,50.014172,offline
-10.828762,49.910230,offline
-10.515771,50.026236,offline
-10.988399,49.553703,offline
-11.003712,49.468166,offline
-9.914954,49.799846,offline
-11.005146,49.773141,offline
-10.204013,50.099861,offline
-11.005097,49.591708,offline
-11.003650,49.468073,offline
-12.875263,47.726370,offline
-10.516281,50.025988,offline
-12.877034,47.724609,offline
-10.711131,49.954689,offline
-10.882779,49.886581,offline
-12.876674,47.724466,offline
-10.084902,49.138702,offline
-12.538333,47.896518,offline
-10.509713,50.031443,offline
-11.003559,49.468047,offline
-12.877489,47.722892,offline
-9.296888,50.011694,offline
-11.005032,49.591706,offline
-10.192121,49.911825,offline
-11.034805,49.591177,offline
-11.034863,49.591156,offline
-9.289490,50.014343,offline
-10.523518,50.138394,offline
-11.003615,49.468081,offline
-10.981610,49.477771,offline
-10.987268,49.466670,offline
-10.509616,50.031446,offline
-10.078175,49.139313,offline
-11.596222,49.916428,offline
-10.550256,49.997336,offline
-11.034688,49.591141,offline
+11.118532,49.435033,unknown
+11.118621,49.434971,unknown
+10.509678,50.031500,unknown
+11.920662,50.309727,unknown
+10.997139,49.470392,unknown
+11.003145,49.596533,unknown
+11.041312,49.653691,unknown
+11.041316,49.653656,unknown
+10.428619,49.706909,unknown
+10.566479,50.093715,unknown
+11.182485,49.784303,unknown
+10.975685,50.249875,unknown
+9.119339,49.989220,unknown
+10.895374,49.899066,unknown
+10.532133,50.121706,unknown
+11.168654,49.464552,offline
+10.505220,50.031364,unknown
+11.056371,49.769906,unknown
+10.072883,49.135864,unknown
+60.831106,80.622391,unknown
+10.982852,49.477194,unknown
+11.005508,49.594951,unknown
+11.243284,50.138965,unknown
+9.859084,49.656185,unknown
+11.003712,49.468166,unknown
+10.534295,50.124206,unknown
+10.885491,49.890566,unknown
+10.989970,49.469121,unknown
+10.828743,49.910203,unknown
+12.981503,47.841012,offline
12.876406,47.722315,offline
-11.259447,49.803692,offline
-9.297121,50.011693,offline
-11.005627,49.594883,offline
-11.040246,49.599210,offline
-10.520345,50.035831,offline
-10.515629,50.026301,offline
-12.143921,50.171483,offline
-10.505234,50.031367,offline
-10.985279,49.480760,offline
-10.532642,50.122208,offline
-10.515552,50.026455,offline
-11.019059,49.594271,offline
-10.078316,49.139407,offline
-11.034968,49.590759,offline
-10.994214,49.583316,offline
+11.005146,49.773141,unknown
+11.120790,50.328531,unknown
+10.986905,49.479970,unknown
+9.858931,49.656176,unknown
+10.079806,50.197198,unknown
+10.957057,50.068699,unknown
+11.003650,49.468073,unknown
+10.515807,50.026255,unknown
+9.214397,49.807416,unknown
+12.877489,47.722892,offline
+10.986921,49.479875,unknown
+11.025069,49.466837,unknown
+11.594020,49.917005,unknown
+11.062090,50.223143,unknown
+11.186281,49.780197,unknown
+10.997367,49.692809,unknown
+11.003559,49.468047,unknown
+11.340734,49.604052,unknown
+10.523518,50.138394,unknown
+9.914002,49.798670,unknown
+10.505234,50.031367,unknown
+11.028237,49.554477,unknown
+10.974921,49.478231,unknown
+11.034863,49.591156,unknown
+9.289490,50.014343,unknown
+10.601485,49.918475,unknown
+11.021578,49.551924,unknown
+11.183465,49.785296,unknown
+11.596222,49.916428,unknown
+11.188183,49.780871,unknown
+9.166753,49.800333,unknown
+11.003615,49.468081,unknown
+11.217100,49.808030,unknown
+10.958208,49.473229,unknown
+10.080160,50.197182,unknown
+10.958331,49.473225,unknown
+11.187370,49.779739,unknown
+11.002614,49.563322,unknown
+9.297121,50.011693,unknown
+10.994214,49.583316,unknown
+11.593939,49.916975,unknown
+11.183690,49.785292,unknown
12.876858,47.724324,offline
+10.986886,49.479674,unknown
12.876854,47.724644,offline
-11.034869,49.591122,offline
-11.323428,49.895837,offline
-10.532659,50.122260,offline
-9.297108,50.011760,offline
-12.875285,47.726267,offline
-10.985285,49.480873,offline
-10.515627,50.026399,offline
-10.988130,49.099465,offline
-10.892679,49.901962,offline
-11.006354,49.589782,offline
-10.534295,50.124206,offline
-11.065566,49.699955,offline
-10.990083,49.469132,offline
-11.049116,49.723191,offline
+11.259447,49.803692,unknown
+10.509616,50.031446,unknown
+10.998107,49.463686,unknown
+10.906020,49.903336,unknown
+11.021630,49.551939,unknown
+11.040246,49.599210,unknown
+9.297108,50.011760,unknown
+10.907235,49.906760,unknown
+10.961212,50.264717,unknown
+9.914678,49.799509,unknown
+12.877645,47.724412,offline
+9.927657,49.797144,unknown
+12.981615,47.841185,offline
+11.034869,49.591122,unknown
+10.534344,50.124102,unknown
+11.022248,49.604012,unknown
+11.034688,49.591141,unknown
+9.063855,50.000205,unknown
+9.783636,50.166289,unknown
+11.186340,49.780116,unknown
+10.568739,50.093349,unknown
+11.920686,50.309726,unknown
+11.019059,49.594271,unknown
+11.141773,50.051097,unknown
+10.961319,50.264737,unknown
+10.251387,50.067659,unknown
+11.915944,50.313483,unknown
+11.001236,49.464852,unknown
+9.878062,49.779256,unknown
+9.927720,49.797040,unknown
+10.987428,49.814639,unknown
+9.971415,49.979087,unknown
+12.857142,47.803261,offline
+10.071795,49.134617,unknown
+12.876697,47.722391,offline
+10.566753,50.093625,unknown
+10.990008,49.469160,unknown
+11.034815,49.591138,unknown
+10.998187,49.463708,unknown
+12.875267,47.726502,offline
+11.141730,50.051155,unknown
+11.602325,50.060661,unknown
+10.520279,50.035814,unknown
+10.892891,49.901734,unknown
+9.877839,49.779237,unknown
+10.533152,50.123749,unknown
+11.012132,49.574120,unknown
+10.251038,50.067610,unknown
+10.512596,50.036752,unknown
+12.875263,47.726370,offline
+11.572940,49.943752,unknown
+10.963593,49.597168,unknown
+10.984582,49.495361,unknown
+10.192121,49.911654,unknown
+11.173535,49.776331,unknown
+11.141821,50.051059,unknown
+10.160722,50.536164,unknown
+11.007302,49.467736,unknown
+11.920510,50.309784,unknown
+10.636718,50.152130,unknown
+10.568412,50.093444,unknown
+9.155350,49.970969,unknown
+10.956244,49.591039,unknown
+10.599444,49.921958,unknown
+10.988655,49.479046,unknown
+10.711131,49.954689,unknown
+11.544093,49.950430,unknown
+11.188583,49.780680,unknown
+10.990083,49.467561,unknown
+9.957237,49.742232,unknown
+10.988122,49.545037,unknown
+10.968333,49.566381,unknown
+10.567928,50.093549,unknown
+12.841281,47.811387,offline
+12.876486,47.722398,offline
+10.529795,50.139491,unknown
+11.004878,49.595174,unknown
+11.047370,49.722528,unknown
+11.119456,50.323470,unknown
+10.990636,49.477537,unknown
+10.968478,49.566593,unknown
+11.014023,49.597457,unknown
+9.938368,49.780985,unknown
+10.532606,50.122273,unknown
+12.857250,47.803357,offline
+10.963567,49.597102,unknown
+10.998092,49.472048,unknown
+10.568013,50.093556,unknown
+12.877034,47.724609,offline
+10.520334,50.035783,unknown
+10.516281,50.025988,unknown
+11.005097,49.591708,unknown
+10.509713,50.031443,unknown
+10.982905,49.477250,unknown
+10.521946,50.137449,unknown
+10.674012,50.116946,unknown
+11.047256,49.722446,unknown
+10.515771,50.026236,unknown
+9.296888,50.011694,unknown
+11.190614,49.787469,unknown
+11.920698,50.309767,unknown
+11.920712,50.309814,unknown
+11.034805,49.591177,unknown
+10.566721,50.093632,unknown
+10.775375,49.753544,unknown
+10.192121,49.911825,unknown
+10.982541,49.472619,unknown
+10.537984,50.100465,unknown
+9.877231,49.779214,unknown
+11.187227,49.779785,unknown
+9.971535,49.979202,unknown
+10.568437,50.092998,unknown
+11.187471,49.780375,unknown
+10.515629,50.026301,unknown
+10.520345,50.035831,unknown
+12.876674,47.724466,offline
+11.005032,49.591706,unknown
+9.168675,49.808214,unknown
+10.885236,49.890433,unknown
+10.974856,49.478258,unknown
+11.053807,49.772821,unknown
+10.908479,48.959782,unknown
+10.981610,49.477771,unknown
+10.204013,50.099861,unknown
+10.997465,49.692763,unknown
+10.982487,49.472538,unknown
+10.519430,50.135393,unknown
+11.047525,49.722542,unknown
+10.801856,50.094259,unknown
+11.041360,49.653638,unknown
+10.538240,50.100541,unknown
+10.997036,50.106607,unknown
+11.047504,49.722587,unknown
+9.914954,49.799846,unknown
+11.340616,49.604171,unknown
+10.890577,49.894727,unknown
+10.988175,49.478515,unknown
+10.982572,49.472687,unknown
+10.532642,50.122208,unknown
+11.004320,49.580096,unknown
+10.512795,50.036745,unknown
+11.005627,49.594883,unknown
+10.997409,49.692662,unknown
+11.916821,50.320391,unknown
+11.041361,49.653677,unknown
+10.985279,49.480760,unknown
+12.537320,47.896683,offline
+11.190315,49.787040,unknown
+11.190420,49.786847,unknown
+10.906226,49.903004,unknown
+10.988309,49.478531,unknown
+10.515552,50.026455,unknown
+10.070424,49.137366,unknown
+10.950612,50.268591,unknown
+10.988130,49.099465,unknown
+10.532659,50.122260,unknown
+10.828609,49.910265,unknown
+11.015709,49.606981,unknown
+11.183526,49.785386,unknown
+9.913155,49.798666,unknown
+11.190441,49.787138,unknown
+11.701647,50.327732,unknown
+10.890548,49.895099,unknown
+10.001220,49.723772,unknown
+11.005523,49.594917,unknown
+10.591352,50.016196,unknown
+10.223139,49.989902,unknown
+10.193749,49.904479,unknown
+10.532584,50.122269,unknown
+10.985285,49.480873,unknown
+10.882779,49.886581,unknown
+11.279979,49.351159,offline
+11.498061,50.018584,unknown
+60.714322,80.530168,unknown
+11.910720,50.321210,unknown
+10.515627,50.026399,unknown
+10.977123,49.479624,unknown
+11.323428,49.895837,unknown
+10.523192,50.137946,unknown
+11.186136,49.779856,unknown
+9.955512,49.799436,unknown
+11.190484,49.786816,unknown
+11.005447,49.594942,unknown
+9.252034,49.710499,unknown
+10.989499,49.479695,unknown
+12.875267,47.722320,offline
+10.882135,49.884775,unknown
+11.029383,49.461221,unknown
+10.523577,50.137909,unknown
+11.920552,50.309804,unknown
+11.495819,50.010280,unknown
+10.893117,49.896894,unknown
+11.182247,49.786739,unknown
+11.035052,49.591197,unknown
+10.887456,49.889045,unknown
+11.186303,49.778791,unknown
+10.505244,50.031244,unknown
+11.701909,50.327644,unknown
+9.890732,50.116276,unknown
+11.023406,49.552980,unknown
+10.522687,50.137473,unknown
+11.543986,49.950399,unknown
+10.509131,50.031318,unknown
+10.565295,49.965173,unknown
+11.003634,49.564394,unknown
+12.894194,53.106154,unknown
+11.920657,50.309832,unknown
+10.523230,50.138205,unknown
+12.856177,47.719050,offline
+10.512151,50.030121,unknown
+11.910778,50.321262,unknown
+10.564788,49.965051,unknown
+10.160924,50.536065,unknown
+9.214525,49.807541,unknown
+10.990034,49.478570,unknown
+9.937182,49.779186,unknown
+10.954807,49.481858,unknown
+10.990069,49.467614,unknown
+11.081195,49.434659,offline
+10.828762,49.910230,unknown
+12.109680,50.004267,unknown
+11.920480,50.309827,unknown
+10.568053,50.093510,unknown
+10.567957,50.093510,unknown
+10.987816,49.568979,unknown
+11.319372,49.681437,unknown
+11.098202,49.467622,offline
+10.538624,50.100408,unknown
+11.070874,49.448920,offline
+10.566882,50.093535,unknown
+10.568271,50.092782,unknown
+10.567107,50.093360,unknown
+10.568488,50.093145,unknown
+12.720754,49.386128,unknown
+12.720866,49.385865,unknown
+11.007724,49.323687,offline
+10.774739,49.286831,unknown
+10.774256,49.286657,unknown
+11.044770,49.715386,unknown
+10.999170,49.471757,unknown
+9.148782,49.986895,unknown
+12.912773,48.861812,offline
+12.912641,48.861849,offline
+12.912839,48.861861,offline
+10.566865,49.303102,unknown
+10.989386,49.469083,unknown
+10.989565,49.469104,unknown
+10.828818,49.910221,unknown
+10.924390,49.488667,unknown
+11.025414,49.464222,unknown
+11.007188,49.593798,unknown
+11.025939,49.321191,offline
+11.021578,49.330753,offline
+10.192518,49.908958,unknown
+11.327803,49.199656,offline
+10.963883,48.926250,unknown
+9.849264,49.744124,unknown
+11.045380,49.716252,unknown
+9.947160,49.783506,unknown
+11.020306,49.630049,unknown
+10.951835,49.596806,unknown
+10.987766,49.479036,unknown
+10.987805,49.478714,unknown
+12.875386,47.726432,offline
+11.086419,49.438885,offline
+11.082126,49.410361,offline
+11.848992,49.432614,offline
+10.917843,49.555876,unknown
+11.077642,49.439706,offline
+10.852749,49.615866,unknown
+9.931868,49.789348,unknown
+10.987194,49.466779,unknown
+10.917840,49.555857,unknown
+10.918082,49.555651,unknown
+11.067998,49.434533,offline
+11.023815,49.459947,unknown
+11.043436,49.602096,unknown
+11.222889,49.088226,offline
+11.360666,49.385096,offline
+11.076230,49.807087,unknown
+9.941980,49.788912,unknown
+9.927553,49.797235,unknown
+11.340223,49.559511,offline
11.028143,49.409222,offline
11.280532,49.510397,offline
11.275551,49.508415,offline
-11.042858,49.427845,offline
-10.510740,50.031288,offline
-11.025030,49.466839,offline
-10.163241,49.802646,offline
-9.981128,49.759601,offline
-9.945931,49.802555,offline
-11.636195,49.688605,offline
-10.981472,49.477669,offline
-10.835110,49.904612,offline
-10.905282,49.907504,offline
-10.510762,50.031425,offline
-10.510756,50.031365,offline
-10.565492,50.077538,offline
+10.510740,50.031288,unknown
+9.945931,49.802555,unknown
+11.636195,49.688605,unknown
+12.876245,47.722455,offline
+12.876185,47.726042,offline
+12.876491,47.722397,offline
+9.973182,49.772862,unknown
+12.488864,47.671465,offline
+10.510762,50.031425,unknown
+10.510756,50.031365,unknown
+10.565492,50.077538,unknown
11.108226,49.457925,offline
+10.988014,49.478489,unknown
12.885649,47.733404,offline
-10.194905,49.905280,offline
-10.968894,49.590113,offline
-11.324643,49.218469,offline
-11.042215,49.719257,offline
-11.504425,50.118202,offline
-10.968597,49.436239,offline
-10.806075,49.686635,offline
-11.190862,49.787398,offline
-11.190802,49.787521,offline
-11.006820,49.563663,offline
+10.788091,49.406085,unknown
+11.042215,49.719257,unknown
+11.504425,50.118202,unknown
+10.806075,49.686635,unknown
+11.190862,49.787398,unknown
+11.190802,49.787521,unknown
+11.006833,49.590551,unknown
11.283018,49.513063,offline
-10.987932,49.478456,offline
-10.985024,49.473625,offline
-10.897021,48.896484,offline
+10.985024,49.473625,unknown
+10.897021,48.896484,unknown
11.064517,49.462153,offline
-10.897136,48.895706,offline
+10.897136,48.895706,unknown
+11.000646,49.591327,unknown
11.074484,49.453882,offline
-11.126766,50.324195,offline
-10.902606,49.902690,offline
+10.878385,49.874056,unknown
+11.126766,50.324195,unknown
+10.902606,49.902690,unknown
11.076287,49.456730,offline
-11.340736,49.604014,offline
-9.934473,49.787581,offline
-10.073122,49.664114,offline
-11.004878,49.595174,offline
-10.538061,50.101662,offline
-10.540615,50.102081,offline
-9.985239,49.778779,offline
+10.990109,49.469184,unknown
+11.340736,49.604014,unknown
+9.976659,49.810300,unknown
+10.527627,50.016878,unknown
+11.283545,49.513014,offline
+10.538061,50.101662,unknown
+10.540615,50.102081,unknown
+11.081888,49.448674,offline
11.086518,49.438870,offline
-10.472674,49.283344,offline
-10.520283,50.137959,offline
-10.513615,50.029902,offline
+10.520283,50.137959,unknown
+10.513615,50.029902,unknown
11.055398,49.448507,offline
-11.090564,49.445398,offline
-11.235779,49.493271,offline
-11.319372,49.681437,offline
-11.098202,49.467622,offline
-10.905973,49.903398,offline
-11.920686,50.309726,offline
-10.892620,49.901918,offline
-11.087694,49.462397,offline
-9.543645,50.116936,offline
-11.319469,49.681528,offline
-11.098227,49.467634,offline
-11.070874,49.448920,offline
-10.566882,50.093535,offline
-10.893817,49.901219,offline
--103.359772,25.829769,offline
-10.567107,50.093360,offline
-10.568488,50.093145,offline
+10.892620,49.901918,unknown
+9.543645,50.116936,unknown
+11.455897,49.296284,offline
+10.893817,49.901219,unknown
+-103.359772,25.829769,unknown
+11.066998,49.457825,offline
+11.302936,49.392122,offline
11.067586,49.301931,offline
-11.090247,49.470092,offline
11.041378,49.407958,offline
-11.007724,49.323687,offline
-10.523112,50.138205,offline
-10.523121,50.138256,offline
-10.774739,49.286831,offline
-10.523160,50.138220,offline
-10.774256,49.286657,offline
-11.044770,49.715386,offline
-9.140970,50.054801,offline
-10.572866,50.091244,offline
-10.521246,50.141338,offline
-10.999170,49.471757,offline
+11.067386,49.301953,offline
+11.449773,49.292383,offline
+11.043470,49.428676,offline
+9.929069,49.789285,unknown
+12.876390,47.722300,offline
+12.538333,47.896518,offline
+10.523112,50.138205,unknown
+10.523121,50.138256,unknown
+10.523160,50.138220,unknown
+9.140970,50.054801,unknown
+10.521246,50.141338,unknown
11.130612,49.415327,offline
-11.245609,49.496408,offline
-11.126017,49.604629,offline
+10.961113,50.264736,unknown
+10.961126,50.264679,unknown
+10.151351,50.046329,unknown
+11.058125,49.450704,offline
+11.058109,49.450704,offline
+11.136794,49.716402,unknown
+11.175579,49.862027,unknown
+10.224701,50.048556,unknown
+11.099845,49.456309,offline
+11.019751,49.579902,unknown
+12.876530,47.719331,offline
+11.504769,50.015039,unknown
+12.876685,47.719352,offline
+11.187048,49.779940,unknown
+10.928628,49.487818,unknown
+10.862520,49.466480,unknown
+12.143921,50.171483,unknown
+10.970516,49.483072,unknown
+10.985384,49.461922,unknown
+11.058297,49.447463,offline
+11.034968,49.590759,unknown
+12.875139,47.726595,offline
+9.171977,49.966727,unknown
+11.098831,49.686121,unknown
+9.980693,49.981696,unknown
+12.101440,50.005091,unknown
+10.232217,50.047500,unknown
+10.906055,49.903147,unknown
+10.997782,49.482384,unknown
+10.906012,49.903270,unknown
+11.006871,49.590657,unknown
+9.908552,49.731538,unknown
+11.910751,50.321198,unknown
+11.911046,50.321183,unknown
+12.894924,53.106654,unknown
+11.066161,49.428338,offline
+11.183692,49.780994,unknown
+9.985070,49.810126,unknown
+10.642023,49.809485,unknown
+11.001957,49.599824,unknown
+11.101549,49.462832,online
+11.101679,49.462870,online
+11.102089,49.462664,online
+11.102066,49.462707,online
+11.360663,49.385193,offline
+11.235779,49.493271,offline
+11.042858,49.427845,offline
+11.069763,49.466817,offline
+11.090564,49.445398,offline
+11.087694,49.462397,offline
+11.172860,49.409692,offline
+12.982618,48.978968,offline
+11.064539,49.462205,online
+11.082807,49.460061,online
+11.058161,49.445836,online
+11.054971,49.448058,online
+11.101440,49.485951,online
+11.029147,49.408264,online
+11.064409,49.462178,online
+11.110894,49.468005,online
+11.077228,49.457249,online
+11.929778,49.547877,online
+11.060746,49.445249,online
+11.056507,49.417416,online
+11.088617,49.460800,online
+11.309401,49.253167,online
+11.271431,49.526014,online
+11.034003,49.457036,online
+11.053155,49.450302,online
+11.053088,49.450201,online
+11.929843,49.547945,online
+11.133719,49.426322,online
+11.073559,49.451719,online
+11.240508,49.493497,online
+11.067116,49.461506,online
+11.133987,49.426336,online
+11.029045,49.408248,online
+11.060909,49.465239,online
+11.243966,49.495742,online
+11.133790,49.426145,online
+11.100321,49.463890,online
+12.736223,48.001208,offline
+11.242560,49.500782,online
+11.267096,49.504519,online
+11.054708,49.450712,offline
+11.098227,49.467634,offline
+11.090247,49.470092,offline
11.098190,49.467641,offline
11.091987,49.442510,offline
11.007767,49.323641,offline
11.081176,49.434773,offline
-10.151351,50.046329,offline
-12.912773,48.861812,offline
-12.912641,48.861849,offline
-12.912839,48.861861,offline
-11.058109,49.450704,offline
-10.995582,49.481852,offline
-10.566865,49.303102,offline
-11.136794,49.716402,offline
-10.989386,49.469083,offline
-10.519430,50.135393,offline
-10.989565,49.469104,offline
-10.906055,49.903305,offline
-10.828818,49.910221,offline
-10.591352,50.016196,offline
-11.175579,49.862027,offline
-10.924390,49.488667,offline
-11.003676,49.607975,offline
-12.982618,48.978968,offline
-10.990716,49.467650,offline
-11.060447,49.446610,offline
-11.007188,49.593798,offline
-10.224701,50.048556,offline
11.067264,49.441448,offline
-11.019751,49.579902,offline
11.095644,49.459844,offline
-9.166837,49.804666,offline
-11.057449,49.462101,offline
-11.269548,49.522464,offline
-11.319550,49.681526,offline
-11.054913,49.451880,offline
11.095078,49.461775,offline
-11.188183,49.780871,offline
-11.245409,49.496466,offline
-11.245785,49.496359,offline
-11.246137,49.496275,offline
-10.567589,50.094060,offline
-11.246078,49.496386,offline
-11.246003,49.496502,offline
-11.025939,49.321191,offline
-11.058297,49.447463,offline
-11.021578,49.330753,offline
-11.098831,49.686121,offline
-10.192518,49.908958,offline
-9.971535,49.979202,offline
-11.080995,49.441029,offline
-9.980693,49.981696,offline
11.130647,49.400173,offline
-12.101440,50.005091,offline
-10.601485,49.918475,offline
-11.327803,49.199656,offline
-9.979234,49.980904,offline
-9.971415,49.979087,offline
-10.078310,49.139442,offline
-10.963883,48.926250,offline
-10.906055,49.903147,offline
-10.997782,49.482384,offline
-10.833598,49.904654,offline
-9.849264,49.744124,offline
-11.045380,49.716252,offline
-11.007027,49.563734,offline
11.918868,49.151482,offline
-11.006807,49.563798,offline
11.073820,49.414274,offline
-9.908316,49.731644,offline
11.036839,49.417234,offline
-9.908552,49.731538,offline
-9.947160,49.783506,offline
-9.927720,49.797040,offline
-11.020306,49.630049,offline
-10.951835,49.596806,offline
-10.987766,49.479036,offline
-10.892687,49.901887,offline
-10.907294,49.906703,offline
-10.987805,49.478714,offline
-11.094171,50.289788,offline
11.468997,48.717441,offline
-11.595885,49.962546,offline
-8.288173,51.066162,offline
-10.723042,49.670028,offline
-11.086419,49.438885,offline
-11.082126,49.410361,offline
11.096728,49.455496,offline
11.929880,49.547875,offline
-11.848992,49.432614,offline
-9.930895,49.788710,offline
-10.917843,49.555876,offline
-10.179729,49.375873,offline
-11.077642,49.439706,offline
-11.014910,49.593670,offline
-10.044958,49.160604,offline
-10.961185,49.599378,offline
-10.852749,49.615866,offline
-9.931868,49.789348,offline
-9.193202,50.000939,offline
11.376556,49.510079,offline
11.376556,49.510094,offline
11.376678,49.510051,offline
11.376805,49.510127,offline
11.376646,49.510194,offline
-10.339680,49.378894,offline
-10.917840,49.555857,offline
-10.918082,49.555651,offline
-9.995584,50.057466,offline
-11.067998,49.434533,offline
-11.023815,49.459947,offline
-11.043436,49.602096,offline
-9.955512,49.799436,offline
11.077502,49.436229,offline
-11.360663,49.385193,offline
-11.360666,49.385096,offline
-11.076230,49.807087,offline
-9.171977,49.966727,offline
-11.005447,49.594942,offline
-60.714322,80.530168,offline
-11.047370,49.722528,offline
-10.078497,50.197651,offline
-9.877839,49.779237,offline
-10.033698,50.132557,offline
-10.816778,49.324346,offline
-11.015709,49.606981,offline
-10.509131,50.031318,offline
-10.251387,50.067659,offline
-11.186136,49.779856,offline
-10.568739,50.093349,offline
-11.141821,50.051059,offline
-10.071169,49.134855,offline
-11.244030,49.730286,offline
-10.523192,50.137946,offline
-10.892848,49.901716,offline
-10.963593,49.597168,offline
-11.023406,49.552980,offline
-10.071795,49.134617,offline
-11.498061,50.018584,offline
-11.186303,49.778791,offline
-9.155350,49.970969,offline
-11.190420,49.786847,offline
-10.078141,49.139363,offline
-9.252034,49.710499,offline
-12.876185,47.726042,offline
-11.001236,49.464852,offline
-10.512151,50.030121,offline
-11.047256,49.722446,offline
-10.990008,49.469160,offline
-10.192802,49.909959,offline
-10.985111,49.475264,offline
-10.523577,50.137909,offline
-10.533911,50.123538,offline
-10.997465,49.692763,offline
-11.119456,50.323470,offline
-11.017800,49.576788,offline
-10.566753,50.093625,offline
-10.523230,50.138205,offline
-10.505244,50.031244,offline
-10.990781,49.467218,offline
-11.572940,49.943752,offline
-10.251038,50.067610,offline
-11.322812,50.239167,offline
-10.997139,49.470392,offline
-11.245164,49.731102,offline
-11.190441,49.787138,offline
-11.041316,49.653656,offline
-10.997409,49.692662,offline
-10.522687,50.137473,offline
-11.041312,49.653691,offline
-10.428619,49.706909,offline
-10.339465,49.378880,offline
-10.193749,49.904479,offline
-11.182485,49.784303,offline
-11.007302,49.467736,offline
-10.534915,50.121802,offline
-10.520279,50.035814,offline
-10.191423,49.913006,offline
-10.065375,49.143855,offline
-10.070424,49.137366,offline
+10.990781,49.467218,unknown
+10.191423,49.913006,unknown
+9.940792,49.803358,unknown
+10.977174,49.482142,unknown
+9.065016,50.057475,unknown
+11.023326,49.468447,unknown
+10.084902,49.138702,unknown
+10.995525,49.481872,unknown
+10.905761,49.903194,unknown
+11.216290,49.808186,unknown
+10.995742,49.481875,unknown
+10.121983,49.124405,unknown
+10.177706,50.294012,unknown
+11.025300,49.464601,unknown
+10.961035,49.493602,unknown
+10.995657,49.462413,unknown
+10.618114,49.229789,unknown
+9.065716,50.053272,unknown
+10.191718,49.912910,unknown
+11.188575,49.780687,unknown
+10.078497,50.197651,unknown
+11.085346,50.215051,unknown
+10.078175,49.139313,unknown
+10.984827,49.475034,unknown
+11.326923,49.610629,unknown
+11.188005,49.780642,unknown
+10.995582,49.481852,unknown
+10.192872,49.908731,unknown
+11.049116,49.723191,unknown
+10.892848,49.901716,unknown
+9.981128,49.759601,unknown
+10.065297,49.143771,unknown
+10.712622,49.907304,unknown
+10.194304,49.909319,unknown
+10.541463,50.031815,unknown
+10.989504,49.478872,unknown
+9.783781,50.166318,unknown
+11.078757,50.215833,unknown
+10.525872,50.036099,unknown
+10.995493,49.638686,unknown
+10.966523,49.472105,unknown
+11.025064,49.466931,unknown
+10.907192,49.906796,unknown
+10.082632,50.194320,unknown
+10.568730,50.093639,unknown
+10.526221,50.036083,unknown
+10.984802,49.475135,unknown
+12.439073,49.979650,unknown
+10.966847,49.472001,unknown
+10.192155,49.908690,unknown
+10.997639,49.482665,unknown
+10.526076,50.036104,unknown
+11.244030,49.730286,unknown
+10.533911,50.123538,unknown
+10.712603,49.907221,unknown
+10.892679,49.901962,unknown
+10.078141,49.139363,unknown
+11.245164,49.731102,unknown
+11.411524,49.771412,unknown
+10.044958,49.160604,unknown
+10.078261,49.139316,unknown
+10.985111,49.475264,unknown
+10.065375,49.143855,unknown
+10.543190,49.991224,unknown
+11.015973,49.596921,unknown
+11.006820,49.563701,unknown
+9.165886,49.804975,unknown
+10.339465,49.378880,unknown
+10.194545,49.908981,unknown
+10.905907,49.903146,unknown
+10.567644,50.093910,unknown
+10.198893,49.905248,unknown
+9.959155,49.738770,unknown
+10.877489,49.464505,unknown
+10.328475,49.934971,unknown
+10.199191,49.905394,unknown
+10.193172,49.911920,unknown
+10.987268,49.466670,unknown
+11.016945,49.689617,unknown
+11.326861,49.610542,unknown
+11.326856,49.610508,unknown
+10.816778,49.324346,unknown
+10.078310,49.139442,unknown
11.083134,49.465025,offline
-11.004154,51.421650,offline
-10.961319,50.264737,offline
-10.001220,49.723772,offline
-10.990608,49.467540,offline
-10.192121,49.911654,offline
-11.190484,49.786816,offline
-10.191877,49.907207,offline
-9.941980,49.788912,offline
-11.411524,49.771412,offline
-9.940792,49.803358,offline
-11.012132,49.574120,offline
-11.091519,49.713534,offline
-10.566479,50.093715,offline
-11.003634,49.564394,offline
-10.636718,50.152130,offline
-10.989499,49.479695,offline
-10.977174,49.482142,offline
-9.119339,49.989220,offline
-11.701909,50.327644,offline
-10.895374,49.899066,offline
-10.956244,49.591039,offline
-10.990069,49.467614,offline
-10.990034,49.478570,offline
-60.831106,80.622391,offline
-9.937182,49.779186,offline
-11.056371,49.769906,offline
-10.906020,49.903336,offline
-10.072883,49.135864,offline
-11.187048,49.779940,offline
-10.988014,49.478489,offline
-11.172860,49.409692,offline
-10.982852,49.477194,offline
-12.857142,47.803261,offline
-10.954807,49.481858,offline
-11.099845,49.456309,offline
-11.173535,49.776331,offline
-9.913155,49.798666,offline
-10.568412,50.093444,offline
-10.995525,49.481872,offline
-9.165886,49.804975,offline
-10.833592,49.904616,offline
-12.109680,50.004267,offline
-10.160722,50.536164,offline
-10.528329,50.136930,offline
-11.243284,50.138965,offline
-11.910720,50.321210,offline
-11.602325,50.060661,offline
-10.976907,49.482190,offline
-10.885491,49.890566,offline
-10.988655,49.479046,offline
-12.981503,47.841012,offline
-10.963567,49.597102,offline
-10.538624,50.100408,offline
-11.030854,49.545464,offline
-10.990109,49.469184,offline
-11.910778,50.321262,offline
-10.998162,49.463543,offline
-11.326861,49.610542,offline
-11.005508,49.594951,offline
-10.982905,49.477250,offline
-10.990711,49.467244,offline
-10.987816,49.568979,offline
-10.968478,49.566593,offline
-11.002614,49.563322,offline
-10.568053,50.093510,offline
-10.990083,49.467561,offline
-10.567957,50.093510,offline
-11.053155,49.450302,offline
-10.968333,49.566381,offline
-10.995742,49.481875,offline
-11.216290,49.808186,offline
-10.989970,49.469121,offline
-11.082520,49.441461,offline
-9.877231,49.779214,offline
-10.079806,50.197198,offline
-10.998187,49.463708,offline
-11.085346,50.215051,offline
-10.990636,49.477537,offline
-11.016945,49.689617,offline
-11.120790,50.328531,offline
-10.198893,49.905248,offline
-10.177706,50.294012,offline
-10.194545,49.908981,offline
-11.062090,50.223143,offline
-10.828743,49.910203,offline
-11.030824,49.545381,offline
-9.859084,49.656185,offline
-10.998092,49.472048,offline
-11.188575,49.780687,offline
-10.568013,50.093556,offline
-9.065016,50.057475,offline
-10.543190,49.991224,offline
-9.214397,49.807416,offline
-10.961035,49.493602,offline
-10.599444,49.921958,offline
-10.515807,50.026255,offline
-10.618114,49.229789,offline
-10.957057,50.068699,offline
-10.191718,49.912910,offline
-11.043470,49.428676,offline
-10.328475,49.934971,offline
-11.025300,49.464601,offline
-10.534344,50.124102,offline
-11.186281,49.780197,offline
-11.014023,49.597457,offline
-11.326923,49.610629,offline
-12.857250,47.803357,offline
-9.065781,50.053272,offline
-10.674012,50.116946,offline
-11.271431,49.526014,offline
-9.959155,49.738770,offline
-11.021578,49.551924,offline
-10.193172,49.911920,offline
-11.118657,49.435127,offline
-11.047525,49.722542,offline
-10.974921,49.478231,offline
-10.121983,49.124405,offline
-11.055030,49.448210,offline
-11.340734,49.604052,offline
-11.081778,49.448205,offline
-11.053242,49.450239,offline
-11.340616,49.604171,offline
-11.327049,49.198374,offline
-10.995657,49.462413,offline
-11.015973,49.596921,offline
-11.029123,49.408339,offline
-10.537984,50.100465,offline
-10.567928,50.093549,offline
-11.190315,49.787040,offline
-9.148782,49.986895,offline
-11.293773,49.459348,offline
-10.982541,49.472619,offline
-11.025069,49.466837,offline
-10.541463,50.031815,offline
-9.938368,49.780985,offline
-10.192872,49.908731,offline
-10.882135,49.884775,offline
-11.183465,49.785296,offline
-10.324799,49.934743,offline
-10.997036,50.106607,offline
-11.056507,49.417416,offline
-11.041390,49.328435,offline
-11.217100,49.808030,offline
-9.065716,50.053272,offline
-11.078757,50.215833,offline
-10.986905,49.479970,offline
-10.908479,48.959782,offline
-11.187370,49.779739,offline
-10.199191,49.905394,offline
-10.567644,50.093910,offline
-11.053807,49.772821,offline
-10.712622,49.907304,offline
-9.168675,49.808214,offline
-11.067116,49.461506,offline
-10.568437,50.092998,offline
-11.028237,49.554477,offline
-9.858931,49.656176,offline
-10.974856,49.478258,offline
-11.118749,49.435134,offline
-11.054708,49.450712,offline
-11.326856,49.610508,offline
-10.538240,50.100541,offline
-10.982487,49.472538,offline
-10.984827,49.475034,offline
-11.186968,49.780215,offline
-10.997723,49.482648,offline
-10.033736,50.132503,offline
-10.988122,49.545037,offline
-11.330210,49.198300,offline
-9.783781,50.166318,offline
-11.041360,49.653638,offline
-10.966523,49.472105,offline
-9.890732,50.116276,offline
-10.890548,49.895099,offline
-11.594020,49.917005,offline
-11.107699,49.459041,offline
-11.055207,49.448157,offline
-11.183690,49.785292,offline
-10.566721,50.093632,offline
-11.047504,49.722587,offline
-11.099227,49.484852,offline
-11.056001,49.447751,offline
-9.929069,49.789285,offline
-10.885236,49.890433,offline
-10.907192,49.906796,offline
-10.194304,49.909319,offline
-11.004320,49.580096,offline
-9.166753,49.800333,offline
-11.081578,49.448094,offline
-10.997367,49.692809,offline
-10.950612,50.268591,offline
-10.080160,50.197182,offline
-10.982572,49.472687,offline
-10.512795,50.036745,offline
-10.958331,49.473225,offline
-11.903171,50.309710,offline
-10.890577,49.894727,offline
-10.989504,49.478872,offline
-10.966847,49.472001,offline
-11.186944,49.780127,offline
-11.326928,49.610570,offline
-10.533152,50.123749,offline
-10.065297,49.143771,offline
-11.248176,49.726602,offline
-11.041361,49.653677,offline
-11.072346,49.455030,offline
-9.976659,49.810300,offline
-10.958208,49.473229,offline
-11.190614,49.787469,offline
-12.981615,47.841185,offline
-10.082632,50.194320,offline
-11.089810,49.466786,offline
-10.988175,49.478515,offline
-10.986886,49.479674,offline
-11.186340,49.780116,offline
-11.327564,49.198490,offline
-10.990641,49.467260,offline
-11.772979,49.866977,offline
-11.069763,49.466817,offline
-11.026438,49.575872,offline
-11.100321,49.463890,offline
-11.076295,49.452284,offline
-10.995493,49.638686,offline
-10.998107,49.463686,offline
-10.977123,49.479624,offline
-10.801856,50.094259,offline
-10.907235,49.906760,offline
-11.060652,49.445747,offline
-11.182247,49.786739,offline
-11.141773,50.051097,offline
-10.990623,49.467674,offline
-9.927657,49.797144,offline
-11.155168,49.526174,offline
-11.168654,49.464552,offline
-10.192155,49.908690,offline
-11.188583,49.780680,offline
-11.071236,49.467547,offline
-11.326778,49.610537,offline
-10.990064,49.544474,offline
-10.963025,49.028871,offline
-11.055853,49.446215,offline
-11.183526,49.785386,offline
-10.986921,49.479875,offline
-10.988309,49.478531,offline
-11.414677,49.449127,offline
-10.970535,49.595417,offline
-11.267260,49.504478,offline
-9.878062,49.779256,offline
-11.021630,49.551939,offline
-10.984802,49.475135,offline
-11.062468,49.423961,offline
-11.701647,50.327732,offline
-10.997639,49.482665,offline
-11.005523,49.594917,offline
-11.026213,49.575909,offline
-11.022248,49.604012,offline
-10.048682,49.140620,offline
-9.783636,50.166289,offline
-10.987428,49.814639,offline
-11.141730,50.051155,offline
-11.593939,49.916975,offline
-10.712603,49.907221,offline
-9.987125,49.776748,offline
-9.927553,49.797235,offline
-12.439073,49.979650,offline
-10.568730,50.093639,offline
-11.110572,49.470842,offline
-10.887456,49.889045,offline
-11.058125,49.450704,offline
-11.279979,49.351159,offline
-11.120265,49.480781,offline
-11.054971,49.448058,offline
-11.309401,49.253167,offline
-11.053641,49.458285,offline
-11.082675,49.441323,offline
-11.102066,49.462707,online
-11.240508,49.493497,offline
-11.067386,49.301953,offline
-11.954381,49.023804,offline
-11.060536,49.444944,offline
-11.060577,49.445724,offline
-11.283375,49.513155,offline
-11.102089,49.462664,online
-11.102170,49.462784,offline
-11.081888,49.448674,online
-11.101679,49.462870,online
-11.073559,49.451719,offline
-11.066998,49.457825,online
-11.156668,49.461521,offline
-11.235317,49.251154,online
-11.244049,49.495666,offline
-11.092974,49.445546,offline
-11.347238,49.560466,offline
-11.240652,49.493332,online
-11.053244,49.450160,offline
-11.110894,49.468005,online
-11.299342,49.389636,online
-11.025414,49.464222,offline
-11.037435,49.385283,online
-11.099139,49.484793,online
-11.012206,49.406205,online
-11.064758,49.440888,online
-11.354153,49.386207,offline
-11.243831,49.495752,online
-11.327320,49.198487,offline
-11.347251,49.562151,offline
-11.059507,49.445610,offline
-11.326239,49.198173,online
-11.082450,49.441592,offline
-11.055854,49.446147,offline
-11.056065,49.446113,offline
-11.073844,49.455992,offline
-11.068540,49.457040,offline
-11.243985,49.495789,online
-11.043218,49.417636,offline
-11.082598,49.441201,offline
-11.354212,49.386132,offline
-11.089671,49.466812,online
-11.059433,49.445555,offline
-11.350556,49.390745,online
-11.079649,49.454784,offline
-11.327199,49.198747,online
-11.075651,49.455823,online
-11.071506,49.448855,offline
-11.118731,49.435057,online
-11.082298,49.448933,offline
-11.283545,49.513014,offline
-11.309416,49.253316,offline
-11.002110,49.460573,offline
-11.118827,49.435124,offline
-11.065285,49.427181,online
-11.089653,49.427901,online
-11.034003,49.457036,online
-11.064539,49.462205,offline
-11.082807,49.460061,online
-11.086712,49.459419,offline
+11.595885,49.962546,unknown
+8.288173,51.066162,unknown
+10.723042,49.670028,unknown
+9.930895,49.788710,unknown
+10.179729,49.375873,unknown
+11.014910,49.593670,unknown
+10.525941,50.139822,unknown
+10.988399,49.553703,unknown
+12.876127,47.722416,offline
+11.916872,50.321122,unknown
+9.289469,50.014172,unknown
+11.030824,49.545381,unknown
+10.997723,49.482648,unknown
+10.993559,49.571714,unknown
+11.037655,49.436696,unknown
+11.073679,49.416972,unknown
+11.073677,49.416949,unknown
+11.092324,49.445642,unknown
+11.245609,49.496408,offline
+12.856180,47.719058,offline
+11.246078,49.496386,offline
+11.003714,49.564817,unknown
+10.989455,49.575304,unknown
+10.740166,49.826703,unknown
+11.133471,49.426658,online
11.326797,49.198226,online
-11.283251,49.513215,offline
-11.029147,49.408264,offline
-11.086825,49.459502,offline
-11.097184,49.454971,online
-11.120020,49.343824,offline
-11.326828,49.198261,offline
-11.054044,49.443324,offline
-11.064409,49.462178,online
-11.118684,49.435194,online
-11.023326,49.468447,online
-11.082030,49.448728,online
-11.081195,49.434659,offline
-11.100011,49.463907,online
-11.318294,49.525776,offline
-11.088155,49.447751,online
-11.929778,49.547877,online
-11.082150,49.448860,offline
-12.632933,49.205071,offline
-11.095472,49.457008,offline
-11.280714,49.513033,online
-11.033664,49.456434,online
-11.036178,49.440252,offline
-11.055931,49.446185,offline
-11.396552,49.499896,offline
-11.350607,49.390785,online
-11.324633,49.218486,online
-11.017263,49.424453,online
-11.088617,49.460800,online
-11.077228,49.457249,online
-11.028857,49.442780,online
-11.353858,49.385904,offline
-11.117064,49.402509,offline
-11.327210,49.198556,offline
-11.060746,49.445249,online
-11.929843,49.547945,online
-11.029045,49.408248,offline
-11.068350,49.457076,offline
-11.053088,49.450201,online
-11.309635,49.253179,offline
-11.055833,49.446180,offline
-11.119873,49.481018,offline
-11.074909,49.455831,online
-11.076404,49.456716,online
-11.104184,49.460319,online
-11.088357,49.424753,offline
-11.069930,49.466918,offline
-11.861527,49.446168,online
-11.060834,49.445703,online
-11.092458,49.442658,online
-11.033453,49.456213,online
-11.072188,49.455098,online
-11.309507,49.253117,online
-11.060909,49.465239,online
-11.242506,49.500826,online
-11.242560,49.500782,online
-11.056377,49.418784,online
-11.267096,49.504519,online
-11.243966,49.495742,online
-11.242362,49.500843,online
-11.060809,49.445722,online
-11.075663,49.455889,online
-11.025064,49.466931,online
+11.353858,49.385904,online
+11.082520,49.441461,online
+11.097160,49.454873,online
+11.082675,49.441323,online
+11.133572,49.426172,online
+11.055854,49.446147,online
11.242584,49.500867,online
-11.029383,49.461221,online
+11.099227,49.484852,online
11.929869,49.547872,online
-11.094657,49.461735,online
+11.133227,49.426560,online
+11.082450,49.441592,online
+11.099139,49.484793,online
+11.076295,49.452284,online
11.235197,49.251260,online
+11.071506,49.448855,online
+11.326239,49.198173,online
+11.056065,49.446113,online
+11.235317,49.251154,online
+11.324633,49.218486,online
+11.068350,49.457076,online
+11.269548,49.522464,online
+11.299342,49.389636,online
+11.327320,49.198487,online
+11.350607,49.390785,online
+11.055931,49.446185,online
+11.117064,49.402509,online
+11.110572,49.470842,online
+11.309507,49.253117,online
+11.240652,49.493332,online
+11.118684,49.435194,online
+11.327199,49.198747,online
+11.060577,49.445724,online
+11.104184,49.460319,online
+11.055833,49.446180,online
+11.060834,49.445703,online
+11.081578,49.448094,online
+11.055207,49.448157,online
+11.064758,49.440888,online
+11.326828,49.198261,online
+11.242362,49.500843,online
+11.056377,49.418784,online
+11.072188,49.455098,online
+11.092458,49.442658,online
+11.059507,49.445610,online
+11.075663,49.455889,online
+11.327049,49.198374,online
+11.062468,49.423961,online
+11.243831,49.495752,online
+11.327210,49.198556,online
+11.043218,49.417636,online
+11.075651,49.455823,online
+11.068540,49.457040,online
+11.327564,49.198490,online
+11.053244,49.450160,online
+11.120020,49.343824,online
+11.012206,49.406205,online
+11.350556,49.390745,online
+11.082598,49.441201,online
+11.082150,49.448860,online
+11.054044,49.443324,online
+12.632933,49.205071,online
+11.102170,49.462784,online
+11.280714,49.513033,online
+11.029123,49.408339,online
+11.060652,49.445747,online
+11.330210,49.198300,online
+11.072346,49.455030,online
+11.243985,49.495789,online
+11.060809,49.445722,online
+11.060536,49.444944,online
+11.954381,49.023804,online
+11.089671,49.466812,online
+11.036178,49.440252,online
+11.028857,49.442780,online
+11.088155,49.447751,online
+11.055030,49.448210,online
+9.987125,49.776748,unknown
+11.772979,49.866977,unknown
+11.092974,49.445546,online
+11.026438,49.575872,unknown
+10.324799,49.934743,unknown
+10.550256,49.997336,unknown
+10.990623,49.467674,unknown
+11.186944,49.780127,unknown
+10.963025,49.028871,unknown
+10.970535,49.595417,unknown
+10.033736,50.132503,unknown
+11.326928,49.610570,unknown
+10.078316,49.139407,unknown
+10.990064,49.544474,unknown
+11.248176,49.726602,unknown
+11.903171,50.309710,unknown
+10.048682,49.140620,unknown
+11.089810,49.466786,online
+11.326778,49.610537,unknown
+10.071169,49.134855,unknown
+11.059433,49.445555,online
+10.191877,49.907207,unknown
+11.267260,49.504478,online
+11.094657,49.461735,online
+11.017800,49.576788,unknown
+10.192802,49.909959,unknown
+11.089653,49.427901,online
+10.534915,50.121802,unknown
+11.026213,49.575909,unknown
+11.065285,49.427181,online
+10.223230,49.989780,unknown
+11.091519,49.713534,unknown
+11.309416,49.253316,online
+11.322812,50.239167,unknown
+10.568912,50.093722,unknown
+11.283251,49.513215,online
+10.528329,50.136930,unknown
+10.998162,49.463543,unknown
+10.976907,49.482190,unknown
+11.100011,49.463907,online
+11.319469,49.681528,unknown
+10.572866,50.091244,unknown
+10.788976,49.286827,unknown
+10.990711,49.467244,unknown
+10.989276,49.566912,unknown
+10.990716,49.467650,unknown
+10.990608,49.467540,unknown
+11.057449,49.462101,offline
+10.567589,50.094060,unknown
+10.892687,49.901887,unknown
+10.907294,49.906703,unknown
+9.193202,50.000939,unknown
+10.339680,49.378894,unknown
+9.995584,50.057466,unknown
+11.060126,49.445556,unknown
+11.065566,49.699955,unknown
+10.990083,49.469132,unknown
+11.025030,49.466839,unknown
+10.163241,49.802646,unknown
+10.981472,49.477669,unknown
+10.905282,49.907504,unknown
+9.942015,49.788808,unknown
+10.194905,49.905280,unknown
+10.968894,49.590113,unknown
+11.324643,49.218469,offline
+10.987932,49.478456,unknown
+9.934473,49.787581,unknown
+10.833539,49.904606,unknown
+10.073122,49.664114,unknown
+9.985239,49.778779,unknown
+11.082030,49.448728,online
+11.081778,49.448205,online
+10.472674,49.283344,unknown
+10.033698,50.132557,unknown
+10.523081,50.138232,unknown
+11.126017,49.604629,unknown
+10.522011,50.137372,unknown
+10.906055,49.903305,unknown
+10.882714,49.567824,unknown
+10.417507,49.501351,unknown
+11.319550,49.681526,unknown
+9.065781,50.053272,unknown
+9.979234,49.980904,unknown
+11.006825,49.563611,unknown
+10.905824,49.903251,unknown
+10.905996,49.903130,unknown
+10.990662,49.466925,unknown
+9.252983,49.708099,unknown
+11.001973,49.599761,unknown
+11.004154,51.421650,unknown
+11.396552,49.499896,online
+11.088357,49.424753,online
+11.095472,49.457008,online
+11.242506,49.500826,online
+11.244049,49.495666,online
+11.414677,49.449127,online
+11.006354,49.589782,unknown
+11.086825,49.459502,online
+11.309635,49.253179,online
+11.017263,49.424453,online
+11.119873,49.481018,online
+11.107699,49.459041,online
+11.056001,49.447751,online
+11.120265,49.480781,online
+11.074909,49.455831,online
+11.073844,49.455992,online
+9.933486,49.789724,unknown
+9.911240,49.793022,unknown
+9.911216,49.793065,unknown
+11.092141,49.442505,unknown
+11.094171,50.289788,unknown
+11.006825,49.589743,unknown
+11.006780,49.589737,unknown
+11.069930,49.466918,offline
+11.003676,49.607975,unknown
+11.245409,49.496466,offline
+11.245785,49.496359,offline
+11.246137,49.496275,offline
+11.246003,49.496502,offline
+9.063665,50.000543,unknown
+11.318294,49.525776,online
+10.981525,49.477825,unknown
+11.030854,49.545464,unknown
+11.071236,49.467547,online
+11.076404,49.456716,online
+11.861527,49.446168,online
+11.156668,49.461521,online
+11.079649,49.454784,online
+11.041390,49.328435,online
+11.293773,49.459348,online
+11.347251,49.562151,online
+11.186968,49.780215,unknown
+12.875285,47.726267,offline
+11.155168,49.526174,online
+11.053641,49.458285,online
+11.347238,49.560466,online
+11.086712,49.459419,online
+11.002459,49.458602,unknown
+11.080995,49.441029,offline
+10.961185,49.599378,unknown
+10.835110,49.904612,unknown
+10.968597,49.436239,unknown
+11.354212,49.386132,online
+11.033664,49.456434,online
+11.033453,49.456213,online
+11.052335,49.450259,online
+11.283375,49.513155,online
+11.054913,49.451880,online
+11.118827,49.435124,online
+11.133547,49.426473,online
+11.053242,49.450239,online
+11.118731,49.435057,online
+11.354153,49.386207,online
+11.082298,49.448933,online
+11.055853,49.446215,online
+11.097184,49.454971,online
+11.037435,49.385283,online
diff --git a/map/mkcsv.py b/map/mkcsv.py
index a5faefb..c5ef5a3 100755
--- a/map/mkcsv.py
+++ b/map/mkcsv.py
@@ -8,34 +8,22 @@ routers = db.routers
with open("csv/routers.csv", "w") as csv:
csv.write("lng,lat,status\n")
- for router in routers.find({
- "position.lat": {"$exists": True},
- "position.lng": {"$exists": True}}):
+ for router in routers.find({"position.coordinates": {"$exists": True}}):
csv.write("%f,%f,%s\n" % (
- router["position"]["lng"],
- router["position"]["lat"],
+ router["position"]["coordinates"][0],
+ router["position"]["coordinates"][1],
router.get("status", "unknown")
))
with open("csv/links.csv", "w") as csv:
csv.write("WKT,quality\n")
- for router in routers.find({
- "position.lat": {"$exists": True},
- "position.lng": {"$exists": True},
- "neighbours": {"$exists": True}}):
+ for router in routers.find({"position.coordinates": {"$exists": True}, "neighbours": {"$exists": True}}):
for neighbour in router["neighbours"]:
- if not "_id" in neighbour:
- continue
- neighbour_router = routers.find_one({
- "_id": neighbour["_id"],
- "position.lat": {"$exists": True},
- "position.lng": {"$exists": True}
- })
- if neighbour_router:
+ if "position" in neighbour:
csv.write("\"LINESTRING (%f %f,%f %f)\",%i\n" % (
- router["position"]["lng"],
- router["position"]["lat"],
- neighbour_router["position"]["lng"],
- neighbour_router["position"]["lat"],
+ router["position"]["coordinates"][0],
+ router["position"]["coordinates"][1],
+ neighbour["position"]["coordinates"][0],
+ neighbour["position"]["coordinates"][1],
neighbour["quality"]
))
diff --git a/map/static/map.html b/map/static/map.html
index 67d6c40..092132a 100644
--- a/map/static/map.html
+++ b/map/static/map.html
@@ -14,4 +14,23 @@ var routers = new L.TileLayer('http://localhost:8001/{z}/{x}/{y}.png', {maxNativ
layersControl = new L.Control.Layers({}, {"links": links, "routers": routers});
map.addControl(layersControl);
//var marker = L.marker([49.47502, 10.99253]).addTo(map);
+
+map.on('click', function(e) {
+ console.log(e.latlng);
+ console.log(map.getZoom());
+ // height = width of world in px
+ size_of_world_in_px = map.options.crs.scale(map.getZoom());
+ deg_lng_per_pix = 360 / size_of_world_in_px;
+ deg_lat_per_pix = 180 / size_of_world_in_px;
+ /*
+ db.routers.create_index([("location", "2dsphere")])
+ 49,11
+ 50,12
+ -> difference 1,1
+ -> in pix at zoom level 0 1.4,0.7
+ -> pythagoras -> distance in px
+ */
+});
+
+