python: implement reverse lookup function

The implementation follows for most part the PHP code but introduces an
additional layer parameter with which the kind of places to be returned
can be restricted. This replaces the hard-coded exclusion lists.
This commit is contained in:
Sarah Hoffmann
2023-03-23 22:38:37 +01:00
parent 41da298b18
commit 2f54732500
10 changed files with 424 additions and 118 deletions

View File

@@ -21,7 +21,7 @@ from nominatim.config import Configuration
from nominatim.api.connection import SearchConnection
from nominatim.api.status import get_status, StatusResult
from nominatim.api.lookup import get_place_by_id
from nominatim.api.reverse import reverse_lookup
from nominatim.api.reverse import ReverseGeocoder
from nominatim.api.types import PlaceRef, LookupDetails, AnyPoint, DataLayer
from nominatim.api.results import DetailedResult, ReverseResult
@@ -156,8 +156,9 @@ class NominatimAPIAsync:
max_rank = max(0, min(max_rank or 30, 30))
async with self.begin() as conn:
return await reverse_lookup(conn, coord, max_rank, layer,
details or LookupDetails())
geocoder = ReverseGeocoder(conn, max_rank, layer,
details or LookupDetails())
return await geocoder.lookup(coord)
class NominatimAPI: