diff --git a/pygeofilter/backends/sqlalchemy/filters.py b/pygeofilter/backends/sqlalchemy/filters.py index 4738100..4598ea8 100644 --- a/pygeofilter/backends/sqlalchemy/filters.py +++ b/pygeofilter/backends/sqlalchemy/filters.py @@ -4,7 +4,7 @@ from inspect import signature from typing import Callable, Dict -from pygeoif.geometry import as_shape +from pygeoif import shape from sqlalchemy import and_, func, not_, or_ @@ -19,7 +19,7 @@ def parse_bbox(box, srid: int = None): def parse_geometry(geom): - wkt = as_shape(geom).to_wkt() + wkt = shape(geom).wkt search = re.search(r"SRID=(\d+);", wkt) sridtxt = "" if search else "SRID=4326;" return func.ST_GeomFromEWKT(f"{sridtxt}{wkt}") diff --git a/pygeofilter/values.py b/pygeofilter/values.py index 917f3d7..141f43e 100644 --- a/pygeofilter/values.py +++ b/pygeofilter/values.py @@ -30,7 +30,7 @@ from datetime import date, datetime, time, timedelta from typing import Any, List, Optional, Union -from pygeoif.geometry import as_shape +from pygeoif import shape @dataclass @@ -42,7 +42,7 @@ def __geo_interface__(self): return self.geometry def __eq__(self, o: object) -> bool: - return as_shape(self).__geo_interface__ == as_shape(o).__geo_interface__ + return shape(self).__geo_interface__ == shape(o).__geo_interface__ @dataclass @@ -72,7 +72,7 @@ def __geo_interface__(self): return self.geometry def __eq__(self, o: object) -> bool: - return as_shape(self).__geo_interface__ == as_shape(o).__geo_interface__ + return shape(self).__geo_interface__ == shape(o).__geo_interface__ @dataclass diff --git a/setup.py b/setup.py index 0cc54c4..b579d43 100644 --- a/setup.py +++ b/setup.py @@ -57,7 +57,7 @@ install_requires=[ "dateparser", "lark<1.0", - "pygeoif==0.7", + "pygeoif>=1.0.0", "dataclasses;python_version<'3.7'", ] if not on_rtd diff --git a/tests/parsers/cql2_json/test_parser.py b/tests/parsers/cql2_json/test_parser.py index b07a53b..b78d440 100644 --- a/tests/parsers/cql2_json/test_parser.py +++ b/tests/parsers/cql2_json/test_parser.py @@ -383,8 +383,8 @@ def test_within_multipolygon_attr(): assert result == ast.GeometryWithin( values.Geometry( normalize_geom( - geometry.MultiPolygon( - [geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)])] + geometry.MultiPolygon.from_polygons( + geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)]) ).__geo_interface__ ), ), @@ -410,11 +410,9 @@ def test_touches_attr_multilinestring(): ast.Attribute("geometry"), values.Geometry( normalize_geom( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__ ), ), @@ -439,11 +437,9 @@ def test_crosses_attr_multilinestring(): ast.Attribute("geometry"), values.Geometry( normalize_geom( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__ ) ), @@ -468,11 +464,9 @@ def test_overlaps_attr_multilinestring(): ast.Attribute("geometry"), values.Geometry( normalize_geom( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__ ), ), diff --git a/tests/parsers/cql_json/test_parser.py b/tests/parsers/cql_json/test_parser.py index 71edfa6..7712a88 100644 --- a/tests/parsers/cql_json/test_parser.py +++ b/tests/parsers/cql_json/test_parser.py @@ -454,8 +454,8 @@ def test_within_multipolygon_attr(): assert result == ast.GeometryWithin( values.Geometry( normalize_geom( - geometry.MultiPolygon( - [geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)])] + geometry.MultiPolygon.from_polygons( + geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)]) ).__geo_interface__ ), ), @@ -480,11 +480,9 @@ def test_touches_attr_multilinestring(): ast.Attribute("geometry"), values.Geometry( normalize_geom( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__ ), ), @@ -508,11 +506,9 @@ def test_crosses_attr_multilinestring(): ast.Attribute("geometry"), values.Geometry( normalize_geom( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__ ) ), @@ -536,11 +532,9 @@ def test_overlaps_attr_multilinestring(): ast.Attribute("geometry"), values.Geometry( normalize_geom( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__ ), ), diff --git a/tests/parsers/ecql/test_parser.py b/tests/parsers/ecql/test_parser.py index 056e8df..59b41a4 100644 --- a/tests/parsers/ecql/test_parser.py +++ b/tests/parsers/ecql/test_parser.py @@ -301,8 +301,8 @@ def test_within_multipolygon_attr(): result = parse("WITHIN(MULTIPOLYGON(((1 1,2 2,0 3,1 1))), geometry)") assert result == ast.GeometryWithin( values.Geometry( - geometry.MultiPolygon( - [geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)])] + geometry.MultiPolygon.from_polygons( + geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)]) ).__geo_interface__, ), ast.Attribute("geometry"), @@ -314,11 +314,9 @@ def test_touches_attr_multilinestring(): assert result == ast.GeometryTouches( ast.Attribute("geometry"), values.Geometry( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__, ), ) @@ -329,11 +327,9 @@ def test_crosses_attr_multilinestring(): assert result == ast.GeometryCrosses( ast.Attribute("geometry"), values.Geometry( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__, ), ) @@ -344,11 +340,9 @@ def test_overlaps_attr_multilinestring(): assert result == ast.GeometryOverlaps( ast.Attribute("geometry"), values.Geometry( - geometry.MultiLineString( - [ - geometry.LineString([(1, 1), (2, 2)]), - geometry.LineString([(0, 3), (1, 1)]), - ] + geometry.MultiLineString.from_linestrings( + geometry.LineString([(1, 1), (2, 2)]), + geometry.LineString([(0, 3), (1, 1)]), ).__geo_interface__, ), ) diff --git a/tests/parsers/jfe/test_parser.py b/tests/parsers/jfe/test_parser.py index e3cd0c4..21a4c65 100644 --- a/tests/parsers/jfe/test_parser.py +++ b/tests/parsers/jfe/test_parser.py @@ -202,8 +202,8 @@ def test_within_multipolygon_attr(): assert result == ast.GeometryWithin( values.Geometry( normalize_geom( - geometry.MultiPolygon( - [geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)])] + geometry.MultiPolygon.from_polygons( + geometry.Polygon([(1, 1), (2, 2), (0, 3), (1, 1)]) ).__geo_interface__ ), ),