From a48a05a6ab338eaf480a971f6c75b7587e4595e6 Mon Sep 17 00:00:00 2001 From: Denis Date: Sun, 2 Mar 2025 20:53:41 +0100 Subject: [PATCH] fix(deps): upgrade plpygis --- src/pypgstac/pyproject.toml | 2 +- src/pypgstac/src/pypgstac/load.py | 2 +- src/pypgstac/tests/test_load.py | 21 +++++++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/pypgstac/pyproject.toml b/src/pypgstac/pyproject.toml index 870272cf..906675a9 100644 --- a/src/pypgstac/pyproject.toml +++ b/src/pypgstac/pyproject.toml @@ -22,7 +22,7 @@ dependencies = [ "fire>=0.4.0", "hydraters>=0.1.0", "orjson>=3.7.0", - "plpygis>=0.2.0", + "plpygis>=0.5.0", "pydantic>=1.7", "python-dateutil>=2.8.0", "smart-open>=5.0", diff --git a/src/pypgstac/src/pypgstac/load.py b/src/pypgstac/src/pypgstac/load.py index 76d97e7e..3d64f7f7 100644 --- a/src/pypgstac/src/pypgstac/load.py +++ b/src/pypgstac/src/pypgstac/load.py @@ -673,7 +673,7 @@ def format_item(self, _item: Union[Path, str, Dict[str, Any]]) -> Dict[str, Any] geom = Geometry.from_geojson(geojson) if geom is None: raise Exception(f"Invalid geometry encountered: {geojson}") - geometry = str(geom.wkb) + geometry = str(geom.ewkb) out["geometry"] = geometry content = dehydrate(base_item, item) diff --git a/src/pypgstac/tests/test_load.py b/src/pypgstac/tests/test_load.py index 564ab8f6..1baee369 100644 --- a/src/pypgstac/tests/test_load.py +++ b/src/pypgstac/tests/test_load.py @@ -461,3 +461,24 @@ def test_load_items_nopartitionconstraint_succeeds(loader: Loader) -> None: """, ) assert cdtmin == "2011-07-31 00:00:00+00" + + +def test_valid_srid(loader: Loader) -> None: + """Test pypgstac items have a valid srid. + + https://github.com/stac-utils/pgstac/issues/357 + """ + loader.load_collections( + str(TEST_COLLECTIONS_JSON), + insert_mode=Methods.ignore, + ) + loader.load_items( + str(TEST_ITEMS), + insert_mode=Methods.insert, + ) + srid = loader.db.query_one( + """ + SELECT st_srid(geometry) from items LIMIT 1; + """, + ) + assert srid > 0