Commit 53b36e8a authored by Joseph Siddons's avatar Joseph Siddons
Browse files

test(kdtree): Test neighbours over pole

parent 85e6d8af
import unittest import unittest
import random
from numpy import min, argmin from numpy import min, argmin
from GeoSpatialTools import haversine, KDTree, Record from GeoSpatialTools import haversine, KDTree, Record
...@@ -91,12 +93,39 @@ class TestKDTree(unittest.TestCase): ...@@ -91,12 +93,39 @@ class TestKDTree(unittest.TestCase):
def test_wrap(self): def test_wrap(self):
# TEST: Accounts for wrap at -180, 180 # TEST: Accounts for wrap at -180, 180
kt = KDTree(self.records) kt = KDTree(self.records)
kt.insert(Record(-160, -64, uid="G")) bad_rec = Record(-160, -64, uid="G")
kt.insert(bad_rec)
query_rec = Record(-178, -79, uid="E") query_rec = Record(-178, -79, uid="E")
r, _ = kt.query(query_rec) r, _ = kt.query(query_rec)
assert len(r) == 1 assert len(r) == 1
assert r[0].uid == "C" assert r[0].uid == "C"
def test_near_pole_query(self):
test_records = [
Record(-180, 89.5, uid="1"),
Record(-90, 89.9, uid="2"),
Record(0, 89.5, uid="3"),
]
N_others = 50
test_records.extend(
[
Record(
random.choice(range(-180, 180)),
random.choice(range(80, 90)),
)
for _ in range(N_others)
]
)
kt = KDTree(test_records, max_depth=3)
query_rec = Record(90, 89.8, uid="4")
r, d = kt.query(query_rec)
assert len(r) == 1
print(r[0])
print(d)
assert r[0].uid == "2"
if __name__ == "__main__": if __name__ == "__main__":
unittest.main() unittest.main()
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment