From: Sarah Hoffmann Date: Sun, 20 Aug 2023 13:52:20 +0000 (+0200) Subject: Merge pull request #3159 from lonvia/fix-name-lookup-for-housenames X-Git-Tag: v4.3.0~21 X-Git-Url: https://git.openstreetmap.org/nominatim.git/commitdiff_plain/517a0cb67397949f3c377e8d7f93bcb239929967?hp=4559886d832653e81ebe27e893d63d67be7e8cbe Merge pull request #3159 from lonvia/fix-name-lookup-for-housenames Fix name lookup for housenames --- diff --git a/lib-sql/functions/utils.sql b/lib-sql/functions/utils.sql index f5be7b61..b2771ba1 100644 --- a/lib-sql/functions/utils.sql +++ b/lib-sql/functions/utils.sql @@ -273,8 +273,8 @@ BEGIN END IF; RETURN ST_Envelope(ST_Collect( - ST_Project(geom, radius, 0.785398)::geometry, - ST_Project(geom, radius, 3.9269908)::geometry)); + ST_Project(geom::geography, radius, 0.785398)::geometry, + ST_Project(geom::geography, radius, 3.9269908)::geometry)); END; $$ LANGUAGE plpgsql IMMUTABLE; diff --git a/nominatim/api/reverse.py b/nominatim/api/reverse.py index 4a5f9c03..63836b49 100644 --- a/nominatim/api/reverse.py +++ b/nominatim/api/reverse.py @@ -87,7 +87,7 @@ def _locate_interpolation(table: SaFromClause) -> SaLabel: def _is_address_point(table: SaFromClause) -> SaColumn: return sa.and_(table.c.rank_address == 30, sa.or_(table.c.housenumber != None, - table.c.name.has_key('housename'))) + table.c.name.has_key('addr:housename'))) def _get_closest(*rows: Optional[SaRow]) -> Optional[SaRow]: diff --git a/nominatim/api/search/db_searches.py b/nominatim/api/search/db_searches.py index 115f32fa..34a4037a 100644 --- a/nominatim/api/search/db_searches.py +++ b/nominatim/api/search/db_searches.py @@ -111,7 +111,7 @@ def _filter_by_layer(table: SaFromClause, layers: DataLayer) -> SaColumn: orexpr.append(table.c.rank_address.between(1, 29)) orexpr.append(sa.and_(table.c.rank_address == 30, sa.or_(table.c.housenumber != None, - table.c.address.has_key('housename')))) + table.c.address.has_key('addr:housename')))) elif layers & DataLayer.POI: orexpr.append(sa.and_(table.c.rank_address == 30, table.c.class_.not_in(('place', 'building')))) diff --git a/test/python/api/test_api_reverse.py b/test/python/api/test_api_reverse.py index 3296e98f..d9ab2cb8 100644 --- a/test/python/api/test_api_reverse.py +++ b/test/python/api/test_api_reverse.py @@ -60,7 +60,8 @@ def test_reverse_ignore_unindexed(apiobj): (0.7, napi.DataLayer.RAILWAY, 226), (0.7, napi.DataLayer.NATURAL, 227), (0.70003, napi.DataLayer.MANMADE | napi.DataLayer.RAILWAY, 225), - (0.70003, napi.DataLayer.MANMADE | napi.DataLayer.NATURAL, 225)]) + (0.70003, napi.DataLayer.MANMADE | napi.DataLayer.NATURAL, 225), + (5, napi.DataLayer.ADDRESS, 229)]) def test_reverse_rank_30_layers(apiobj, y, layer, place_id): apiobj.add_placex(place_id=223, class_='place', type='house', housenumber='1', @@ -83,6 +84,11 @@ def test_reverse_rank_30_layers(apiobj, y, layer, place_id): rank_address=0, rank_search=30, centroid=(1.3, 0.70005)) + apiobj.add_placex(place_id=229, class_='place', type='house', + name={'addr:housename': 'Old Cottage'}, + rank_address=30, + rank_search=30, + centroid=(1.3, 5)) assert apiobj.api.reverse((1.3, y), layers=layer).place_id == place_id