Skip to content

Commit db76d4d

Browse files
committed
Make srid functions compatible with Shapely versions
1 parent bb9c3b5 commit db76d4d

File tree

4 files changed

+31
-13
lines changed

4 files changed

+31
-13
lines changed

Makefile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
init:
2+
pip install -U pip
23
pip install -e .[tests]
34

5+
lint:
6+
flake8 cartoframes tests
7+
48
test:
59
pytest tests/unit/
610

cartoframes/utils/geom_utils.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ def _load_ewkt(egeom):
218218
srid, geom = _extract_srid(egeom)
219219
ogeom = _load_wkt(geom)
220220
if srid:
221-
shapely.geos.lgeos.GEOSSetSRID(ogeom._geom, int(srid))
221+
ogeom = set_srid(ogeom, int(srid))
222222
return ogeom
223223

224224

@@ -241,7 +241,7 @@ def encode_geometry_ewkt(geom, srid=4326):
241241

242242
def encode_geometry_ewkb(geom, srid=4326):
243243
if isinstance(geom, shapely.geometry.base.BaseGeometry):
244-
shapely.geos.lgeos.GEOSSetSRID(geom._geom, srid)
244+
geom = set_srid(geom, srid)
245245
return shapely.wkb.dumps(geom, hex=True, include_srid=True)
246246

247247

@@ -272,3 +272,18 @@ def get_crs(gdf):
272272
return gdf.crs['init']
273273
else:
274274
return str(gdf.crs)
275+
276+
277+
def get_srid(geom):
278+
if shapely.__version__ < '2.0':
279+
return shapely.geos.lgeos.GEOSGetSRID(geom._geom)
280+
else:
281+
return shapely.get_srid(geom)
282+
283+
284+
def set_srid(geom, srid):
285+
if shapely.__version__ < '2.0':
286+
shapely.geos.lgeos.GEOSSetSRID(geom._geom, int(srid))
287+
return geom
288+
else:
289+
return shapely.set_srid(geom, int(srid))

setup.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,6 @@ def get_version():
2929
'markupsafe<=2.0.1',
3030
'jinja2>=2.10.1,<3.0',
3131
'pandas>=0.25.0',
32-
'shapely>=1.7,<2.0',
3332
'geopandas>=0.6.0,<1.0',
3433
'unidecode>=1.1.0,<2.0',
3534
'semantic_version>=2.8.0,<3'

tests/unit/utils/test_geom_utils.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import pandas as pd
44
import geopandas as gpd
55

6-
from shapely.geos import lgeos
76
from shapely.geometry import Point
87

98
from cartoframes.utils.geom_utils import (ENC_EWKT, ENC_SHAPELY, ENC_WKB,
109
ENC_WKB_BHEX, ENC_WKB_HEX, ENC_WKT,
11-
decode_geometry, decode_geometry_item, detect_encoding_type)
10+
decode_geometry, decode_geometry_item,
11+
detect_encoding_type, get_srid)
1212

1313

1414
class TestGeomUtils(object):
@@ -92,38 +92,38 @@ def test_decode_geometry_shapely(self):
9292
def test_decode_geometry_wkb(self):
9393
geom = decode_geometry_item(
9494
b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00H\x93@\x00\x00\x00\x00\x00\x9d\xb6@', ENC_WKB)
95-
assert lgeos.GEOSGetSRID(geom._geom) == 0
95+
assert get_srid(geom) == 0
9696
assert geom.wkb == b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00H\x93@\x00\x00\x00\x00\x00\x9d\xb6@'
9797

9898
geom = decode_geometry_item(
9999
b'\x01\x01\x00\x00 \xe6\x10\x00\x00\x00\x00\x00\x00\x00H\x93@\x00\x00\x00\x00\x00\x9d\xb6@', ENC_WKB) # ext
100-
assert lgeos.GEOSGetSRID(geom._geom) == 4326
100+
assert get_srid(geom) == 4326
101101
assert geom.wkb == b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00H\x93@\x00\x00\x00\x00\x00\x9d\xb6@'
102102

103103
def test_decode_geometry_wkb_hex(self):
104104
geom = decode_geometry_item('0101000000000000000048934000000000009DB640', ENC_WKB_HEX)
105-
assert lgeos.GEOSGetSRID(geom._geom) == 0
105+
assert get_srid(geom) == 0
106106
assert geom.wkb_hex == '0101000000000000000048934000000000009DB640'
107107

108108
geom = decode_geometry_item('0101000020E6100000000000000048934000000000009DB640', ENC_WKB_HEX) # ext
109-
assert lgeos.GEOSGetSRID(geom._geom) == 4326
109+
assert get_srid(geom) == 4326
110110
assert geom.wkb_hex == '0101000000000000000048934000000000009DB640'
111111

112112
def test_decode_geometry_wkb_bhex(self):
113113
geom = decode_geometry_item(b'0101000000000000000048934000000000009DB640', ENC_WKB_BHEX)
114-
assert lgeos.GEOSGetSRID(geom._geom) == 0
114+
assert get_srid(geom) == 0
115115
assert geom.wkb == b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00H\x93@\x00\x00\x00\x00\x00\x9d\xb6@'
116116

117117
geom = decode_geometry_item(b'0101000020E6100000000000000048934000000000009DB640', ENC_WKB_BHEX) # ext
118-
assert lgeos.GEOSGetSRID(geom._geom) == 4326
118+
assert get_srid(geom) == 4326
119119
assert geom.wkb == b'\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00H\x93@\x00\x00\x00\x00\x00\x9d\xb6@'
120120

121121
def test_decode_geometry_wkt(self):
122122
geom = decode_geometry_item('POINT (1234 5789)', ENC_WKT)
123-
assert lgeos.GEOSGetSRID(geom._geom) == 0
123+
assert get_srid(geom) == 0
124124
assert geom.wkt == 'POINT (1234 5789)'
125125

126126
def test_decode_geometry_ewkt(self):
127127
geom = decode_geometry_item('SRID=4326;POINT (1234 5789)', ENC_EWKT) # ext
128-
assert lgeos.GEOSGetSRID(geom._geom) == 4326
128+
assert get_srid(geom) == 4326
129129
assert geom.wkt == 'POINT (1234 5789)'

0 commit comments

Comments
 (0)