diff --git a/ffmap/db/hoods.py b/ffmap/db/hoods.py index 2cee495..d68ae4e 100755 --- a/ffmap/db/hoods.py +++ b/ffmap/db/hoods.py @@ -75,6 +75,43 @@ mysql.execute(""" ADD KEY `lng` (`lng`) """) +mysql.execute(""" + CREATE TABLE `polygons` ( + `id` int(10) UNSIGNED NOT NULL, + `polyid` int(10) UNSIGNED NOT NULL, + `lat` double NOT NULL, + `lon` double NOT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci +""") + +mysql.execute(""" + ALTER TABLE `polygons` + ADD PRIMARY KEY (`id`), + ADD KEY `polyid` (`polyid`) +""") + +mysql.execute(""" + ALTER TABLE `polygons` + MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT +""") + +mysql.execute(""" + CREATE TABLE `polyhoods` ( + `polyid` int(10) UNSIGNED NOT NULL, + `hoodid` int(10) UNSIGNED NOT NULL + ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci +""") + +mysql.execute(""" + ALTER TABLE `polyhoods` + ADD PRIMARY KEY (`polyid`) +""") + +mysql.execute(""" + ALTER TABLE `polyhoods` + MODIFY `polyid` int(10) UNSIGNED NOT NULL AUTO_INCREMENT +""") + mysql.commit() mysql.close() diff --git a/ffmap/hoodtools.py b/ffmap/hoodtools.py index 39ec91c..d46828b 100644 --- a/ffmap/hoodtools.py +++ b/ffmap/hoodtools.py @@ -41,6 +41,33 @@ def update_hoods_v2(mysql): except urllib.error.HTTPError as e: return +def update_hoods_poly(mysql): + try: + #with urllib.request.urlopen("http://keyserver.freifunk-franken.de/v2/hoods.php") as url: + with urllib.request.urlopen("https://lauch.org/keyxchange/hoods.php") as url: + hoodskx = json.loads(url.read().decode()) + + mysql.execute("DELETE FROM polygons",()) + mysql.execute("DELETE FROM polyhoods",()) + + for kx in hoodskx: + for polygon in kx.get("polygons",()): + mysql.execute(""" + INSERT INTO polyhoods (hoodid) + VALUES (%s) + """,(kx["id"],)) + newid = mysql.cursor().lastrowid + vertices = [] + for p in polygon: + vertices.append((newid,p["lat"],p["lon"],)) + mysql.executemany(""" + INSERT INTO polygons (polyid, lat, lon) + VALUES (%s, %s, %s) + """,vertices) + + except urllib.error.HTTPError as e: + return + def update_hoods_v1(mysql): try: with urllib.request.urlopen("http://keyserver.freifunk-franken.de/fff/hoods.php") as url: diff --git a/scripts/readpolyhoods.py b/scripts/readpolyhoods.py new file mode 100755 index 0000000..dbc3598 --- /dev/null +++ b/scripts/readpolyhoods.py @@ -0,0 +1,15 @@ +#!/usr/bin/python3 + +# Execute manually + +import os +import sys +sys.path.insert(0, os.path.abspath(os.path.dirname(__file__) + '/' + '..')) + +from ffmap.hoodtools import update_hoods_poly +from ffmap.mysqltools import FreifunkMySQL + +mysql = FreifunkMySQL() +update_hoods_poly(mysql) +mysql.commit() +mysql.close()