adapt to code style conventions

This commit is contained in:
Markus Gail
2016-03-21 12:42:38 +01:00
parent f6127df15d
commit e94b667e16
4 changed files with 105 additions and 106 deletions

View File

@@ -393,7 +393,7 @@
function getDetails($aPlaceIDs) function getDetails($aPlaceIDs)
{ {
//$aPlaceIDs is an array with key: placeID and value: tiger-housenumber, if found, else -1 //$aPlaceIDs is an array with key: placeID and value: tiger-housenumber, if found, else -1
if (sizeof($aPlaceIDs) == 0) return array(); if (sizeof($aPlaceIDs) == 0) return array();
$sLanguagePrefArraySQL = "ARRAY[".join(',',array_map("getDBQuoted",$this->aLangPrefOrder))."]"; $sLanguagePrefArraySQL = "ARRAY[".join(',',array_map("getDBQuoted",$this->aLangPrefOrder))."]";
@@ -434,54 +434,54 @@
if (30 >= $this->iMinAddressRank && 30 <= $this->iMaxAddressRank) if (30 >= $this->iMinAddressRank && 30 <= $this->iMaxAddressRank)
{ {
//query also location_property_tiger and location_property_aux //query also location_property_tiger and location_property_aux
//Tiger search only if a housenumber was searched and if it was found (i.e. aPlaceIDs[placeID] = housenumber != -1) (realized through a join) //Tiger search only if a housenumber was searched and if it was found (i.e. aPlaceIDs[placeID] = housenumber != -1) (realized through a join)
//only Tiger housenumbers need to be interpolated, because they are saved as lines with start- and endnumber, the common osm housenumbers are usually saved as points //only Tiger housenumbers need to be interpolated, because they are saved as lines with start- and endnumber, the common osm housenumbers are usually saved as points
$sHousenumbers = ""; $sHousenumbers = "";
$i=0; $i=0;
$length=count($aPlaceIDs); $length=count($aPlaceIDs);
foreach($aPlaceIDs as $placeID => $housenumber){ foreach($aPlaceIDs as $placeID => $housenumber){
$i++; $i++;
$sHousenumbers .= "(".$placeID.",".$housenumber.")"; $sHousenumbers .= "(".$placeID.", ".$housenumber.")";
if($i<$length) if($i<$length)
$sHousenumbers .= ","; $sHousenumbers .= ", ";
} }
$sSQL .= "union "; $sSQL .= "union ";
$sSQL .= "select 'T' as osm_type, place_id as osm_id,'place' as class,'house' as type,null as admin_level,30 as rank_search,30 as rank_address,min(place_id) as place_id, min(parent_place_id) as parent_place_id,'us' as country_code"; $sSQL .= "select 'T' as osm_type, place_id as osm_id, 'place' as class, 'house' as type, null as admin_level, 30 as rank_search, 30 as rank_address, min(place_id) as place_id, min(parent_place_id) as parent_place_id, 'us' as country_code";
$sSQL .= ", get_address_by_language(place_id, housenumber_for_place, $sLanguagePrefArraySQL) as langaddress "; $sSQL .= ", get_address_by_language(place_id, housenumber_for_place, $sLanguagePrefArraySQL) as langaddress ";
$sSQL .= ", null as placename"; $sSQL .= ", null as placename";
$sSQL .= ", null as ref"; $sSQL .= ", null as ref";
if ($this->bIncludeExtraTags) $sSQL .= ", null as extra"; if ($this->bIncludeExtraTags) $sSQL .= ", null as extra";
if ($this->bIncludeNameDetails) $sSQL .= ", null as names"; if ($this->bIncludeNameDetails) $sSQL .= ", null as names";
$sSQL .= ", avg(st_x(point)) as lon, avg(st_y(point)) as lat"; $sSQL .= ", avg(st_x(point)) as lon, avg(st_y(point)) as lat";
$sSQL .= $sImportanceSQL.", -1.15 as importance "; $sSQL .= $sImportanceSQL.", -1.15 as importance ";
$sSQL .= ", (select max(p.importance*(p.rank_address+2)) from place_addressline s, placex p where s.place_id = min(blub.parent_place_id) and p.place_id = s.address_place_id and s.isaddress and p.importance is not null) as addressimportance "; $sSQL .= ", (select max(p.importance*(p.rank_address+2)) from place_addressline s, placex p where s.place_id = min(blub.parent_place_id) and p.place_id = s.address_place_id and s.isaddress and p.importance is not null) as addressimportance ";
$sSQL .= ", null as extra_place "; $sSQL .= ", null as extra_place ";
$sSQL .= " from (select place_id"; $sSQL .= " from (select place_id";
//interpolate the Tiger housenumbers here //interpolate the Tiger housenumbers here
$sSQL .= ",ST_LineInterpolatePoint(linegeo, (housenumber_for_place-startnumber::float)/(endnumber-startnumber)::float) as point, parent_place_id, housenumber_for_place "; $sSQL .= ", ST_LineInterpolatePoint(linegeo, (housenumber_for_place-startnumber::float)/(endnumber-startnumber)::float) as point, parent_place_id, housenumber_for_place ";
$sSQL .= "from (location_property_tiger "; $sSQL .= "from (location_property_tiger ";
$sSQL .= " join (values ".$sHousenumbers.") as housenumbers(place_id,housenumber_for_place) using(place_id)) "; $sSQL .= " join (values ".$sHousenumbers.") as housenumbers(place_id, housenumber_for_place) using(place_id)) ";
$sSQL .= " where housenumber_for_place>=0 and 30 between $this->iMinAddressRank and $this->iMaxAddressRank) as blub"; //postgres wants an alias here $sSQL .= " where housenumber_for_place>=0 and 30 between $this->iMinAddressRank and $this->iMaxAddressRank) as blub"; //postgres wants an alias here
$sSQL .= " group by place_id, housenumber_for_place"; //is this group by really needed?, place_id + housenumber (in combination) are unique $sSQL .= " group by place_id, housenumber_for_place"; //is this group by really needed?, place_id + housenumber (in combination) are unique
if (!$this->bDeDupe) $sSQL .= ",place_id "; if (!$this->bDeDupe) $sSQL .= ", place_id ";
$sSQL .= " union "; $sSQL .= " union ";
$sSQL .= "select 'L' as osm_type,place_id as osm_id,'place' as class,'house' as type,null as admin_level,30 as rank_search,30 as rank_address,min(place_id) as place_id, min(parent_place_id) as parent_place_id,'us' as country_code,"; $sSQL .= "select 'L' as osm_type, place_id as osm_id, 'place' as class, 'house' as type, null as admin_level, 0 as rank_search, 0 as rank_address, min(place_id) as place_id, min(parent_place_id) as parent_place_id, 'us' as country_code, ";
$sSQL .= "get_address_by_language(place_id, -1, $sLanguagePrefArraySQL) as langaddress,"; $sSQL .= "get_address_by_language(place_id, -1, $sLanguagePrefArraySQL) as langaddress, ";
$sSQL .= "null as placename,"; $sSQL .= "null as placename, ";
$sSQL .= "null as ref,"; $sSQL .= "null as ref, ";
if ($this->bIncludeExtraTags) $sSQL .= "null as extra,"; if ($this->bIncludeExtraTags) $sSQL .= "null as extra, ";
if ($this->bIncludeNameDetails) $sSQL .= "null as names,"; if ($this->bIncludeNameDetails) $sSQL .= "null as names, ";
$sSQL .= "avg(ST_X(centroid)) as lon,avg(ST_Y(centroid)) as lat, "; $sSQL .= "avg(ST_X(centroid)) as lon, avg(ST_Y(centroid)) as lat, ";
$sSQL .= $sImportanceSQL."-1.10 as importance, "; $sSQL .= $sImportanceSQL."-1.10 as importance, ";
$sSQL .= "(select max(p.importance*(p.rank_address+2)) from place_addressline s, placex p where s.place_id = min(location_property_aux.parent_place_id) and p.place_id = s.address_place_id and s.isaddress and p.importance is not null) as addressimportance, "; $sSQL .= "(select max(p.importance*(p.rank_address+2)) from place_addressline s, placex p where s.place_id = min(location_property_aux.parent_place_id) and p.place_id = s.address_place_id and s.isaddress and p.importance is not null) as addressimportance, ";
$sSQL .= "null as extra_place "; $sSQL .= "null as extra_place ";
$sSQL .= "from location_property_aux where place_id in ($sPlaceIDs) "; $sSQL .= "from location_property_aux where place_id in ($sPlaceIDs) ";
$sSQL .= "and 30 between $this->iMinAddressRank and $this->iMaxAddressRank "; $sSQL .= "and 30 between $this->iMinAddressRank and $this->iMaxAddressRank ";
$sSQL .= "group by place_id"; $sSQL .= "group by place_id";
if (!$this->bDeDupe) $sSQL .= ",place_id"; if (!$this->bDeDupe) $sSQL .= ", place_id";
$sSQL .= ",get_address_by_language(place_id, -1, $sLanguagePrefArraySQL) "; $sSQL .= ", get_address_by_language(place_id, -1, $sLanguagePrefArraySQL) ";
} }
$sSQL .= " order by importance desc"; $sSQL .= " order by importance desc";
@@ -1098,7 +1098,7 @@
// TODO: suggestions // TODO: suggestions
// Start the search process // Start the search process
// array with: placeid => -1 | tiger-housenumber // array with: placeid => -1 | tiger-housenumber
$aResultPlaceIDs = array(); $aResultPlaceIDs = array();
$aGroupedSearches = $this->getGroupedSearches($aSearches, $aPhraseTypes, $aPhrases, $aValidTokens, $aWordFrequencyScores, $bStructuredPhrases); $aGroupedSearches = $this->getGroupedSearches($aSearches, $aPhraseTypes, $aPhrases, $aValidTokens, $aWordFrequencyScores, $bStructuredPhrases);
@@ -1216,7 +1216,7 @@
foreach($aSearches as $aSearch) foreach($aSearches as $aSearch)
{ {
$iQueryLoop++; $iQueryLoop++;
$searchedHousenumber=-1; $searchedHousenumber=-1;
if (CONST_Debug) { echo "<hr><b>Search Loop, group $iGroupLoop, loop $iQueryLoop</b>"; } if (CONST_Debug) { echo "<hr><b>Search Loop, group $iGroupLoop, loop $iQueryLoop</b>"; }
if (CONST_Debug) _debugDumpGroupedSearches(array($iGroupedRank => array($aSearch)), $aValidTokens); if (CONST_Debug) _debugDumpGroupedSearches(array($iGroupedRank => array($aSearch)), $aValidTokens);
@@ -1442,45 +1442,44 @@
if (CONST_Debug) var_dump($sSQL); if (CONST_Debug) var_dump($sSQL);
$aPlaceIDs = $this->oDB->getCol($sSQL); $aPlaceIDs = $this->oDB->getCol($sSQL);
} }
//if nothing was found in placex or location_property_aux, then search in Tiger data for this housenumber(location_property_tiger) //if nothing was found in placex or location_property_aux, then search in Tiger data for this housenumber(location_property_tiger)
$searchedHousenumber = intval($aSearch['sHouseNumber']); $searchedHousenumber = intval($aSearch['sHouseNumber']);
if (!sizeof($aPlaceIDs)) if (!sizeof($aPlaceIDs))
{ {
//$sSQL = "select place_id from location_property_tiger where parent_place_id in (".$sPlaceIDs.") and housenumber = '".pg_escape_string($aSearch['sHouseNumber'])."'";
//new query for lines, not housenumbers anymore //new query for lines, not housenumbers anymore
if($searchedHousenumber%2==0){ if($searchedHousenumber%2==0){
//if housenumber is even, look for housenumber in streets with interpolationtype even or all //if housenumber is even, look for housenumber in streets with interpolationtype even or all
$sSQL = "select distinct place_id from location_property_tiger where parent_place_id in (".$sPlaceIDs.") and (interpolationtype='even' or interpolationtype='all') and ".$searchedHousenumber.">=startnumber and ".$searchedHousenumber."<=endnumber"; $sSQL = "select distinct place_id from location_property_tiger where parent_place_id in (".$sPlaceIDs.") and (interpolationtype='even' or interpolationtype='all') and ".$searchedHousenumber.">=startnumber and ".$searchedHousenumber."<=endnumber";
}else{ }else{
//look for housenumber in streets with interpolationtype odd or all //look for housenumber in streets with interpolationtype odd or all
$sSQL = "select distinct place_id from location_property_tiger where parent_place_id in (".$sPlaceIDs.") and (interpolationtype='odd' or interpolationtype='all') and ".$searchedHousenumber.">=startnumber and ".$searchedHousenumber."<=endnumber"; $sSQL = "select distinct place_id from location_property_tiger where parent_place_id in (".$sPlaceIDs.") and (interpolationtype='odd' or interpolationtype='all') and ".$searchedHousenumber.">=startnumber and ".$searchedHousenumber."<=endnumber";
} }
if (sizeof($this->aExcludePlaceIDs)) if (sizeof($this->aExcludePlaceIDs))
{ {
$sSQL .= " and place_id not in (".join(',',$this->aExcludePlaceIDs).")"; $sSQL .= " and place_id not in (".join(',', $this->aExcludePlaceIDs).")";
} }
//$sSQL .= " limit $this->iLimit"; //$sSQL .= " limit $this->iLimit";
if (CONST_Debug) var_dump($sSQL); if (CONST_Debug) var_dump($sSQL);
//get place IDs //get place IDs
$aPlaceIDs = $this->oDB->getCol($sSQL,0); $aPlaceIDs = $this->oDB->getCol($sSQL, 0);
} }
// Fallback to the road (if no housenumber was found) // Fallback to the road (if no housenumber was found)
if (!sizeof($aPlaceIDs) && preg_match('/[0-9]+/', $aSearch['sHouseNumber'])) if (!sizeof($aPlaceIDs) && preg_match('/[0-9]+/', $aSearch['sHouseNumber']))
{ {
$aPlaceIDs = $aRoadPlaceIDs; $aPlaceIDs = $aRoadPlaceIDs;
//set to -1, if no housenumbers were found //set to -1, if no housenumbers were found
$searchedHousenumber=-1; $searchedHousenumber=-1;
}else{ }else{
//housenumber was found, remains saved in searchedHousenumber //housenumber was found, remains saved in searchedHousenumber
} }
} }
if ($aSearch['sClass'] && sizeof($aPlaceIDs)) if ($aSearch['sClass'] && sizeof($aPlaceIDs))
{ {
$sPlaceIDs = join(',',$aPlaceIDs); $sPlaceIDs = join(',', aPlaceIDs);
$aClassPlaceIDs = array(); $aClassPlaceIDs = array();
if (!$aSearch['sOperator'] || $aSearch['sOperator'] == 'name') if (!$aSearch['sOperator'] || $aSearch['sOperator'] == 'name')
@@ -1604,7 +1603,7 @@
foreach($aPlaceIDs as $iPlaceID) foreach($aPlaceIDs as $iPlaceID)
{ {
// array for placeID => -1 | Tiger housenumber // array for placeID => -1 | Tiger housenumber
$aResultPlaceIDs[$iPlaceID] = $searchedHousenumber; $aResultPlaceIDs[$iPlaceID] = $searchedHousenumber;
} }
if ($iQueryLoop > 20) break; if ($iQueryLoop > 20) break;
@@ -1613,7 +1612,7 @@
if (isset($aResultPlaceIDs) && sizeof($aResultPlaceIDs) && ($this->iMinAddressRank != 0 || $this->iMaxAddressRank != 30)) if (isset($aResultPlaceIDs) && sizeof($aResultPlaceIDs) && ($this->iMinAddressRank != 0 || $this->iMaxAddressRank != 30))
{ {
// Need to verify passes rank limits before dropping out of the loop (yuk!) // Need to verify passes rank limits before dropping out of the loop (yuk!)
// reduces the number of place ids, like a filter // reduces the number of place ids, like a filter
$sSQL = "select place_id from placex where place_id in (".join(',',array_keys($aResultPlaceIDs)).") "; $sSQL = "select place_id from placex where place_id in (".join(',',array_keys($aResultPlaceIDs)).") ";
$sSQL .= "and (placex.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank "; $sSQL .= "and (placex.rank_address between $this->iMinAddressRank and $this->iMaxAddressRank ";
if (14 >= $this->iMinAddressRank && 14 <= $this->iMaxAddressRank) $sSQL .= " OR (extratags->'place') = 'city'"; if (14 >= $this->iMinAddressRank && 14 <= $this->iMaxAddressRank) $sSQL .= " OR (extratags->'place') = 'city'";
@@ -1624,11 +1623,11 @@
$sSQL .= ")"; $sSQL .= ")";
if (CONST_Debug) var_dump($sSQL); if (CONST_Debug) var_dump($sSQL);
$aFilteredPlaceIDs = $this->oDB->getCol($sSQL); $aFilteredPlaceIDs = $this->oDB->getCol($sSQL);
$tempIDs = array(); $tempIDs = array();
foreach($aFilteredPlaceIDs as $placeID){ foreach($aFilteredPlaceIDs as $placeID){
$tempIDs[$placeID]= $aResultPlaceIDs[$placeID]; //assign housenumber to placeID $tempIDs[$placeID]= $aResultPlaceIDs[$placeID]; //assign housenumber to placeID
} }
$aResultPlaceIDs=$tempIDs; $aResultPlaceIDs=$tempIDs;
} }
//exit; //exit;
@@ -1720,10 +1719,10 @@
{ {
$aResult['label'] = $aClassType[$aResult['class'].':'.$aResult['type']]['label']; $aResult['label'] = $aClassType[$aResult['class'].':'.$aResult['type']]['label'];
} }
// if tag '&addressdetails=1' is set in query // if tag '&addressdetails=1' is set in query
if ($this->bIncludeAddressDetails) if ($this->bIncludeAddressDetails)
{ {
// getAddressDetails() is defined in lib.php and uses the SQL function get_addressdata in functions.sql // getAddressDetails() is defined in lib.php and uses the SQL function get_addressdata in functions.sql
$aResult['address'] = getAddressDetails($this->oDB, $sLanguagePrefArraySQL, $aResult['place_id'], $aResult['country_code'], $aResultPlaceIDs[$aResult['place_id']]); $aResult['address'] = getAddressDetails($this->oDB, $sLanguagePrefArraySQL, $aResult['place_id'], $aResult['country_code'], $aResultPlaceIDs[$aResult['place_id']]);
if ($aResult['extra_place'] == 'city' && !isset($aResult['address']['city'])) if ($aResult['extra_place'] == 'city' && !isset($aResult['address']['city']))
{ {

View File

@@ -7,7 +7,7 @@
protected $sType = false; protected $sType = false;
protected $fTigerFraction =-1; protected $fTigerFraction =-1;
protected $aLangPrefOrder = array(); protected $aLangPrefOrder = array();
@@ -117,7 +117,7 @@
{ {
$this->setOSMID($details['osm_type'], $details['osm_id']); $this->setOSMID($details['osm_type'], $details['osm_id']);
} }
if (isset($details['fraction'])) $this->fTigerFraction = $details['fraction']; if (isset($details['fraction'])) $this->fTigerFraction = $details['fraction'];
return $this->lookup(); return $this->lookup();
} }
@@ -140,11 +140,11 @@
if ($this->bNameDetails) $sSQL .= " null as names,"; if ($this->bNameDetails) $sSQL .= " null as names,";
$sSQL .= " ST_X(point) as lon, ST_Y(point) as lat from (select *, ST_LineInterpolatePoint(linegeo, (housenumber-startnumber::float)/(endnumber-startnumber)::float) as point from "; $sSQL .= " ST_X(point) as lon, ST_Y(point) as lat from (select *, ST_LineInterpolatePoint(linegeo, (housenumber-startnumber::float)/(endnumber-startnumber)::float) as point from ";
$sSQL .= " (select *, "; $sSQL .= " (select *, ";
$sSQL .= " CASE WHEN interpolationtype='odd' THEN floor((".$this->fTigerFraction."*(endnumber-startnumber)+startnumber)/2)::int*2+1"; $sSQL .= " CASE WHEN interpolationtype='odd' THEN floor((".$this->fTigerFraction."*(endnumber-startnumber)+startnumber)/2)::int*2+1";
$sSQL .= " WHEN interpolationtype='even' THEN ((".$this->fTigerFraction."*(endnumber-startnumber)+startnumber+1)/2)::int*2"; $sSQL .= " WHEN interpolationtype='even' THEN ((".$this->fTigerFraction."*(endnumber-startnumber)+startnumber+1)/2)::int*2";
$sSQL .= " WHEN interpolationtype='all' THEN (".$this->fTigerFraction."*(endnumber-startnumber)+startnumber)::int"; $sSQL .= " WHEN interpolationtype='all' THEN (".$this->fTigerFraction."*(endnumber-startnumber)+startnumber)::int";
$sSQL .= " END as housenumber"; $sSQL .= " END as housenumber";
$sSQL .= " from location_property_tiger where place_id = ".(int)$this->iPlaceID.") as blub1) as blub2"; $sSQL .= " from location_property_tiger where place_id = ".(int)$this->iPlaceID.") as blub1) as blub2";
} }
else else
{ {
@@ -172,10 +172,10 @@
if ($this->bAddressDetails) if ($this->bAddressDetails)
{ {
if($this->sType == 'tiger') // to get addressdetails for tiger data, the housenumber is needed if($this->sType == 'tiger') // to get addressdetails for tiger data, the housenumber is needed
$aAddress = $this->getAddressNames($aPlace['housenumber']); $aAddress = $this->getAddressNames($aPlace['housenumber']);
else else
$aAddress = $this->getAddressNames(); $aAddress = $this->getAddressNames();
$aPlace['aAddress'] = $aAddress; $aPlace['aAddress'] = $aAddress;
} }

View File

@@ -193,7 +193,7 @@
$aPlace = $aPlaceTiger; $aPlace = $aPlaceTiger;
$iPlaceID = $aPlaceTiger['place_id']; $iPlaceID = $aPlaceTiger['place_id'];
$iParentPlaceID = $aPlaceTiger['parent_place_id']; // the street $iParentPlaceID = $aPlaceTiger['parent_place_id']; // the street
$iFraction = $aPlaceTiger['fraction']; $iFraction = $aPlaceTiger['fraction'];
} }
} }

View File

@@ -77,7 +77,7 @@
function getProcessorCount() function getProcessorCount()
{ {
$sCPU = file_get_contents('/proc/cpuinfo'); $sCPU = file_get_contents('/proc/cpuinfo');
preg_match_all('#processor : [0-9]+#', $sCPU, $aMatches); preg_match_all('#processor : [0-9]+#', $sCPU, $aMatches);
return sizeof($aMatches[0]); return sizeof($aMatches[0]);
} }
@@ -115,8 +115,8 @@
return ($a['aPointPolygon']['numfeatures'] > $b['aPointPolygon']['numfeatures']?-1:1); return ($a['aPointPolygon']['numfeatures'] > $b['aPointPolygon']['numfeatures']?-1:1);
if ($a['aPointPolygon']['area'] != $b['aPointPolygon']['area']) if ($a['aPointPolygon']['area'] != $b['aPointPolygon']['area'])
return ($a['aPointPolygon']['area'] > $b['aPointPolygon']['area']?-1:1); return ($a['aPointPolygon']['area'] > $b['aPointPolygon']['area']?-1:1);
// if ($a['levenshtein'] != $b['levenshtein']) // if ($a['levenshtein'] != $b['levenshtein'])
// return ($a['levenshtein'] < $b['levenshtein']?-1:1); // return ($a['levenshtein'] < $b['levenshtein']?-1:1);
if ($a['rank_search'] != $b['rank_search']) if ($a['rank_search'] != $b['rank_search'])
return ($a['rank_search'] < $b['rank_search']?-1:1); return ($a['rank_search'] < $b['rank_search']?-1:1);
*/ */