-#!/usr/bin/php -Cq
<?php
-require_once(dirname(dirname(__FILE__)).'/settings/settings.php');
require_once(CONST_BasePath.'/lib/init-cmd.php');
require_once(CONST_BasePath.'/lib/Geocode.php');
require_once(CONST_BasePath.'/lib/ParameterParser.php');
$aCMDOptions
= array(
- "Query database from command line. Returns search result as JSON.",
+ 'Query database from command line. Returns search result as JSON.',
array('help', 'h', 0, 1, 0, 0, false, 'Show Help'),
array('quiet', 'q', 0, 1, 0, 0, 'bool', 'Quiet output'),
array('verbose', 'v', 0, 1, 0, 0, 'bool', 'Verbose output'),
array('search', '', 0, 1, 1, 1, 'string', 'Search for given term or coordinate'),
+ array('country', '', 0, 1, 1, 1, 'string', 'Structured search: country'),
+ array('state', '', 0, 1, 1, 1, 'string', 'Structured search: state'),
+ array('county', '', 0, 1, 1, 1, 'string', 'Structured search: county'),
+ array('city', '', 0, 1, 1, 1, 'string', 'Structured search: city'),
+ array('street', '', 0, 1, 1, 1, 'string', 'Structured search: street'),
+ array('amenity', '', 0, 1, 1, 1, 'string', 'Structured search: amenity'),
+ array('postalcode', '', 0, 1, 1, 1, 'string', 'Structured search: postal code'),
array('accept-language', '', 0, 1, 1, 1, 'string', 'Preferred language order for showing search results'),
array('bounded', '', 0, 1, 0, 0, 'bool', 'Restrict results to given viewbox'),
);
getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
-$oDB =& getDB();
-$oParams = new ParameterParser($aCMDResult);
+$oDB = new Nominatim\DB;
+$oDB->connect();
-if ($oParams->getBool('search')) {
- if (isset($aCMDResult['nodedupe'])) $aCMDResult['dedupe'] = 'false';
+if (isset($aCMDResult['nodedupe'])) $aCMDResult['dedupe'] = 'false';
- $oGeocode = new Geocode($oDB);
+$oParams = new Nominatim\ParameterParser($aCMDResult);
- $oGeocode->setLanguagePreference($oParams->getPreferredLanguages(false));
- $oGeocode->loadParamArray($oParams);
- $oGeocode->setQuery($aCMDResult['search']);
+$aSearchParams = array(
+ 'search',
+ 'amenity',
+ 'street',
+ 'city',
+ 'county',
+ 'state',
+ 'country',
+ 'postalcode'
+ );
+
+if (!$oParams->hasSetAny($aSearchParams)) {
+ showUsage($aCMDOptions, true);
+ return 1;
+}
+
+$oGeocode = new Nominatim\Geocode($oDB);
- $aSearchResults = $oGeocode->lookup();
+$oGeocode->setLanguagePreference($oParams->getPreferredLanguages(false));
+$oGeocode->setReverseInPlan(true);
+$oGeocode->loadParamArray($oParams);
- if (version_compare(phpversion(), "5.4.0", '<')) {
- echo json_encode($aSearchResults);
- } else {
- echo json_encode($aSearchResults, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)."\n";
- }
+if ($oParams->getBool('search')) {
+ $oGeocode->setQuery($aCMDResult['search']);
} else {
- showUsage($aCMDOptions, true);
+ $oGeocode->setQueryFromParams($oParams);
}
+
+$aSearchResults = $oGeocode->lookup();
+
+echo json_encode($aSearchResults, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE)."\n";