def test_within_filter_with_epsg(self): from papyrus.protocol import create_geom_filter from shapely import wkb, wkt request = testing.DummyRequest(params={ "lon": "40", "lat": "5", "tolerance": "1", "epsg": "900913" }) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual( filter_str, '(ST_Expand(GeomFromWKB(%(GeomFromWKB_1)s, %(GeomFromWKB_2)s), %(ST_Expand_1)s) && ST_Transform("table".geom, %(param_1)s)) AND (ST_Expand(ST_Transform("table".geom, %(param_2)s), %(ST_Expand_2)s) && GeomFromWKB(%(GeomFromWKB_3)s, %(GeomFromWKB_4)s)) AND ST_Distance(ST_Transform("table".geom, %(param_3)s), GeomFromWKB(%(GeomFromWKB_5)s, %(GeomFromWKB_6)s)) <= %(ST_Distance_1)s' ) self.assertTrue( wkb.loads(str(params["GeomFromWKB_1"])).equals( wkt.loads('POINT (40 5)'))) self.assertEqual(params["GeomFromWKB_2"], 900913) self.assertEqual(params["ST_Expand_1"], 1) self.assertEqual(params["param_1"], 900913) self.assertEqual(params["ST_Distance_1"], 1)
def test_box_filter_with_epsg(self): from papyrus.protocol import create_geom_filter from shapely import wkb, wkt request = testing.DummyRequest(params={ "bbox": "-180,-90,180,90", "tolerance": "1", "epsg": "900913" }) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual( filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(param_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)' ) self.assertTrue( wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals( wkt.loads( 'POLYGON ((-180 -90, -180 90, 180 90, 180 -90, -180 -90))') )) self.assertEqual(params["ST_GeomFromWKB_2"], 900913) self.assertEqual(params["param_1"], 900913) self.assertEqual(params["ST_DWITHIN_1"], 1)
def test_polygon_filter_with_epsg(self): from papyrus.protocol import create_geom_filter from shapely import wkb from shapely.geometry.polygon import Polygon from geojson import dumps poly = Polygon(((1, 2), (1, 3), (2, 3), (2, 2), (1, 2))) MappedClass = self._get_mapped_class() request = testing.DummyRequest({ "geometry": dumps(poly), "tolerance": "1", "epsg": "900913" }) filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual( filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(param_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)' ) self.assertTrue( wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(poly)) self.assertEqual(params["ST_GeomFromWKB_2"], 900913) self.assertEqual(params["param_1"], 900913) self.assertEqual(params["ST_DWITHIN_1"], 1)
def test_box_filter(self): from papyrus.protocol import create_geom_filter from shapely import wkb, wkt request = testing.DummyRequest( params={"bbox": "-180,-90,180,90", "tolerance": "1"} ) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual(filter_str, b'ST_DWITHIN("table".geom, ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)') # NOQA self.assertTrue(wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(wkt.loads('POLYGON ((-180 -90, -180 90, 180 90, 180 -90, -180 -90))'))) # NOQA self.assertEqual(params["ST_GeomFromWKB_2"], 4326) self.assertEqual(params["ST_DWITHIN_1"], 1)
def test_within_filter(self): from papyrus.protocol import create_geom_filter from shapely import wkb, wkt request = testing.DummyRequest( params={"lon": "40", "lat": "5", "tolerance": "1"} ) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual(filter_str, b'ST_DWITHIN("table".geom, ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)') # NOQA self.assertTrue(wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(wkt.loads('POINT (40 5)'))) # NOQA self.assertEqual(params["ST_GeomFromWKB_2"], 4326) self.assertEqual(params["ST_DWITHIN_1"], 1)
def test_box_filter(self): from papyrus.protocol import create_geom_filter from shapely import wkb, wkt request = testing.DummyRequest( params={"bbox": "-180,-90,180,90", "tolerance": "1"} ) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual(filter_str, '(ST_Expand(GeomFromWKB(%(GeomFromWKB_1)s, %(GeomFromWKB_2)s), %(ST_Expand_1)s) && "table".geom) AND (ST_Expand("table".geom, %(ST_Expand_2)s) && GeomFromWKB(%(GeomFromWKB_3)s, %(GeomFromWKB_4)s)) AND ST_Distance("table".geom, GeomFromWKB(%(GeomFromWKB_5)s, %(GeomFromWKB_6)s)) <= %(ST_Distance_1)s') self.assertTrue(wkb.loads(str(params["GeomFromWKB_1"])).equals(wkt.loads('POLYGON ((-180 -90, -180 90, 180 90, 180 -90, -180 -90))'))) self.assertEqual(params["GeomFromWKB_2"], 4326) self.assertEqual(params["ST_Expand_1"], 1) self.assertEqual(params["ST_Distance_1"], 1)
def test_within_filter_with_epsg(self): from papyrus.protocol import create_geom_filter from shapely import wkb, wkt request = testing.DummyRequest( params={"lon": "40", "lat": "5", "tolerance": "1", "epsg": "900913"} ) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual(filter_str, b'ST_DWITHIN(ST_Transform("table".geom, %(param_1)s), ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)') self.assertTrue(wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(wkt.loads('POINT (40 5)'))) self.assertEqual(params["ST_GeomFromWKB_2"], 900913) self.assertEqual(params["param_1"], 900913) self.assertEqual(params["ST_DWITHIN_1"], 1)
def test_polygon_filter(self): from papyrus.protocol import create_geom_filter from shapely import wkb from shapely.geometry.polygon import Polygon from geojson import dumps poly = Polygon(((1, 2), (1, 3), (2, 3), (2, 2), (1, 2))) request = testing.DummyRequest( {"geometry": dumps(poly), "tolerance": "1"} ) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual(filter_str, b'ST_DWITHIN("table".geom, ST_GeomFromWKB(%(ST_GeomFromWKB_1)s, %(ST_GeomFromWKB_2)s), %(ST_DWITHIN_1)s)') # NOQA self.assertTrue(wkb.loads(bytes(params["ST_GeomFromWKB_1"])).equals(poly)) # NOQA self.assertEqual(params["ST_GeomFromWKB_2"], 4326) self.assertEqual(params["ST_DWITHIN_1"], 1)
def test_polygon_filter(self): from papyrus.protocol import create_geom_filter from shapely import wkb from shapely.geometry.polygon import Polygon from geojson import dumps poly = Polygon(((1, 2), (1, 3), (2, 3), (2, 2), (1, 2))) request = testing.DummyRequest( {"geometry": dumps(poly), "tolerance": "1"} ) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual(filter_str, '(ST_Expand(GeomFromWKB(%(GeomFromWKB_1)s, %(GeomFromWKB_2)s), %(ST_Expand_1)s) && "table".geom) AND (ST_Expand("table".geom, %(ST_Expand_2)s) && GeomFromWKB(%(GeomFromWKB_3)s, %(GeomFromWKB_4)s)) AND ST_Distance("table".geom, GeomFromWKB(%(GeomFromWKB_5)s, %(GeomFromWKB_6)s)) <= %(ST_Distance_1)s') self.assertTrue(wkb.loads(str(params["GeomFromWKB_1"])).equals(poly)) self.assertEqual(params["GeomFromWKB_2"], 4326) self.assertEqual(params["ST_Expand_1"], 1) self.assertEqual(params["ST_Distance_1"], 1)
def test_polygon_filter(self): from papyrus.protocol import create_geom_filter from shapely import wkb from shapely.geometry.polygon import Polygon from geojson import dumps poly = Polygon(((1, 2), (1, 3), (2, 3), (2, 2), (1, 2))) request = testing.DummyRequest({ "geometry": dumps(poly), "tolerance": "1" }) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual( filter_str, '(ST_Expand(GeomFromWKB(%(GeomFromWKB_1)s, %(GeomFromWKB_2)s), %(ST_Expand_1)s) && "table".geom) AND (ST_Expand("table".geom, %(ST_Expand_2)s) && GeomFromWKB(%(GeomFromWKB_3)s, %(GeomFromWKB_4)s)) AND ST_Distance("table".geom, GeomFromWKB(%(GeomFromWKB_5)s, %(GeomFromWKB_6)s)) <= %(ST_Distance_1)s' ) self.assertTrue(wkb.loads(str(params["GeomFromWKB_1"])).equals(poly)) self.assertEqual(params["GeomFromWKB_2"], 4326) self.assertEqual(params["ST_Expand_1"], 1) self.assertEqual(params["ST_Distance_1"], 1)
def test_box_filter(self): from papyrus.protocol import create_geom_filter from shapely import wkb, wkt request = testing.DummyRequest(params={ "bbox": "-180,-90,180,90", "tolerance": "1" }) MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") compiled_filter = filter.compile(self._get_engine()) params = compiled_filter.params filter_str = _compiled_to_string(compiled_filter) self.assertEqual( filter_str, '(ST_Expand(GeomFromWKB(%(GeomFromWKB_1)s, %(GeomFromWKB_2)s), %(ST_Expand_1)s) && "table".geom) AND (ST_Expand("table".geom, %(ST_Expand_2)s) && GeomFromWKB(%(GeomFromWKB_3)s, %(GeomFromWKB_4)s)) AND ST_Distance("table".geom, GeomFromWKB(%(GeomFromWKB_5)s, %(GeomFromWKB_6)s)) <= %(ST_Distance_1)s' ) self.assertTrue( wkb.loads(str(params["GeomFromWKB_1"])).equals( wkt.loads( 'POLYGON ((-180 -90, -180 90, 180 90, 180 -90, -180 -90))') )) self.assertEqual(params["GeomFromWKB_2"], 4326) self.assertEqual(params["ST_Expand_1"], 1) self.assertEqual(params["ST_Distance_1"], 1)
def test_geom_filter_no_params(self): from papyrus.protocol import create_geom_filter request = testing.DummyRequest() MappedClass = self._get_mapped_class() filter = create_geom_filter(request, MappedClass, "geom") self.assertEqual(filter, None)