Setting this parameter to 0 disables polygon output completely.
+
+#### NOMINATIM_SEARCH_WITHIN_COUNTRIES
+
+| Summary | |
+| -------------- | --------------------------------------------------- |
+| **Description:** | Disable search for elements that are not in the country grid |
+| **Format:** | boolean |
+| **Default:** | no |
+| **After Changes:** | run `nominatim refresh --website` |
+
+Enable to search elements just within countries.
+
+When enabled, if, despite not finding a point within the static grid of countries, it
+finds a geometry of a region, do not return the geometry.
+Return "Unable to geocode" instead.
+
+
### Logging Settings
#### NOMINATIM_LOG_DB
protected function lookupLargeArea($sPointSQL, $iMaxRank)
{
+ $sCountryCode = $this->getCountryCode($sPointSQL);
+ if (CONST_Search_WithinCountries and $sCountryCode == null) {
+ return null;
+ }
+
if ($iMaxRank > 4) {
$aPlace = $this->lookupPolygon($sPointSQL, $iMaxRank);
if ($aPlace) {
// If no polygon which contains the searchpoint is found,
// searches in the country_osm_grid table for a polygon.
- return $this->lookupInCountry($sPointSQL, $iMaxRank);
+ return $this->lookupInCountry($sPointSQL, $iMaxRank, $sCountryCode);
}
- protected function lookupInCountry($sPointSQL, $iMaxRank)
+ protected function getCountryCode($sPointSQL)
{
- Debug::newFunction('lookupInCountry');
+ Debug::newFunction('getCountryCode');
// searches for polygon in table country_osm_grid which contains the searchpoint
// and searches for the nearest place node to the searchpoint in this polygon
$sSQL = 'SELECT country_code FROM country_osm_grid';
null,
'Could not determine country polygon containing the point.'
);
- Debug::printVar('Country code', $sCountryCode);
+ return $sCountryCode;
+ }
+ protected function lookupInCountry($sPointSQL, $iMaxRank, $sCountryCode)
+ {
+ Debug::newFunction('lookupInCountry');
if ($sCountryCode) {
if ($iMaxRank > 4) {
// look for place nodes with the given country code
@define('CONST_Use_US_Tiger_Data', getSettingBool('USE_US_TIGER_DATA'));
@define('CONST_MapIcon_URL', getSetting('MAPICON_URL', false));
@define('CONST_TokenizerDir', CONST_InstallDir.'/tokenizer');
+@define('CONST_Search_WithinCountries', getSetting('SEARCH_WITHIN_COUNTRIES', false));
require_once(CONST_LibDir.'/Geocode.php');
('Search_NameOnlySearchFrequencyThreshold', 'SEARCH_NAME_ONLY_THRESHOLD', str),
('Use_US_Tiger_Data', 'USE_US_TIGER_DATA', bool),
('MapIcon_URL', 'MAPICON_URL', str),
+ ('Search_WithinCountries', 'SEARCH_WITHIN_COUNTRIES', bool),
)
# of connections _per worker_.
NOMINATIM_API_POOL_SIZE=10
+# Search elements just within countries
+# If, despite not finding a point within the static grid of countries, it
+# finds a geometry of a region, do not return the geometry. Return "Unable
+# to geocode" instead.
+NOMINATIM_SEARCH_WITHIN_COUNTRIES=False
+
### Log settings
#
# The following options allow to enable logging of API requests.