]> www.average.org Git - loctrkd.git/blobdiff - loctrkd/opencellid.py
opencellid: raise exception on the lack of data
[loctrkd.git] / loctrkd / opencellid.py
index 4d0edcebed8c2fa2331774815a1aa3d4069df165..20fd3ae1a2fc91723a2c5c211e5ad9971307a3c9 100644 (file)
@@ -42,37 +42,13 @@ def lookup(
         (mcc,),
     )
     data = list(lc.fetchall())
+    # lc.execute("drop table mem.seen")
+    lc.execute("""detach database mem""")
+    lc.close()
     if not data:
-        return 0.0, 0.0
+        raise ValueError("No location data found in opencellid")
     sumsig = sum([1 / sig for _, _, sig in data])
     nsigs = [1 / sig / sumsig for _, _, sig in data]
     avlat = sum([lat * nsig for (lat, _, _), nsig in zip(data, nsigs)])
     avlon = sum([lon * nsig for (_, lon, _), nsig in zip(data, nsigs)])
-    # lc.execute("drop table mem.seen")
-    lc.execute("""detach database mem""")
-    lc.close()
     return avlat, avlon
-
-
-if __name__.endswith("__main__"):
-    from datetime import datetime, timezone
-    import sys
-    from .zx303proto import *
-    from .zx303proto import WIFI_POSITIONING, WIFI_OFFLINE_POSITIONING
-
-    db = connect(sys.argv[1])
-    c = db.cursor()
-    c.execute(
-        """select tstamp, packet from events
-            where proto in (?, ?)""",
-        (proto_name(WIFI_POSITIONING), proto_name(WIFI_OFFLINE_POSITIONING)),
-    )
-    init({"opencellid": {"dbfn": sys.argv[2]}})
-    for timestamp, packet in c:
-        obj = parse_message(packet)
-        avlat, avlon = lookup(obj.mcc, obj.mnc, obj.gsm_cells, obj.wifi_aps)
-        print(
-            "{} {:+#010.8g},{:+#010.8g}".format(
-                datetime.fromtimestamp(timestamp), avlat, avlon
-            )
-        )