def test_equality(self): box = self._callFUT() self.assertEqual(msk.BBox(420000, 30000, 900000, 510000), box) self.assertNotEqual(msk.BBox(420001, 30000, 900000, 510000), box) self.assertNotEqual(msk.BBox(420000, 30001, 900000, 510000), box) self.assertNotEqual(msk.BBox(420000, 30000, 900001, 510000), box) self.assertNotEqual(msk.BBox(420000, 30000, 900000, 510001), box)
def test_createQuads(self): box = self._callFUT() box = box.create_quads() self.assertEqual(msk.BBox(420000, 270000, 660000, 510000), box[0]) self.assertEqual(msk.BBox(660000, 270000, 900000, 510000), box[1]) self.assertEqual(msk.BBox(420000, 30000, 660000, 270000), box[2]) self.assertEqual(msk.BBox(660000, 30000, 900000, 270000), box[3])
def test_get_intersection(self): box1 = self._callFUT() box2 = msk.BBox(920000, 30000, 950000, 510000) result = msk.BBox.getIntersection(box1, box2) self.assertEqual(result, box2) box3 = msk.BBox(2000, 6000, 950000, 520000) result2 = msk.BBox.getIntersection(box1, box3) self.assertEqual(result2, box3)
def randBBox(self): box = msk.BBox(420000, 30000, 900000, 510000) f = 2000 x = [random.random() * box.width(), random.random() * box.width() / f] y = [random.random() * box.height(), random.random() * box.height() / f] return msk.BBox(box.minx + x[0], box.miny + y[0], box.minx + sum(x), box.miny + sum(y))
def __init__(self, request): super(Search, self).__init__(request) self.mapName = request.matchdict.get('map') self.hasMap(request.db, self.mapName) self.lang = request.lang self.searchLang = request.params.get('searchLang') self.cbName = request.params.get('callback') # Order matters define srid first self.srid = request.params.get('sr', str(self.DEFAULT_SRID)) self.bbox = request.params.get('bbox') self.sortbbox = request.params.get('sortbbox', 'true').lower() == 'true' self.returnGeometry = request.params.get('returnGeometry', 'true').lower() == 'true' self.quadindex = None self.origins = request.params.get('origins') self.featureIndexes = request.params.get('features') self.timeInstant = request.params.get('timeInstant') self.timeEnabled = request.params.get('timeEnabled') self.timeStamps = request.params.get('timeStamps') self.typeInfo = request.params.get('type') self.limit = request.params.get('limit') self.geodataStaging = request.registry.settings['geodata_staging'] self.results = {'results': []} self.request = request morton_box = [420000, 30000, 900000, 510000] self.quadtree = msk.QuadTree(msk.BBox(*morton_box), 20) self.sphinx = sphinxapi.SphinxClient() self.sphinx.SetServer(request.registry.settings['sphinxhost'], 9312) self.sphinx.SetMatchMode(sphinxapi.SPH_MATCH_EXTENDED)
def __init__(self, request): super(Search, self).__init__() self.quadtree = msk.QuadTree( msk.BBox(420000, 30000, 900000, 510000), 20) self.sphinx = sphinxapi.SphinxClient() self.sphinx.SetServer(request.registry.settings['sphinxhost'], 9312) self.sphinx.SetMatchMode(sphinxapi.SPH_MATCH_EXTENDED) self.mapName = request.matchdict.get('map') self.hasMap(request.db, self.mapName) self.lang = request.lang self.cbName = request.params.get('callback') self.bbox = request.params.get('bbox') self.returnGeometry = request.params.get('returnGeometry', 'true').lower() == 'true' self.quadindex = None self.origins = request.params.get('origins') self.featureIndexes = request.params.get('features') self.timeInstant = request.params.get('timeInstant') self.timeEnabled = request.params.get('timeEnabled') self.timeStamps = request.params.get('timeStamps') self.typeInfo = request.params.get('type') self.limit = request.params.get('limit') self.varnish_authorized = request.headers.get('X-SearchServer-Authorized', 'false').lower() == 'true' self.geodataStaging = request.registry.settings['geodata_staging'] self.results = {'results': []} self.request = request
def test_points_to_morton_zero_levels(self): box = msk.BBox(420000, 30000, 900000, 510000) quadtree = msk.QuadTree(box, 0) result = quadtree.points_to_morton( [msk.Point(420000, 30000), msk.Point(900000, 510000)]) self.assertEqual(result, '0')
def _test_compare_with_bbox(self, bbox): quadtree = self._callFUT() box = msk.BBox(420000, 30000, 900000, 510000) ref = quadtree._single_points_all(bbox) self.assertEqual(ref, quadtree._single_points_dia1(bbox)) self.assertEqual(ref, quadtree._single_points_dia2(bbox)) self.assertEqual(ref, quadtree._multi_points_all(bbox)) self.assertEqual(ref, quadtree._multi_points_dia1(bbox)) self.assertEqual(ref, quadtree._multi_points_dia2(bbox))
def _get_quad_index(self): try: quadindex = self.quadtree\ .bbox_to_morton( msk.BBox(self.bbox[0], self.bbox[1], self.bbox[2], self.bbox[3])) self.quadindex = quadindex if quadindex != '' else None except ValueError: # pragma: no cover self.quadindex = None
def tests_algo_random(self): self._test_compare_with_bbox(msk.BBox(380000, 30000, 390000, 35000)) self._test_compare_with_bbox(msk.BBox(420000.1, 30000.1, 899999.9, 509999.9)) self._test_compare_with_bbox(msk.BBox(659999.9, 269999.9, 660000.1, 270000.1)) self._test_compare_with_bbox(msk.BBox(420000, 30000, 420000.1, 30000.1)) self._test_compare_with_bbox(msk.BBox(420000, 30000, 420000.9, 30000.9)) self._test_compare_with_bbox(msk.BBox(660000.1, 30000.1, 899999.9, 269999.9)) self._test_compare_with_bbox(msk.BBox(660000.1, 30000.1, 899999.1, 269999.1)) map(lambda x: self._test_compare_with_bbox(self.randBBox()), range(20))
def test_single_points_all(self): quadtree = self._callFUT() bbox = msk.BBox(380000, 30000, 390000, 35000) self.assertEqual('', quadtree._single_points_all(bbox)) bbox = msk.BBox(420000.1, 30000.1, 899999.9, 509999.9) self.assertEqual('0', quadtree._single_points_all(bbox)) # that's the worst case...smalles bbox but biggest result bbox = msk.BBox(659999.9, 269999.9, 660000.1, 270000.1) self.assertEqual('0', quadtree._single_points_all(bbox)) bbox = msk.BBox(420000, 30000, 420000.1, 30000.1) self.assertEqual('022222222222222222222', quadtree._single_points_all(bbox)) bbox = msk.BBox(420000, 30000, 420000.9, 30000.9) self.assertEqual('02222222222222222222', quadtree._single_points_all(bbox)) bbox = msk.BBox(660000.1, 30000.1, 899999.9, 269999.9) self.assertEqual('03', quadtree._single_points_all(bbox)) bbox = msk.BBox(660000.1, 30000.1, 899999.1, 269999.1) self.assertEqual('03', quadtree._single_points_all(bbox))
def _callFUT(self): box = msk.BBox(420000, 30000, 900000, 510000) return box
def _callFUT(self): box = msk.BBox(420000, 30000, 900000, 510000) quadtree = msk.QuadTree(box, 20) return quadtree
def test_no_equality(self): box1 = self._callFUT() box2 = msk.BBox(920000, 40000, 950000, 520000) result = msk.BBox.__eq__(box1, box2) self.assertEqual(result, False)