maptools: Treat case of multiple neighbor interfaces correctly

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
This commit is contained in:
Adrian Schmutzler 2018-04-29 15:32:23 +02:00
parent f6e9aec960
commit 3034fd9e2c
1 changed files with 5 additions and 2 deletions

View File

@ -95,7 +95,7 @@ def update_mapnik_csv(mysql):
csv.write(rv2)
dblinks = mysql.fetchall("""
SELECT r1.id AS rid, r2.id AS nid, r1.lat AS rlat, r1.lng AS rlng, r2.lat AS nlat, r2.lng AS nlng, n.type AS type, MAX(quality) AS quality, hoods.name AS hood
SELECT r1.id AS rid, r2.id AS nid, r1.lat AS rlat, r1.lng AS rlng, r2.lat AS nlat, r2.lng AS nlng, n.netif AS netif, n.type AS type, MAX(quality) AS quality, hoods.name AS hood
FROM router AS r1
LEFT JOIN hoods ON r1.hood = hoods.name
INNER JOIN router_neighbor AS n ON r1.id = n.router
@ -105,7 +105,7 @@ def update_mapnik_csv(mysql):
INNER JOIN router AS r2 ON net.router = r2.id
WHERE r1.lat IS NOT NULL AND r1.lng IS NOT NULL AND r2.lat IS NOT NULL AND r2.lng IS NOT NULL
AND r1.status = 'online'
GROUP BY r1.id, r1.lat, r1.lng, r2.id, r2.lat, r2.lng, n.type, hoods.name
GROUP BY r1.id, r1.lat, r1.lng, r2.id, r2.lat, r2.lng, n.netif, n.type, hoods.name
""")
links = []
linksl3 = []
@ -139,6 +139,9 @@ def update_mapnik_csv(mysql):
if row["nid"] in dictl2.keys() and row["rid"] in dictl2[row["nid"]].keys():
row["quality"] = int(0.5 * (dictl2[row["nid"]][row["rid"]]["data"][4] + row["quality"]))
del dictl2[row["nid"]][row["rid"]] # Delete old entry, as we create a new one with averaged quality
if row["rid"] in dictl2.keys() and row["nid"] in dictl2[row["rid"]].keys():
row["quality"] = int(0.5 * (dictl2[row["rid"]][row["nid"]]["data"][4] + row["quality"]))
# No need to delete, since we overwrite later
# Write current set to dict
if not row["rid"] in dictl2.keys():
dictl2[row["rid"]] = {}