From aaa23747f797a625aed052d2e9bff750f63cb414 Mon Sep 17 00:00:00 2001 From: Francesco Bartoli Date: Tue, 16 Dec 2025 18:29:39 +0100 Subject: [PATCH 1/3] Fix error for CSV provider when the bbox parameter has 6 coordinates --- pygeoapi/provider/csv_.py | 5 +++++ tests/provider/test_csv__provider.py | 3 +++ 2 files changed, 8 insertions(+) diff --git a/pygeoapi/provider/csv_.py b/pygeoapi/provider/csv_.py index e560685ca..cffa54734 100644 --- a/pygeoapi/provider/csv_.py +++ b/pygeoapi/provider/csv_.py @@ -1,8 +1,10 @@ # ================================================================= # # Authors: Tom Kralidis +# Francesco Bartoli # # Copyright (c) 2025 Tom Kralidis +# Copyright (c) 2025 Francesco Bartoli # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation @@ -138,6 +140,9 @@ def _load(self, offset=0, limit=10, resulttype='results', if bbox: LOGGER.debug('processing bbox parameter') + if len(bbox) > 4: + LOGGER.debug("bbox reduced to 4 elements") + bbox = bbox[:4] data_ = filter( lambda f: all( [self._intersects(f, bbox)]), data_) diff --git a/tests/provider/test_csv__provider.py b/tests/provider/test_csv__provider.py index 6f20fa74a..d4427e85c 100644 --- a/tests/provider/test_csv__provider.py +++ b/tests/provider/test_csv__provider.py @@ -140,6 +140,9 @@ def test_query(config): results = p.query(bbox=[-75, 45, -64, 55]) assert len(results['features'][0]['properties']) == 2 + results = p.query(bbox=[-75, 45, -64, 55, 0, 0]) + assert len(results['features'][0]['properties']) == 2 + def test_get_invalid_property(config): """Testing query for an invalid property name""" From 71229336a628ab5d822e82e1dc8062f832cf8529 Mon Sep 17 00:00:00 2001 From: Francesco Bartoli Date: Tue, 16 Dec 2025 20:35:05 +0100 Subject: [PATCH 2/3] Fix error for GeoJSON provider when the bbox parameter has 6 coordinates Fix error for GeoJSON provider when the bbox parameter has 6 coordinates --- pygeoapi/provider/geojson.py | 3 +++ tests/provider/test_geojson_provider.py | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/pygeoapi/provider/geojson.py b/pygeoapi/provider/geojson.py index ddbca7da6..9109c8a15 100644 --- a/pygeoapi/provider/geojson.py +++ b/pygeoapi/provider/geojson.py @@ -127,6 +127,9 @@ def _load(self, bbox=[], skip_geometry=None, properties=[], # filter by bbox if set if bbox: LOGGER.debug('processing bbox parameter') + if len(bbox) > 4: + LOGGER.debug("bbox reduced to 4 elements") + bbox = bbox[:4] data['features'] = [f for f in data['features'] if \ self._intersects(f['geometry'], bbox)] # noqa diff --git a/tests/provider/test_geojson_provider.py b/tests/provider/test_geojson_provider.py index b4fee85ec..7db4dd0fd 100644 --- a/tests/provider/test_geojson_provider.py +++ b/tests/provider/test_geojson_provider.py @@ -104,6 +104,11 @@ def test_query(fixture, config): assert results['numberMatched'] == 1 assert results['numberReturned'] == 1 + results = p.query(bbox=[120, 10, 126, 11, 0, 0]) + assert len(results['features']) == 1 + assert results['numberMatched'] == 1 + assert results['numberReturned'] == 1 + def test_get(fixture, config): p = GeoJSONProvider(config) From 162453e6cb9cdcaf029b02889ac64df899ce84d5 Mon Sep 17 00:00:00 2001 From: Francesco Bartoli Date: Wed, 17 Dec 2025 13:09:51 +0100 Subject: [PATCH 3/3] Add one more test for the CSW provider that uses the same function giving error --- tests/provider/test_csw_provider.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/provider/test_csw_provider.py b/tests/provider/test_csw_provider.py index c7031e09b..129a47f2a 100644 --- a/tests/provider/test_csw_provider.py +++ b/tests/provider/test_csw_provider.py @@ -1,8 +1,10 @@ # ================================================================= # # Authors: Tom Kralidis +# Francesco Bartoli # # Copyright (c) 2025 Tom Kralidis +# Copyright (c) 2025 Francesco Bartoli # # Permission is hereby granted, free of charge, to any person # obtaining a copy of this software and associated documentation @@ -109,6 +111,9 @@ def test_query(config): results = p.query(bbox=[-10, 40, 0, 60]) assert len(results['features']) == 2 + results = p.query(bbox=[-10, 40, 0, 60, 0, 0]) + assert len(results['features']) == 2 + results = p.query(properties=[('title', 'Maecenas enim')]) assert len(results['features']) == 1