add stable importer and crawler

This commit is contained in:
Dominik Heidler 2015-09-03 00:13:52 +02:00
parent 328b74a48d
commit 699c00d6a7
8 changed files with 1399 additions and 896 deletions

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
__pycache__

124
db/crawl.py Executable file
View File

@ -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 "<TITLE>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

85
db/hoods.py Normal file
View File

@ -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

82
db/import_from_netmon.py Executable file
View File

@ -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("<b>%s</b>" % 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)

View File

@ -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

1 WKT quality
2 LINESTRING (11.102066 49.462707,11.102089 49.462664) LINESTRING (11.101549 49.462832,11.101679 49.462870) 223 203
3 LINESTRING (11.102066 49.462707,11.101679 49.462870) LINESTRING (11.101679 49.462870,11.102089 49.462664) 220 214
4 LINESTRING (11.102089 49.462664,11.101679 49.462870) LINESTRING (11.101679 49.462870,11.102066 49.462707) 211 201
5 LINESTRING (11.102170 49.462784,11.102066 49.462707) LINESTRING (11.101679 49.462870,11.101549 49.462832) 145 230
6 LINESTRING (11.081888 49.448674,11.082030 49.448728) LINESTRING (11.101679 49.462870,11.102170 49.462784) 210 132
7 LINESTRING (11.101679 49.462870,11.102089 49.462664) LINESTRING (11.102089 49.462664,11.102066 49.462707) 210 200
8 LINESTRING (11.235317 49.251154,11.235197 49.251260) LINESTRING (11.102089 49.462664,11.101549 49.462832) 226 185
9 LINESTRING (11.240652 49.493332,11.240508 49.493497) LINESTRING (11.102089 49.462664,11.101679 49.462870) 217 169
10 LINESTRING (11.240652 49.493332,11.240508 49.493497) LINESTRING (11.102089 49.462664,11.102170 49.462784) 254 124
11 LINESTRING (11.243831 49.495752,11.243985 49.495789) LINESTRING (11.102066 49.462707,11.102089 49.462664) 247 230
12 LINESTRING (11.243831 49.495752,11.244049 49.495666) LINESTRING (11.102066 49.462707,11.101679 49.462870) 220 222
13 LINESTRING (11.326239 49.198173,11.326828 49.198261) LINESTRING (11.064539 49.462205,11.064409 49.462178) 206 231
14 LINESTRING (11.326239 49.198173,11.326797 49.198226) LINESTRING (11.054971 49.448058,11.055030 49.448210) 244 255
15 LINESTRING (11.326239 49.198173,11.327320 49.198487) LINESTRING (11.054971 49.448058,11.055207 49.448157) 233 166
16 LINESTRING (11.056065 49.446113,11.055854 49.446147) LINESTRING (11.054971 49.448058,11.055030 49.448210) 120 49
17 LINESTRING (11.243985 49.495789,11.244049 49.495666) LINESTRING (11.064409 49.462178,11.064539 49.462205) 255
18 LINESTRING (11.243985 49.495789,11.243831 49.495752) LINESTRING (11.929778 49.547877,11.929843 49.547945) 255 245
19 LINESTRING (11.243985 49.495789,11.243966 49.495742) LINESTRING (11.929778 49.547877,11.929843 49.547945) 251 255
20 LINESTRING (11.354212 49.386132,11.354153 49.386207) LINESTRING (11.929778 49.547877,11.929869 49.547872) 255 253
21 LINESTRING (11.059433 49.445555,11.059507 49.445610) LINESTRING (11.060746 49.445249,11.060809 49.445722) 177 243
22 LINESTRING (11.350556 49.390745,11.350607 49.390785) LINESTRING (11.060746 49.445249,11.060834 49.445703) 247 249
23 LINESTRING (11.327199 49.198747,11.327210 49.198556) LINESTRING (11.309401 49.253167,11.309507 49.253117) 243 250
24 LINESTRING (11.075651 49.455823,11.075663 49.455889) LINESTRING (11.034003 49.457036,11.053242 49.450239) 167 255
25 LINESTRING (11.118731 49.435057,11.118684 49.435194) LINESTRING (11.053155 49.450302,11.053088 49.450201) 217 203
26 LINESTRING (11.118731 49.435057,11.118827 49.435124) LINESTRING (11.053155 49.450302,11.053244 49.450160) 255 180
27 LINESTRING (11.118731 49.435057,11.118827 49.435124) LINESTRING (11.053155 49.450302,11.053088 49.450201) 255
28 LINESTRING (11.118827 49.435124,11.118731 49.435057) LINESTRING (11.053155 49.450302,11.053244 49.450160) 252
29 LINESTRING (11.118827 49.435124,11.118731 49.435057) LINESTRING (11.053155 49.450302,11.053242 49.450239) 242 255
30 LINESTRING (11.326797 49.198226,11.326828 49.198261) LINESTRING (11.053088 49.450201,11.052335 49.450259) 191 230
31 LINESTRING (11.326797 49.198226,11.326239 49.198173) LINESTRING (11.053088 49.450201,11.053155 49.450302) 234 255
32 LINESTRING (11.283251 49.513215,11.283545 49.513014) LINESTRING (11.053088 49.450201,11.053155 49.450302) 115 219
33 LINESTRING (11.283251 49.513215,11.283375 49.513155) LINESTRING (11.053088 49.450201,11.053244 49.450160) 30 183
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
34 LINESTRING (11.053088 49.450201,11.053244 49.450160) 255
35 LINESTRING (11.055833 49.446180,11.053244 49.450160) LINESTRING (11.053088 49.450201,11.053242 49.450239) 122 255
36 LINESTRING (11.929843 49.547945,11.929869 49.547872) 255
37 LINESTRING (11.929843 49.547945,11.929778 49.547877) 247
38 LINESTRING (11.929843 49.547945,11.929869 49.547872) 251
39 LINESTRING (11.929843 49.547945,11.929778 49.547877) 255
40 LINESTRING (11.133719 49.426322,11.133572 49.426172) 237
41 LINESTRING (11.133719 49.426322,11.133547 49.426473) 247
42 LINESTRING (11.133719 49.426322,11.133227 49.426560) 250
43 LINESTRING (11.133719 49.426322,11.133471 49.426658) 231
44 LINESTRING (11.133719 49.426322,11.133790 49.426145) 255
45 LINESTRING (11.133719 49.426322,11.133987 49.426336) 239
46 LINESTRING (11.240508 49.493497,11.240652 49.493332) 255
47 LINESTRING (11.133987 49.426336,11.133719 49.426322) 242
48 LINESTRING (11.133987 49.426336,11.133572 49.426172) 241
49 LINESTRING (11.133987 49.426336,11.133547 49.426473) 251
50 LINESTRING (11.133987 49.426336,11.133227 49.426560) 228
51 LINESTRING (11.133987 49.426336,11.133790 49.426145) 255
52 LINESTRING (11.029045 49.408248,11.029123 49.408339) 251
53 LINESTRING (11.243966 49.495742,11.243985 49.495789) 194
54 LINESTRING (11.243966 49.495742,11.244049 49.495666) 229
55 LINESTRING (11.133790 49.426145,11.133719 49.426322) 223
56 LINESTRING (11.133790 49.426145,11.133572 49.426172) 251
57 LINESTRING (11.133790 49.426145,11.133547 49.426473) 221
58 LINESTRING (11.133790 49.426145,11.133987 49.426336) 240
59 LINESTRING (11.100321 49.463890,11.100011 49.463907) 255
60 LINESTRING (11.242560 49.500782,11.242362 49.500843) 236
61 LINESTRING (11.242560 49.500782,11.242584 49.500867) 238
62 LINESTRING (11.242560 49.500782,11.242506 49.500826) 229
63 LINESTRING (11.267096 49.504519,11.267260 49.504478) 254
64 LINESTRING (11.133471 49.426658,11.133547 49.426473) 247
65 LINESTRING (11.133471 49.426658,11.133227 49.426560) 255
66 LINESTRING (11.326797 49.198226,11.327049 49.198374) 233
67 LINESTRING (11.326797 49.198226,11.326828 49.198261) 230
68 LINESTRING (11.326797 49.198226,11.326239 49.198173) 250
69 LINESTRING (11.353858 49.385904,11.354212 49.386132) 186
70 LINESTRING (11.082520 49.441461,11.082675 49.441323) 167
71 LINESTRING (11.082520 49.441461,11.082450 49.441592) 230
72 LINESTRING (11.097160 49.454873,11.097184 49.454971) 255
73 LINESTRING (11.082675 49.441323,11.082598 49.441201) 217
74 LINESTRING (11.082675 49.441323,11.082520 49.441461) 151
75 LINESTRING (11.133572 49.426172,11.133790 49.426145) 255
76 LINESTRING (11.133572 49.426172,11.133987 49.426336) 219
77 LINESTRING (11.055854 49.446147,11.056065 49.446113) 186
78 LINESTRING (11.055854 49.446147,11.055833 49.446180) 255
79 LINESTRING (11.055854 49.446147,11.055931 49.446185) 255
80 LINESTRING (11.055854 49.446147,11.055853 49.446215) 255
81 LINESTRING (11.055854 49.446147,11.055853 49.446215) 250
82 LINESTRING (11.242584 49.500867,11.242362 49.500843) 250
83 LINESTRING (11.242584 49.500867,11.242560 49.500782) 246
84 LINESTRING (11.242584 49.500867,11.242506 49.500826) 238
85 LINESTRING (11.099227 49.484852,11.099139 49.484793) 255
86 LINESTRING (11.929869 49.547872,11.929843 49.547945) 251
87 LINESTRING (11.929869 49.547872,11.929843 49.547945) 255
88 LINESTRING (11.929869 49.547872,11.929778 49.547877) 251
89 LINESTRING (11.929869 49.547872,11.929778 49.547877) 231
90 LINESTRING (11.133227 49.426560,11.133719 49.426322) 222
91 LINESTRING (11.133227 49.426560,11.133547 49.426473) 236
92 LINESTRING (11.133227 49.426560,11.133471 49.426658) 255
93 LINESTRING (11.133227 49.426560,11.133987 49.426336) 225
94 LINESTRING (11.082450 49.441592,11.082520 49.441461) 226
95 LINESTRING (11.099139 49.484793,11.099227 49.484852) 250
96 LINESTRING (11.235197 49.251260,11.235317 49.251154) 240
97 LINESTRING (11.326239 49.198173,11.326828 49.198261) 225
98 LINESTRING (11.326239 49.198173,11.326797 49.198226) 234
99 LINESTRING (11.326239 49.198173,11.327210 49.198556) 228
100 LINESTRING (11.326239 49.198173,11.327320 49.198487) 202
101 LINESTRING (11.056065 49.446113,11.055833 49.446180) 6
102 LINESTRING (11.056065 49.446113,11.055854 49.446147) 111
103 LINESTRING (11.235317 49.251154,11.235197 49.251260) 238
104 LINESTRING (11.068350 49.457076,11.068540 49.457040) 255
105 LINESTRING (11.068350 49.457076,11.068540 49.457040) 110
106 LINESTRING (11.327320 49.198487,11.327199 49.198747) 236
107 LINESTRING (11.327320 49.198487,11.326239 49.198173) 245
108 LINESTRING (11.327320 49.198487,11.327210 49.198556) 255
109 LINESTRING (11.327320 49.198487,11.327564 49.198490) 238
110 LINESTRING (11.350607 49.390785,11.350556 49.390745) 255
111 LINESTRING (11.055931 49.446185,11.068540 49.457040) 255
112 LINESTRING (11.055931 49.446185,11.055833 49.446180) 255
113 LINESTRING (11.055931 49.446185,11.055853 49.446215) 255
114 LINESTRING (11.055931 49.446185,11.055854 49.446147) 255
115 LINESTRING (11.055931 49.446185,11.053242 49.450239) 152
116 LINESTRING (11.309507 49.253117,11.309635 49.253179) 246
117 LINESTRING (11.309507 49.253117,11.309401 49.253167) 243
118 LINESTRING (11.240652 49.493332,11.240508 49.493497) 218
119 LINESTRING (11.240652 49.493332,11.240508 49.493497) 255
120 LINESTRING (11.118684 49.435194,11.118731 49.435057) 242
121 LINESTRING (11.118684 49.435194,11.118827 49.435124) 246
122 LINESTRING (11.327199 49.198747,11.326239 49.198173) 173
123 LINESTRING (11.327199 49.198747,11.327210 49.198556) 230
124 LINESTRING (11.060577 49.445724,11.060809 49.445722) 232
125 LINESTRING (11.060577 49.445724,11.060834 49.445703) 255
126 LINESTRING (11.060577 49.445724,11.060652 49.445747) 255
127 LINESTRING (11.060577 49.445724,11.053242 49.450239) 246
128 LINESTRING (11.060577 49.445724,11.060834 49.445703) 195
129 LINESTRING (11.055833 49.446180,11.053244 49.450160) 123
130 LINESTRING (11.055833 49.446180,11.055931 49.446185) 255
131 LINESTRING (11.055833 49.446180,11.055853 49.446215) 251
132 LINESTRING (11.055833 49.446180,11.055030 49.448210) 160
133 LINESTRING (11.055833 49.446180,11.055854 49.446147) 255
134 LINESTRING (11.060834 49.445703,11.060577 49.445724) LINESTRING (11.055833 49.446180,11.055853 49.446215) 124 88
135 LINESTRING (11.060834 49.445703,11.060577 49.445724) LINESTRING (11.060834 49.445703,11.060809 49.445722) 140 200
136 LINESTRING (11.033453 49.456213,11.033664 49.456434) LINESTRING (11.060834 49.445703,11.060577 49.445724) 188 152
137 LINESTRING (11.309507 49.253117,11.309635 49.253179) LINESTRING (11.060834 49.445703,11.053242 49.450239) 243 254
138 LINESTRING (11.242560 49.500782,11.242506 49.500826) LINESTRING (11.060834 49.445703,11.060577 49.445724) 246 255
139 LINESTRING (11.243966 49.495742,11.243985 49.495789) LINESTRING (11.081578 49.448094,11.081778 49.448205) 199 217
140 LINESTRING (11.243966 49.495742,11.244049 49.495666) LINESTRING (11.055207 49.448157,11.054971 49.448058) 212 220
141 LINESTRING (11.242362 49.500843,11.242560 49.500782) LINESTRING (11.326828 49.198261,11.327049 49.198374) 235 250
142 LINESTRING (11.242362 49.500843,11.242506 49.500826) LINESTRING (11.326828 49.198261,11.326797 49.198226) 247 251
143 LINESTRING (11.060809 49.445722,11.060834 49.445703) LINESTRING (11.326828 49.198261,11.326239 49.198173) 151 255
144 LINESTRING (11.075663 49.455889,11.075651 49.455823) LINESTRING (11.326828 49.198261,11.327210 49.198556) 97 211
145 LINESTRING (11.242584 49.500867,11.242362 49.500843) LINESTRING (11.242362 49.500843,11.242560 49.500782) 255 241
146 LINESTRING (11.242584 49.500867,11.242560 49.500782) LINESTRING (11.242362 49.500843,11.242584 49.500867) 232 223
147 LINESTRING (11.242584 49.500867,11.242506 49.500826) LINESTRING (11.242362 49.500843,11.242506 49.500826) 253 246
148 LINESTRING (11.929869 49.547872,11.929843 49.547945) LINESTRING (11.072188 49.455098,11.072346 49.455030) 247 223
149 LINESTRING (11.929869 49.547872,11.929843 49.547945) LINESTRING (11.059507 49.445610,11.060577 49.445724) 216 44
150 LINESTRING (11.929869 49.547872,11.929778 49.547877) LINESTRING (11.059507 49.445610,11.059433 49.445555) 245 235
151 LINESTRING (11.929869 49.547872,11.929778 49.547877) LINESTRING (11.075663 49.455889,11.075651 49.455823) 223 182
152 LINESTRING (11.235197 49.251260,11.235317 49.251154) LINESTRING (11.327049 49.198374,11.326828 49.198261) 253 246
153 LINESTRING (11.243831 49.495752,11.243985 49.495789) 251
154 LINESTRING (11.327210 49.198556,11.326828 49.198261) 205
155 LINESTRING (11.327210 49.198556,11.327199 49.198747) 239
156 LINESTRING (11.327210 49.198556,11.327564 49.198490) 231
157 LINESTRING (11.327210 49.198556,11.327320 49.198487) 247
158 LINESTRING (11.075651 49.455823,11.075663 49.455889) 202
159 LINESTRING (11.075651 49.455823,11.074909 49.455831) 149
160 LINESTRING (11.068540 49.457040,11.055931 49.446185) 255
161 LINESTRING (11.068540 49.457040,11.068350 49.457076) 255
162 LINESTRING (11.068540 49.457040,11.068350 49.457076) 163
163 LINESTRING (11.327564 49.198490,11.327210 49.198556) 242
164 LINESTRING (11.327564 49.198490,11.327320 49.198487) 243
165 LINESTRING (11.053244 49.450160,11.053088 49.450201) 205
166 LINESTRING (11.053244 49.450160,11.052335 49.450259) 245
167 LINESTRING (11.053244 49.450160,11.053155 49.450302) 254
168 LINESTRING (11.053244 49.450160,11.053155 49.450302) 190
169 LINESTRING (11.053244 49.450160,11.055833 49.446180) 155
170 LINESTRING (11.053244 49.450160,11.053088 49.450201) 255
171 LINESTRING (11.053244 49.450160,11.053242 49.450239) 255
172 LINESTRING (11.350556 49.390745,11.350607 49.390785) 255
173 LINESTRING (11.082598 49.441201,11.082675 49.441323) 210
174 LINESTRING (11.082150 49.448860,11.082298 49.448933) 203
175 LINESTRING (11.082150 49.448860,11.081778 49.448205) 255
176 LINESTRING (11.082150 49.448860,11.082030 49.448728) 255
177 LINESTRING (11.102170 49.462784,11.102066 49.462707) 169
178 LINESTRING (11.029123 49.408339,11.029045 49.408248) 234
179 LINESTRING (11.060652 49.445747,11.060809 49.445722) 228
180 LINESTRING (11.060652 49.445747,11.060577 49.445724) 201
181 LINESTRING (11.072346 49.455030,11.072188 49.455098) 236
182 LINESTRING (11.243985 49.495789,11.244049 49.495666) 250
183 LINESTRING (11.243985 49.495789,11.243831 49.495752) 250
184 LINESTRING (11.243985 49.495789,11.243966 49.495742) 204
185 LINESTRING (11.060809 49.445722,11.060577 49.445724) 176
186 LINESTRING (11.060809 49.445722,11.060746 49.445249) 173
187 LINESTRING (11.060809 49.445722,11.060652 49.445747) 185
188 LINESTRING (11.060809 49.445722,11.060834 49.445703) 202
189 LINESTRING (11.060536 49.444944,11.060834 49.445703) 34
190 LINESTRING (11.089671 49.466812,11.089810 49.466786) 242
191 LINESTRING (11.088155 49.447751,11.092974 49.445546) 210
192 LINESTRING (11.055030 49.448210,11.054971 49.448058) 255
193 LINESTRING (11.055030 49.448210,11.055833 49.446180) 114
194 LINESTRING (11.092974 49.445546,11.088155 49.447751) 198
195 LINESTRING (11.089810 49.466786,11.089671 49.466812) 250
196 LINESTRING (11.059433 49.445555,11.059507 49.445610) 229
197 LINESTRING (11.267260 49.504478,11.267096 49.504519) 234
198 LINESTRING (11.283251 49.513215,11.283375 49.513155) 143
199 LINESTRING (11.100011 49.463907,11.100321 49.463890) 251
200 LINESTRING (11.082030 49.448728,11.082150 49.448860) 251
201 LINESTRING (11.082030 49.448728,11.082298 49.448933) 196
202 LINESTRING (11.082030 49.448728,11.081778 49.448205) 255
203 LINESTRING (11.081778 49.448205,11.082150 49.448860) 251
204 LINESTRING (11.081778 49.448205,11.081578 49.448094) 238
205 LINESTRING (11.081778 49.448205,11.082030 49.448728) 251
206 LINESTRING (11.242506 49.500826,11.242362 49.500843) 247
207 LINESTRING (11.242506 49.500826,11.242560 49.500782) 250
208 LINESTRING (11.242506 49.500826,11.242584 49.500867) 249
209 LINESTRING (11.244049 49.495666,11.243985 49.495789) 253
210 LINESTRING (11.244049 49.495666,11.243831 49.495752) 255
211 LINESTRING (11.244049 49.495666,11.243966 49.495742) 238
212 LINESTRING (11.086825 49.459502,11.086712 49.459419) 226
213 LINESTRING (11.309635 49.253179,11.309507 49.253117) 213
214 LINESTRING (11.074909 49.455831,11.075651 49.455823) 157
215 LINESTRING (11.354212 49.386132,11.354153 49.386207) 254
216 LINESTRING (11.033453 49.456213,11.033664 49.456434) 191
217 LINESTRING (11.052335 49.450259,11.053088 49.450201) 144
218 LINESTRING (11.052335 49.450259,11.053244 49.450160) 146
219 LINESTRING (11.283375 49.513155,11.283251 49.513215) 173
220 LINESTRING (11.118827 49.435124,11.118731 49.435057) 255
221 LINESTRING (11.118827 49.435124,11.118684 49.435194) 235
222 LINESTRING (11.118827 49.435124,11.118731 49.435057) 242
223 LINESTRING (11.133547 49.426473,11.133719 49.426322) 246
224 LINESTRING (11.133547 49.426473,11.133227 49.426560) 255
225 LINESTRING (11.133547 49.426473,11.133471 49.426658) 255
226 LINESTRING (11.133547 49.426473,11.133790 49.426145) 236
227 LINESTRING (11.133547 49.426473,11.133987 49.426336) 255
228 LINESTRING (11.053242 49.450239,11.055931 49.446185) 242
229 LINESTRING (11.053242 49.450239,11.034003 49.457036) 255
230 LINESTRING (11.053242 49.450239,11.053155 49.450302) 255
231 LINESTRING (11.053242 49.450239,11.060834 49.445703) 242
232 LINESTRING (11.053242 49.450239,11.053088 49.450201) 255
233 LINESTRING (11.053242 49.450239,11.060577 49.445724) 243
234 LINESTRING (11.053242 49.450239,11.053244 49.450160) 255
235 LINESTRING (11.118731 49.435057,11.118684 49.435194) 247
236 LINESTRING (11.118731 49.435057,11.118827 49.435124) 255
237 LINESTRING (11.118731 49.435057,11.118827 49.435124) 255
238 LINESTRING (11.354153 49.386207,11.353858 49.385904) 226
239 LINESTRING (11.354153 49.386207,11.354212 49.386132) 255
240 LINESTRING (11.082298 49.448933,11.082150 49.448860) 233
241 LINESTRING (11.082298 49.448933,11.082030 49.448728) 219
242 LINESTRING (11.055853 49.446215,11.056065 49.446113) 156
243 LINESTRING (11.055853 49.446215,11.055833 49.446180) 51
244 LINESTRING (11.055853 49.446215,11.055833 49.446180) 255
245 LINESTRING (11.055853 49.446215,11.055931 49.446185) 255
246 LINESTRING (11.055853 49.446215,11.055854 49.446147) 251
247 LINESTRING (11.055853 49.446215,11.055854 49.446147) 251
248 LINESTRING (11.097184 49.454971,11.097160 49.454873) 231

File diff suppressed because it is too large Load Diff

View File

@ -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"]
))

View File

@ -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
*/
});
</script>