X-Git-Url: https://git.openstreetmap.org./nominatim.git/blobdiff_plain/986956e4b43c8ca1890125c9cafcbb97bcc5325a..6b52e3765c7de9fa4831470d5f079b37e45d92bf:/lib/PlaceLookup.php diff --git a/lib/PlaceLookup.php b/lib/PlaceLookup.php index c5aea588..9f4f143e 100644 --- a/lib/PlaceLookup.php +++ b/lib/PlaceLookup.php @@ -163,8 +163,8 @@ class PlaceLookup public function lookupOSMID($sType, $iID) { - $sSQL = "select place_id from placex where osm_type = '".$sType."' and osm_id = ".$iID; - $iPlaceID = chksql($this->oDB->getOne($sSQL)); + $sSQL = 'select place_id from placex where osm_type = :type and osm_id = :id'; + $iPlaceID = $this->oDB->getOne($sSQL, array(':type' => $sType, ':id' => $iID)); if (!$iPlaceID) { return null; @@ -215,7 +215,7 @@ class PlaceLookup 'ST_Collect(centroid)', 'min(CASE WHEN placex.rank_search < 28 THEN placex.place_id ELSE placex.parent_place_id END)' ); - $sSQL .= " (extratags->'place') AS extra_place "; + $sSQL .= " COALESCE(extratags->'place', extratags->'linked_place') AS extra_place "; $sSQL .= ' FROM placex'; $sSQL .= " WHERE place_id in ($sPlaceIDs) "; $sSQL .= ' AND ('; @@ -248,7 +248,7 @@ class PlaceLookup $sSQL .= ' ref, '; if ($this->bExtraTags) $sSQL .= 'extratags, '; if ($this->bNameDetails) $sSQL .= 'name, '; - $sSQL .= " extratags->'place' "; + $sSQL .= ' extra_place '; $aSubSelects[] = $sSQL; } @@ -425,9 +425,10 @@ class PlaceLookup $sSQL = join(' UNION ', $aSubSelects); Debug::printSQL($sSQL); - $aPlaces = chksql($this->oDB->getAll($sSQL), 'Could not lookup place'); + $aPlaces = $this->oDB->getAll($sSQL, null, 'Could not lookup place'); foreach ($aPlaces as &$aPlace) { + $aPlace['importance'] = (float) $aPlace['importance']; if ($this->bAddressDetails) { // to get addressdetails for tiger data, the housenumber is needed $aPlace['address'] = new AddressDetails( @@ -514,7 +515,7 @@ class PlaceLookup $sSQL .= $sFrom; } - $aPointPolygon = chksql($this->oDB->getRow($sSQL), 'Could not get outline'); + $aPointPolygon = $this->oDB->getRow($sSQL, null, 'Could not get outline'); if ($aPointPolygon && $aPointPolygon['place_id']) { if ($aPointPolygon['centrelon'] !== null && $aPointPolygon['centrelat'] !== null) {