Ejemplo n.º 1
0
 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)
Ejemplo n.º 2
0
 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])
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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))
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
    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
Ejemplo n.º 7
0
 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')
Ejemplo n.º 8
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))
Ejemplo n.º 9
0
 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
Ejemplo n.º 10
0
    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))
Ejemplo n.º 11
0
 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))
Ejemplo n.º 12
0
 def _callFUT(self):
     box = msk.BBox(420000, 30000, 900000, 510000)
     return box
Ejemplo n.º 13
0
 def _callFUT(self):
     box = msk.BBox(420000, 30000, 900000, 510000)
     quadtree = msk.QuadTree(box, 20)
     return quadtree
Ejemplo n.º 14
0
 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)