From: Sarah Hoffmann Date: Sat, 28 Sep 2024 12:42:32 +0000 (+0200) Subject: get bbox of postcode areas into results X-Git-Url: https://git.openstreetmap.org./nominatim.git/commitdiff_plain/5160a1d57758ca95bb22d8372f6e84fb8f58e191?ds=sidebyside get bbox of postcode areas into results --- diff --git a/src/nominatim_api/search/db_searches.py b/src/nominatim_api/search/db_searches.py index 35c063fc..d2202b2c 100644 --- a/src/nominatim_api/search/db_searches.py +++ b/src/nominatim_api/search/db_searches.py @@ -616,6 +616,8 @@ class PostcodeSearch(AbstractSearch): for prow in await conn.execute(placex_sql, _details_to_bind_params(details)): result = nres.create_from_placex_row(prow, nres.SearchResult) + if result is not None: + result.bbox = Bbox.from_wkb(prow.bbox) break else: result = nres.create_from_postcode_row(row, nres.SearchResult) diff --git a/test/python/api/search/test_search_postcode.py b/test/python/api/search/test_search_postcode.py index 633e07bc..369e1504 100644 --- a/test/python/api/search/test_search_postcode.py +++ b/test/python/api/search/test_search_postcode.py @@ -59,6 +59,19 @@ def test_postcode_with_country(apiobj, frontend): assert results[0].place_id == 101 +def test_postcode_area(apiobj, frontend): + apiobj.add_postcode(place_id=100, country_code='ch', postcode='12345') + apiobj.add_placex(place_id=200, country_code='ch', postcode='12345', + osm_type='R', osm_id=34, class_='boundary', type='postal_code', + geometry='POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))') + + results = run_search(apiobj, frontend, 0.3, ['12345'], [0.0]) + + assert len(results) == 1 + assert results[0].place_id == 200 + assert results[0].bbox.area == 1 + + class TestPostcodeSearchWithAddress: @pytest.fixture(autouse=True)