<?php
+
+namespace Nominatim;
+
require_once(CONST_BasePath.'/lib/PlaceLookup.php');
require_once(CONST_BasePath.'/lib/ReverseGeocode.php');
protected $aStructuredQuery = false;
- function Geocode(&$oDB)
+ public function __construct(&$oDB)
{
$this->oDB =& $oDB;
}
- function setReverseInPlan($bReverse)
+ public function setReverseInPlan($bReverse)
{
$this->bReverseInPlan = $bReverse;
}
- function setLanguagePreference($aLangPref)
+ public function setLanguagePreference($aLangPref)
{
$this->aLangPrefOrder = $aLangPref;
}
- function getIncludeAddressDetails()
+ public function getIncludeAddressDetails()
{
return $this->bIncludeAddressDetails;
}
- function getIncludeExtraTags()
+ public function getIncludeExtraTags()
{
return $this->bIncludeExtraTags;
}
- function getIncludeNameDetails()
+ public function getIncludeNameDetails()
{
return $this->bIncludeNameDetails;
}
- function setIncludePolygonAsPoints($b = true)
+ public function setIncludePolygonAsPoints($b = true)
{
$this->bIncludePolygonAsPoints = $b;
}
- function setIncludePolygonAsText($b = true)
+ public function setIncludePolygonAsText($b = true)
{
$this->bIncludePolygonAsText = $b;
}
- function setIncludePolygonAsGeoJSON($b = true)
+ public function setIncludePolygonAsGeoJSON($b = true)
{
$this->bIncludePolygonAsGeoJSON = $b;
}
- function setIncludePolygonAsKML($b = true)
+ public function setIncludePolygonAsKML($b = true)
{
$this->bIncludePolygonAsKML = $b;
}
- function setIncludePolygonAsSVG($b = true)
+ public function setIncludePolygonAsSVG($b = true)
{
$this->bIncludePolygonAsSVG = $b;
}
- function setPolygonSimplificationThreshold($f)
+ public function setPolygonSimplificationThreshold($f)
{
$this->fPolygonSimplificationThreshold = $f;
}
- function setLimit($iLimit = 10)
+ public function setLimit($iLimit = 10)
{
if ($iLimit > 50) $iLimit = 50;
if ($iLimit < 1) $iLimit = 1;
$this->iLimit = $iLimit + min($iLimit, 10);
}
- function getExcludedPlaceIDs()
+ public function getExcludedPlaceIDs()
{
return $this->aExcludePlaceIDs;
}
- function getViewBoxString()
+ public function getViewBoxString()
{
if (!$this->aViewBox) return null;
return $this->aViewBox[0].','.$this->aViewBox[3].','.$this->aViewBox[2].','.$this->aViewBox[1];
}
- function setFeatureType($sFeatureType)
+ public function setFeatureType($sFeatureType)
{
switch ($sFeatureType) {
case 'country':
}
}
- function setRankRange($iMin, $iMax)
+ public function setRankRange($iMin, $iMax)
{
$this->iMinAddressRank = $iMin;
$this->iMaxAddressRank = $iMax;
}
- function setRoute($aRoutePoints, $fRouteWidth)
+ public function setRoute($aRoutePoints, $fRouteWidth)
{
$this->aViewBox = false;
$this->sViewboxLargeSQL .= ','.($fRouteWidth/30).')';
}
- function setViewbox($aViewbox)
+ public function setViewbox($aViewbox)
{
$this->aViewBox = array_map('floatval', $aViewbox);
$this->sViewboxLargeSQL = "ST_SetSRID(ST_MakeBox2D(ST_Point(".$aBigViewBox[0].",".$aBigViewBox[1]."),ST_Point(".$aBigViewBox[2].",".$aBigViewBox[3].")),4326)";
}
- function setNearPoint($aNearPoint, $fRadiusDeg = 0.1)
+ public function setNearPoint($aNearPoint, $fRadiusDeg = 0.1)
{
$this->aNearPoint = array((float)$aNearPoint[0], (float)$aNearPoint[1], (float)$fRadiusDeg);
}
- function setQuery($sQueryString)
+ public function setQuery($sQueryString)
{
$this->sQuery = $sQueryString;
$this->aStructuredQuery = false;
}
- function getQueryString()
+ public function getQueryString()
{
return $this->sQuery;
}
- function loadParamArray($oParams)
+ public function loadParamArray($oParams)
{
$this->bIncludeAddressDetails
= $oParams->getBool('addressdetails', $this->bIncludeAddressDetails);
}
}
- function setQueryFromParams($oParams)
+ public function setQueryFromParams($oParams)
{
// Search query
$sQuery = $oParams->getString('q');
}
}
- function loadStructuredAddressElement($sValue, $sKey, $iNewMinAddressRank, $iNewMaxAddressRank, $aItemListValues)
+ public function loadStructuredAddressElement($sValue, $sKey, $iNewMinAddressRank, $iNewMaxAddressRank, $aItemListValues)
{
$sValue = trim($sValue);
if (!$sValue) return false;
return true;
}
- function setStructuredQuery($sAmentiy = false, $sStreet = false, $sCity = false, $sCounty = false, $sState = false, $sCountry = false, $sPostalCode = false)
+ public function setStructuredQuery($sAmentiy = false, $sStreet = false, $sCity = false, $sCounty = false, $sState = false, $sCountry = false, $sPostalCode = false)
{
$this->sQuery = false;
}
}
- function fallbackStructuredQuery()
+ public function fallbackStructuredQuery()
{
if (!$this->aStructuredQuery) return false;
return false;
}
- function getDetails($aPlaceIDs)
+ public function getDetails($aPlaceIDs)
{
//$aPlaceIDs is an array with key: placeID and value: tiger-housenumber, if found, else -1
if (sizeof($aPlaceIDs) == 0) return array();
return $aSearchResults;
}
- function getGroupedSearches($aSearches, $aPhraseTypes, $aPhrases, $aValidTokens, $aWordFrequencyScores, $bStructuredPhrases)
+ public function getGroupedSearches($aSearches, $aPhraseTypes, $aPhrases, $aValidTokens, $aWordFrequencyScores, $bStructuredPhrases)
{
/*
Calculate all searches using aValidTokens i.e.
*/
- function lookup()
+ public function lookup()
{
if (!$this->sQuery && !$this->aStructuredQuery) return false;
}
} else {
// Just interpret as a reverse geocode
- $oReverse = new ReverseGeocode($this->oDB);
+ $oReverse = new Nominatim\ReverseGeocode($this->oDB);
$oReverse->setZoom(18);
$aLookup = $oReverse->lookup(
<?php
+namespace Nominatim;
+
class ParameterParser
{
private $aParams;
- function __construct($aParams = null)
+ public function __construct($aParams = null)
{
$this->aParams = ($aParams === null) ? $_GET : $aParams;
}
- function getBool($sName, $bDefault = false)
+ public function getBool($sName, $bDefault = false)
{
if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
return $bDefault;
return (bool) $this->aParams[$sName];
}
- function getInt($sName, $bDefault = false)
+ public function getInt($sName, $bDefault = false)
{
if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
return $bDefault;
return (int) $this->aParams[$sName];
}
- function getFloat($sName, $bDefault = false)
+ public function getFloat($sName, $bDefault = false)
{
if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
return $bDefault;
return (float) $this->aParams[$sName];
}
- function getString($sName, $bDefault = false)
+ public function getString($sName, $bDefault = false)
{
if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
return $bDefault;
return $this->aParams[$sName];
}
- function getSet($sName, $aValues, $sDefault = false)
+ public function getSet($sName, $aValues, $sDefault = false)
{
if (!isset($this->aParams[$sName]) || strlen($this->aParams[$sName]) == 0) {
return $sDefault;
return $this->aParams[$sName];
}
- function getStringList($sName, $aDefault = false)
+ public function getStringList($sName, $aDefault = false)
{
$sValue = $this->getString($sName);
return $aDefault;
}
- function getPreferredLanguages($sFallback = null)
+ public function getPreferredLanguages($sFallback = null)
{
if ($sFallback === null && isset($_SERVER["HTTP_ACCEPT_LANGUAGE"])) {
$sFallback = $_SERVER["HTTP_ACCEPT_LANGUAGE"];
<?php
+namespace Nominatim;
+
class PlaceLookup
{
protected $oDB;
protected $fPolygonSimplificationThreshold = 0.0;
- function PlaceLookup(&$oDB)
+ public function __construct(&$oDB)
{
$this->oDB =& $oDB;
}
- function setLanguagePreference($aLangPrefOrder)
+ public function setLanguagePreference($aLangPrefOrder)
{
$this->aLangPrefOrder = $aLangPrefOrder;
}
- function setIncludeAddressDetails($bAddressDetails = true)
+ public function setIncludeAddressDetails($bAddressDetails = true)
{
$this->bAddressDetails = $bAddressDetails;
}
- function setIncludeExtraTags($bExtraTags = false)
+ public function setIncludeExtraTags($bExtraTags = false)
{
$this->bExtraTags = $bExtraTags;
}
- function setIncludeNameDetails($bNameDetails = false)
+ public function setIncludeNameDetails($bNameDetails = false)
{
$this->bNameDetails = $bNameDetails;
}
- function setIncludePolygonAsPoints($b = true)
+ public function setIncludePolygonAsPoints($b = true)
{
$this->bIncludePolygonAsPoints = $b;
}
- function getIncludePolygonAsPoints()
+ public function getIncludePolygonAsPoints()
{
return $this->bIncludePolygonAsPoints;
}
- function setIncludePolygonAsText($b = true)
+ public function setIncludePolygonAsText($b = true)
{
$this->bIncludePolygonAsText = $b;
}
- function getIncludePolygonAsText()
+ public function getIncludePolygonAsText()
{
return $this->bIncludePolygonAsText;
}
- function setIncludePolygonAsGeoJSON($b = true)
+ public function setIncludePolygonAsGeoJSON($b = true)
{
$this->bIncludePolygonAsGeoJSON = $b;
}
- function setIncludePolygonAsKML($b = true)
+ public function setIncludePolygonAsKML($b = true)
{
$this->bIncludePolygonAsKML = $b;
}
- function setIncludePolygonAsSVG($b = true)
+ public function setIncludePolygonAsSVG($b = true)
{
$this->bIncludePolygonAsSVG = $b;
}
- function setPolygonSimplificationThreshold($f)
+ public function setPolygonSimplificationThreshold($f)
{
$this->fPolygonSimplificationThreshold = $f;
}
- function lookupOSMID($sType, $iID)
+ public function lookupOSMID($sType, $iID)
{
$sSQL = "select place_id from placex where osm_type = '".pg_escape_string($sType)."' and osm_id = ".(int)$iID." order by type = 'postcode' asc";
$iPlaceID = chksql($this->oDB->getOne($sSQL));
return $this->lookup((int)$iPlaceID);
}
- function lookup($iPlaceID, $sType = '', $fInterpolFraction = 0.0)
+ public function lookup($iPlaceID, $sType = '', $fInterpolFraction = 0.0)
{
if (!$iPlaceID) return null;
return $aPlace;
}
- function getAddressDetails($iPlaceID, $bAll = false, $housenumber = -1)
+ public function getAddressDetails($iPlaceID, $bAll = false, $housenumber = -1)
{
$sLanguagePrefArraySQL = "ARRAY[".join(',', array_map("getDBQuoted", $this->aLangPrefOrder))."]";
return chksql($this->oDB->getAll($sSQL));
}
- function getAddressNames($iPlaceID, $housenumber = -1)
+ public function getAddressNames($iPlaceID, $housenumber = -1)
{
$aAddressLines = $this->getAddressDetails($iPlaceID, false, $housenumber);
*/
- function getOutlines($iPlaceID, $fLon = null, $fLat = null, $fRadius = null)
+ public function getOutlines($iPlaceID, $fLon = null, $fLat = null, $fRadius = null)
{
$aOutlineResult = array();
<?php
+namespace Nominatim;
+
class ReverseGeocode
{
protected $oDB;
protected $iMaxRank = 28;
- function ReverseGeocode(&$oDB)
+ public function __construct(&$oDB)
{
$this->oDB =& $oDB;
}
- function setZoom($iZoom)
+ public function setZoom($iZoom)
{
// Zoom to rank, this could probably be calculated but a lookup gives fine control
$aZoomRank = array(
*/
- function lookup($fLat, $fLon, $bDoInterpolation = true)
+ public function lookup($fLat, $fLon, $bDoInterpolation = true)
{
$sPointSQL = 'ST_SetSRID(ST_Point('.$fLon.','.$fLat.'),4326)';
$iMaxRank = $this->iMaxRank;
getCmdOpt($_SERVER['argv'], $aCMDOptions, $aCMDResult, true, true);
$oDB =& getDB();
-$oParams = new ParameterParser($aCMDResult);
+$oParams = new Nominatim\ParameterParser($aCMDResult);
if ($oParams->getBool('search')) {
if (isset($aCMDResult['nodedupe'])) $aCMDResult['dedupe'] = 'false';
- $oGeocode = new Geocode($oDB);
+ $oGeocode = new Nominatim\Geocode($oDB);
$oGeocode->setLanguagePreference($oParams->getPreferredLanguages(false));
$oGeocode->loadParamArray($oParams);
$bVerbose = $aResult['verbose'];
if (!$aResult['search-only']) {
- $oReverseGeocode = new ReverseGeocode($oDB);
+ $oReverseGeocode = new Nominatim\ReverseGeocode($oDB);
$oReverseGeocode->setZoom(20);
- $oPlaceLookup = new PlaceLookup($oDB);
+ $oPlaceLookup = new Nominatim\PlaceLookup($oDB);
$oPlaceLookup->setIncludeAddressDetails(true);
$oPlaceLookup->setLanguagePreference(array('en'));
}
if (!$aResult['reverse-only']) {
- $oGeocode =& new Geocode($oDB);
+ $oGeocode =& new Nominatim\Geocode($oDB);
echo "Warm search: ";
if ($bVerbose) echo "\n";
require_once(CONST_BasePath.'/lib/output.php');
ini_set('memory_limit', '200M');
-$oParams = new ParameterParser();
+$oParams = new Nominatim\ParameterParser();
$sOutputFormat = 'html';
$aLangPrefOrder = $oParams->getPreferredLanguages();
require_once(CONST_BasePath.'/lib/output.php');
ini_set('memory_limit', '200M');
-$oParams = new ParameterParser();
+$oParams = new Nominatim\ParameterParser();
$sOutputFormat = $oParams->getSet('format', array('html', 'json'), 'html');
$aLangPrefOrder = $oParams->getPreferredLanguages();
if ($iParentPlaceID) $iPlaceID = $iParentPlaceID;
}
-$oPlaceLookup = new PlaceLookup($oDB);
+$oPlaceLookup = new Nominatim\PlaceLookup($oDB);
$oPlaceLookup->setLanguagePreference($aLangPrefOrder);
$oPlaceLookup->setIncludeAddressDetails(true);
require_once(CONST_BasePath.'/lib/output.php');
ini_set('memory_limit', '200M');
-$oParams = new ParameterParser();
+$oParams = new Nominatim\ParameterParser();
// Format for output
$sOutputFormat = $oParams->getSet('format', array('xml', 'json'), 'xml');
$aSearchResults = array();
$aCleanedQueryParts = array();
-$oPlaceLookup = new PlaceLookup($oDB);
+$oPlaceLookup = new Nominatim\PlaceLookup($oDB);
$oPlaceLookup->setLanguagePreference($aLangPrefOrder);
$oPlaceLookup->setIncludeAddressDetails($oParams->getBool('addressdetails', true));
$oPlaceLookup->setIncludeExtraTags($oParams->getBool('extratags', false));
require_once(CONST_BasePath.'/lib/output.php');
ini_set('memory_limit', '200M');
-$oParams = new ParameterParser();
+$oParams = new Nominatim\ParameterParser();
$sOutputFormat = 'html';
$iDays = $oParams->getInt('days', 1);
require_once(CONST_BasePath.'/lib/output.php');
ini_set('memory_limit', '200M');
-$oParams = new ParameterParser();
+$oParams = new Nominatim\ParameterParser();
$bAsGeoJSON = $oParams->getBool('polygon_geojson');
$bAsKML = $oParams->getBool('polygon_kml');
$hLog = logStart($oDB, 'reverse', $_SERVER['QUERY_STRING'], $aLangPrefOrder);
-$oPlaceLookup = new PlaceLookup($oDB);
+$oPlaceLookup = new Nominatim\PlaceLookup($oDB);
$oPlaceLookup->setLanguagePreference($aLangPrefOrder);
$oPlaceLookup->setIncludeAddressDetails($oParams->getBool('addressdetails', true));
$oPlaceLookup->setIncludeExtraTags($oParams->getBool('extratags', false));
if ($sOsmType && $iOsmId > 0) {
$aPlace = $oPlaceLookup->lookupOSMID($sOsmType, $iOsmId);
} elseif ($fLat !== false && $fLon !== false) {
- $oReverseGeocode = new ReverseGeocode($oDB);
+ $oReverseGeocode = new Nominatim\ReverseGeocode($oDB);
$oReverseGeocode->setZoom($oParams->getInt('zoom', 18));
$aLookup = $oReverseGeocode->lookup($fLat, $fLon);
ini_set('memory_limit', '200M');
$oDB =& getDB();
-$oParams = new ParameterParser();
+$oParams = new Nominatim\ParameterParser();
-$oGeocode = new Geocode($oDB);
+$oGeocode = new Nominatim\Geocode($oDB);
$aLangPrefOrder = $oParams->getPreferredLanguages();
$oGeocode->setLanguagePreference($aLangPrefOrder);
$aBatchResults = array();
foreach ($aBatch as $aBatchParams) {
$oBatchGeocode = clone $oGeocode;
- $oBatchParams = new ParameterParser($aBatchParams);
+ $oBatchParams = new Nominatim\ParameterParser($aBatchParams);
$oBatchGeocode->loadParamArray($oBatchParams);
$oBatchGeocode->setQueryFromParams($oBatchParams);
$aSearchResults = $oBatchGeocode->lookup();