def query(self, lat=None, lon=None, osm_id=None, osm_type=None,<EOL>acceptlanguage='<STR_LIT>', zoom=<NUM_LIT>):
url = self.url<EOL>if osm_id is not None and osm_type not in ('<STR_LIT:N>', '<STR_LIT>', '<STR_LIT:R>'):<EOL><INDENT>raise NominatimException('<STR_LIT>')<EOL><DEDENT>if osm_id is not None and osm_type is not None:<EOL><INDENT>url += '<STR_LIT>' + osm_id + '<STR_LIT>' + osm_type<EOL><DEDENT>elif lat is not None and lon is not None:<EOL><INDENT>url += '<STR_LIT>' + str(lat) + '<STR_LIT>' + str(lon)<EOL><DEDENT>else:<EOL><INDENT>return None<EOL><DEDENT>if acceptlanguage:<EOL><INDENT>url += '<STR_LIT>' + acceptlanguage<EOL><DEDENT>if zoom in zoom_aliases:<EOL><INDENT>zoom = zoom_aliases[zoom]<EOL><DEDENT>if not isinstance(zoom, int) or zoom < <NUM_LIT:0> or zoom > <NUM_LIT>:<EOL><INDENT>raise NominatimException('<STR_LIT>')<EOL><DEDENT>url +='<STR_LIT>' + str(zoom)<EOL>return self.request(url)<EOL>
Issue a reverse geocoding query for a place given
by *lat* and *lon*, or by *osm_id* and *osm_type*
to the Nominatim instance and return the decoded results

:param lat: the geograpical latitude of the place
:param lon: the geograpical longitude of the place
:param osm_id: openstreetmap identifier osm_id
:type osm_id: str
:param osm_type: openstreetmap type osm_type
:type osm_type: str
:param acceptlanguage: rfc2616 language code
:type acceptlanguage: str or None
:param zoom: zoom factor between from 0 to 18
:type zoom: int or None or a key in :data:`zoom_aliases`
:param countrycodes: restrict the search to countries
     given by their ISO 3166-1alpha2 codes (cf.
     https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2 )
:type countrycodes: str iterable
:returns: a list of search results (each a dict)
:rtype: list or None
:raise: NominatimException if invalid zoom value