X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/a987f22cfb7343289ff4ea42d8cf6979636e9c00..df15f13c628a3e15dee4bcad44e97b2cacb40b9f:/nominatim/api/types.py diff --git a/nominatim/api/types.py b/nominatim/api/types.py index 1927f69a..e93015fc 100644 --- a/nominatim/api/types.py +++ b/nominatim/api/types.py @@ -17,6 +17,7 @@ from struct import unpack from binascii import unhexlify from nominatim.errors import UsageError +from nominatim.api.localization import Locales # pylint: disable=no-member,too-many-boolean-expressions,too-many-instance-attributes @@ -311,13 +312,33 @@ class GeometryFormat(enum.Flag): class DataLayer(enum.Flag): - """ Layer types that can be selected for reverse and forward search. + """ The `DataLayer` flag type defines the layers that can be selected + for reverse and forward search. """ - POI = enum.auto() ADDRESS = enum.auto() + """ The address layer contains all places relevant for addresses: + fully qualified addresses with a house number (or a house name equivalent, + for some addresses) and places that can be part of an address like + roads, cities, states. + """ + POI = enum.auto() + """ Layer for points of interest like shops, restaurants but also + recycling bins or postboxes. + """ RAILWAY = enum.auto() - MANMADE = enum.auto() + """ Layer with railway features including tracks and other infrastructure. + Note that in Nominatim's standard configuration, only very few railway + features are imported into the database. Thus a custom configuration + is required to make full use of this layer. + """ NATURAL = enum.auto() + """ Layer with natural features like rivers, lakes and mountains. + """ + MANMADE = enum.auto() + """ Layer with other human-made features and boundaries. This layer is + the catch-all and includes all features not covered by the other + layers. A typical example for this layer are national park boundaries. + """ def format_country(cc: Any) -> List[str]: @@ -366,7 +387,7 @@ TParam = TypeVar('TParam', bound='LookupDetails') # pylint: disable=invalid-name @dataclasses.dataclass class LookupDetails: - """ Collection of parameters that define the amount of details + """ Collection of parameters that define which kind of details are returned with a lookup or details result. """ geometry_output: GeometryFormat = GeometryFormat.NONE @@ -393,6 +414,9 @@ class LookupDetails: 0.0 means the original geometry is kept. The higher the value, the more the geometry gets simplified. """ + locales: Locales = Locales() + """ Preferred languages for localization of results. + """ @classmethod def from_kwargs(cls: Type[TParam], kwargs: Dict[str, Any]) -> TParam: @@ -514,11 +538,13 @@ class SearchDetails(LookupDetails): or (self.bounded_viewbox and self.viewbox is not None and self.near is not None and self.viewbox.contains(self.near)) - or self.layers is not None and not self.layers) + or (self.layers is not None and not self.layers) + or (self.max_rank <= 4 and + self.layers is not None and not self.layers & DataLayer.ADDRESS)) def layer_enabled(self, layer: DataLayer) -> bool: - """ Check if the given layer has been choosen. Also returns + """ Check if the given layer has been chosen. Also returns true when layer restriction has been disabled completely. """ return self.layers is None or bool(self.layers & layer)