rename parentof to hierarchy and other lonvia Mar/29 PR feedback

This commit is contained in:
marc tobias
2018-04-05 15:22:50 +02:00
committed by Sarah Hoffmann
parent 45aef06d00
commit 31c7f25541
4 changed files with 50 additions and 50 deletions

View File

@@ -114,7 +114,7 @@
kv('Name' , hash_to_subtable($aPointDetails['aNames']) ); kv('Name' , hash_to_subtable($aPointDetails['aNames']) );
kv('Type' , $aPointDetails['class'].':'.$aPointDetails['type'] ); kv('Type' , $aPointDetails['class'].':'.$aPointDetails['type'] );
kv('Last Updated' , $aPointDetails['indexed_date'] ); kv('Last Updated' , (new DateTime('@'.$aPointDetails['indexed_epoch']))->format(DateTime::RFC822) );
kv('Admin Level' , $aPointDetails['admin_level'] ); kv('Admin Level' , $aPointDetails['admin_level'] );
kv('Rank' , $aPointDetails['rank_search_label'] ); kv('Rank' , $aPointDetails['rank_search_label'] );
if ($aPointDetails['calculated_importance']) { if ($aPointDetails['calculated_importance']) {
@@ -199,12 +199,12 @@
} }
} }
if (!empty($aParentOfLines)) if (!empty($aHierarchyLines))
{ {
headline('Parent Of'); headline('Parent Of');
$aGroupedAddressLines = array(); $aGroupedAddressLines = array();
foreach($aParentOfLines as $aAddressLine) foreach($aHierarchyLines as $aAddressLine)
{ {
if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class']; if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class'];
else $sType = $aAddressLine['type']; else $sType = $aAddressLine['type'];
@@ -213,17 +213,17 @@
$aGroupedAddressLines[$sType] = array(); $aGroupedAddressLines[$sType] = array();
$aGroupedAddressLines[$sType][] = $aAddressLine; $aGroupedAddressLines[$sType][] = $aAddressLine;
} }
foreach($aGroupedAddressLines as $sGroupHeading => $aParentOfLines) foreach($aGroupedAddressLines as $sGroupHeading => $aHierarchyLines)
{ {
$sGroupHeading = ucwords($sGroupHeading); $sGroupHeading = ucwords($sGroupHeading);
headline3($sGroupHeading); headline3($sGroupHeading);
foreach($aParentOfLines as $aAddressLine) foreach($aHierarchyLines as $aAddressLine)
{ {
_one_row($aAddressLine); _one_row($aAddressLine);
} }
} }
if (count($aParentOfLines) >= 500) { if (count($aHierarchyLines) >= 500) {
echo '<p>There are more child objects which are not shown.</p>'; echo '<p>There are more child objects which are not shown.</p>';
} }
} }

View File

@@ -17,16 +17,16 @@ $aPlaceDetails['names'] = $aPointDetails['aNames'];
$aPlaceDetails['addresstags'] = $aPointDetails['aAddressTags']; $aPlaceDetails['addresstags'] = $aPointDetails['aAddressTags'];
$aPlaceDetails['housenumber'] = $aPointDetails['housenumber']; $aPlaceDetails['housenumber'] = $aPointDetails['housenumber'];
$aPlaceDetails['postcode'] = $aPointDetails['postcode']; // computed $aPlaceDetails['calculated_postcode'] = $aPointDetails['postcode'];
$aPlaceDetails['country_code'] = $aPointDetails['country_code']; $aPlaceDetails['country_code'] = $aPointDetails['country_code'];
$aPlaceDetails['indexed_date'] = $aPointDetails['indexed_date']; $aPlaceDetails['indexed_date'] = (new DateTime('@'.$aPointDetails['indexed_epoch']))->format(DateTime::RFC822);
$aPlaceDetails['importance'] = (float) $aPointDetails['importance']; $aPlaceDetails['importance'] = (float) $aPointDetails['importance'];
$aPlaceDetails['calculated_importance'] = (float) $aPointDetails['calculated_importance']; $aPlaceDetails['calculated_importance'] = (float) $aPointDetails['calculated_importance'];
$aPlaceDetails['extratags'] = $aPointDetails['aExtraTags']; $aPlaceDetails['extratags'] = $aPointDetails['aExtraTags'];
$aPlaceDetails['calculated_wikipedia'] = $aPointDetails['wikipedia']; $aPlaceDetails['calculated_wikipedia'] = $aPointDetails['wikipedia'];
$aPlaceDetails['icon'] = $aPointDetails['icon']; $aPlaceDetails['icon'] = CONST_Website_BaseURL.'images/mapicons/'.$aPointDetails['icon'].'.n.32.png';
$aPlaceDetails['rank_address'] = (int) $aPointDetails['rank_address']; $aPlaceDetails['rank_address'] = (int) $aPointDetails['rank_address'];
$aPlaceDetails['rank_search'] = (int) $aPointDetails['rank_search']; $aPlaceDetails['rank_search'] = (int) $aPointDetails['rank_search'];
@@ -39,22 +39,23 @@ $aPlaceDetails['lon'] = (float) $aPointDetails['lon'];
$aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson']); $aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson']);
$funcMapAddressLines = function ($aFull) { $funcMapAddressLine = function ($aFull) {
$aMapped = [ $aMapped = [
'localname' => $aFull['localname'], 'localname' => $aFull['localname'],
'place_id' => (int) $aFull['place_id'], 'place_id' => isset($aFull['place_id']) ? (int) $aFull['place_id'] : null,
'osm_id' => (int) $aFull['osm_id'], 'osm_id' => isset($aFull['osm_id']) ? (int) $aFull['osm_id'] : null,
'osm_type' => formatOSMType($aFull['osm_type']), 'osm_type' => isset($aFull['osm_type']) ? $aFull['osm_type'] : null,
'class' => $aFull['class'], 'class' => $aFull['class'],
'type' => $aFull['type'], 'type' => $aFull['type'],
'admin_level' => (int) $aFull['admin_level'], 'admin_level' => isset($aFull['admin_level']) ? (int) $aFull['admin_level'] : null,
'rank_address' => (int) $aFull['rank_address'], 'rank_address' => $aFull['rank_address'] ? (int) $aFull['rank_address'] : null,
'distance' => (float) $aFull['distance'] 'distance' => (float) $aFull['distance']
]; ];
return $aMapped; return $aMapped;
}; };
$funcMapKeywords = function ($aFull) { $funcMapKeyword = function ($aFull) {
$aMapped = [ $aMapped = [
'id' => (int) $aFull['word_id'], 'id' => (int) $aFull['word_id'],
'token' => $aFull['word_token'] 'token' => $aFull['word_token']
@@ -63,39 +64,38 @@ $funcMapKeywords = function ($aFull) {
}; };
if ($aAddressLines) { if ($aAddressLines) {
$aPlaceDetails['address'] = array_map($funcMapAddressLines, $aAddressLines); $aPlaceDetails['address'] = array_map($funcMapAddressLine, $aAddressLines);
} }
if ($aLinkedLines) { if ($aLinkedLines) {
$aPlaceDetails['linked_places'] = array_map($funcMapAddressLines, $aLinkedLines); $aPlaceDetails['linked_places'] = array_map($funcMapAddressLine, $aLinkedLines);
} }
if ($bIncludeKeywords) { if ($bIncludeKeywords) {
$aPlaceDetails['keywords'] = array(); $aPlaceDetails['keywords'] = array();
if ($aPlaceSearchNameKeywords) { if ($aPlaceSearchNameKeywords) {
$aPlaceDetails['keywords']['name'] = array_map($funcMapKeywords, $aPlaceSearchNameKeywords); $aPlaceDetails['keywords']['name'] = array_map($funcMapKeyword, $aPlaceSearchNameKeywords);
} }
if ($aPlaceSearchAddressKeywords) { if ($aPlaceSearchAddressKeywords) {
$aPlaceDetails['keywords']['address'] = array_map($funcMapKeywords, $aPlaceSearchAddressKeywords); $aPlaceDetails['keywords']['address'] = array_map($funcMapKeyword, $aPlaceSearchAddressKeywords);
} }
} }
if ($bIncludeChildPlaces) { if ($bIncludeHierarchy) {
$aPlaceDetails['parentof'] = array_map($funcMapAddressLines, $aParentOfLines); if ($bGroupHierarchy) {
$aPlaceDetails['hierarchy'] = array();
if ($bGroupChildPlaces) { foreach ($aHierarchyLines as $aAddressLine) {
$aGroupedAddressLines = [];
foreach ($aParentOfLines as $aAddressLine) {
if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class']; if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class'];
else $sType = $aAddressLine['type']; else $sType = $aAddressLine['type'];
if (!isset($aGroupedAddressLines[$sType])) if (!isset($aPlaceDetails['hierarchy'][$sType]))
$aGroupedAddressLines[$sType] = []; $aPlaceDetails['hierarchy'][$sType] = array();
$aGroupedAddressLines[$sType][] = $aAddressLine; $aPlaceDetails['hierarchy'][$sType][] = $funcMapAddressLine($aAddressLine);
} }
$aPlaceDetails['parentof'] = $aGroupedAddressLines; } else {
$aPlaceDetails['hierarchy'] = array_map($funcMapAddressLine, $aHierarchyLines);
} }
} }

View File

@@ -29,12 +29,12 @@ Feature: Object details
Then the result is valid json Then the result is valid json
And result has attributes linked_places And result has attributes linked_places
Scenario: JSON Details with childplaces Scenario: JSON Details with hierarchy
When sending json details query for W78099902 When sending json details query for W78099902
| childplaces | | hierarchy |
| 1 | | 1 |
Then the result is valid json Then the result is valid json
And result has attributes parentof And result has attributes hierarchy
Scenario: JSON Details with linkedplaces Scenario: JSON Details with linkedplaces
When sending json details query for R123924 When sending json details query for R123924

View File

@@ -19,11 +19,11 @@ $sOsmType = $oParams->getSet('osmtype', array('N', 'W', 'R'));
$iOsmId = $oParams->getInt('osmid', -1); $iOsmId = $oParams->getInt('osmid', -1);
$sClass = $oParams->getString('class'); $sClass = $oParams->getString('class');
$bIncludeKeywords = $oParams->getBool('keywords'); $bIncludeKeywords = $oParams->getBool('keywords', false);
$bIncludeAddressDetails = $oParams->getBool('addressdetails', $sOutputFormat == 'html'); $bIncludeAddressDetails = $oParams->getBool('addressdetails', $sOutputFormat == 'html');
$bIncludeLinkedPlaces = $oParams->getBool('linkedplaces', $sOutputFormat == 'html'); $bIncludeLinkedPlaces = $oParams->getBool('linkedplaces', true);
$bIncludeChildPlaces = $oParams->getBool('childplaces', $sOutputFormat == 'html'); $bIncludeHierarchy = $oParams->getBool('hierarchy', $sOutputFormat == 'html');
$bGroupChildPlaces = $oParams->getBool('group_childplaces', false); $bGroupHierarchy = $oParams->getBool('group_hierarchy', false);
$bIncludePolygonAsGeoJSON = $oParams->getBool('polygon_geojson', $sOutputFormat == 'html'); $bIncludePolygonAsGeoJSON = $oParams->getBool('polygon_geojson', $sOutputFormat == 'html');
$oDB =& getDB(); $oDB =& getDB();
@@ -102,7 +102,7 @@ $hLog = logStart($oDB, 'details', $_SERVER['QUERY_STRING'], $aLangPrefOrder);
$sSQL = 'SELECT place_id, osm_type, osm_id, class, type, name, admin_level,'; $sSQL = 'SELECT place_id, osm_type, osm_id, class, type, name, admin_level,';
$sSQL .= ' housenumber, postcode, country_code,'; $sSQL .= ' housenumber, postcode, country_code,';
$sSQL .= ' importance, wikipedia,'; $sSQL .= ' importance, wikipedia,';
$sSQL .= " to_char(indexed_date, 'YYYY-MM-DD HH24:MI') AS indexed_date,"; $sSQL .= ' ROUND(EXTRACT(epoch FROM indexed_date)) AS indexed_epoch,';
$sSQL .= ' parent_place_id, '; $sSQL .= ' parent_place_id, ';
$sSQL .= ' rank_address, '; $sSQL .= ' rank_address, ';
$sSQL .= ' rank_search, '; $sSQL .= ' rank_search, ';
@@ -150,7 +150,7 @@ $sSQL = 'SELECT (each(name)).key,(each(name)).value FROM placex ';
$sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(name)).key"; $sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(name)).key";
$aPointDetails['aNames'] = $oDB->getAssoc($sSQL); $aPointDetails['aNames'] = $oDB->getAssoc($sSQL);
if (PEAR::isError($aPointDetails['aNames'])) { // possible timeout if (PEAR::isError($aPointDetails['aNames'])) { // possible timeout
$aPointDetails['aNames'] = []; $aPointDetails['aNames'] = array();
} }
// Address tags // Address tags
@@ -158,7 +158,7 @@ $sSQL = 'SELECT (each(address)).key as key,(each(address)).value FROM placex ';
$sSQL .= "WHERE place_id = $iPlaceID ORDER BY key"; $sSQL .= "WHERE place_id = $iPlaceID ORDER BY key";
$aPointDetails['aAddressTags'] = $oDB->getAssoc($sSQL); $aPointDetails['aAddressTags'] = $oDB->getAssoc($sSQL);
if (PEAR::isError($aPointDetails['aAddressTags'])) { // possible timeout if (PEAR::isError($aPointDetails['aAddressTags'])) { // possible timeout
$aPointDetails['aAddressTags'] = []; $aPointDetails['aAddressTags'] = array();
} }
// Extra tags // Extra tags
@@ -166,7 +166,7 @@ $sSQL = 'SELECT (each(extratags)).key,(each(extratags)).value FROM placex ';
$sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(extratags)).key"; $sSQL .= "WHERE place_id = $iPlaceID ORDER BY (each(extratags)).key";
$aPointDetails['aExtraTags'] = $oDB->getAssoc($sSQL); $aPointDetails['aExtraTags'] = $oDB->getAssoc($sSQL);
if (PEAR::isError($aPointDetails['aExtraTags'])) { // possible timeout if (PEAR::isError($aPointDetails['aExtraTags'])) { // possible timeout
$aPointDetails['aExtraTags'] = []; $aPointDetails['aExtraTags'] = array();
} }
// Address // Address
@@ -206,13 +206,13 @@ if ($bIncludeLinkedPlaces) {
$sSQL .= ' housenumber'; $sSQL .= ' housenumber';
$aLinkedLines = $oDB->getAll($sSQL); $aLinkedLines = $oDB->getAll($sSQL);
if (PEAR::isError($aLinkedLines)) { // possible timeout if (PEAR::isError($aLinkedLines)) { // possible timeout
$aLinkedLines = []; $aLinkedLines = array();
} }
} }
// All places this is an imediate parent of // All places this is an imediate parent of
$aParentOfLines = false; $aHierarchyLines = false;
if ($bIncludeChildPlaces) { if ($bIncludeHierarchy) {
$sSQL = 'SELECT obj.place_id, osm_type, osm_id, class, type, housenumber,'; $sSQL = 'SELECT obj.place_id, osm_type, osm_id, class, type, housenumber,';
$sSQL .= " admin_level, rank_address, ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') AS isarea,"; $sSQL .= " admin_level, rank_address, ST_GeometryType(geometry) in ('ST_Polygon','ST_MultiPolygon') AS isarea,";
$sSQL .= " ST_DistanceSpheroid(geometry, placegeometry, 'SPHEROID[\"WGS 84\",6378137,298.257223563, AUTHORITY[\"EPSG\",\"7030\"]]') AS distance, "; $sSQL .= " ST_DistanceSpheroid(geometry, placegeometry, 'SPHEROID[\"WGS 84\",6378137,298.257223563, AUTHORITY[\"EPSG\",\"7030\"]]') AS distance, ";
@@ -238,9 +238,9 @@ if ($bIncludeChildPlaces) {
$sSQL .= ' rank_search ASC, '; $sSQL .= ' rank_search ASC, ';
$sSQL .= ' localname, '; $sSQL .= ' localname, ';
$sSQL .= ' housenumber'; $sSQL .= ' housenumber';
$aParentOfLines = $oDB->getAll($sSQL); $aHierarchyLines = $oDB->getAll($sSQL);
if (PEAR::isError($aParentOfLines)) { // possible timeout if (PEAR::isError($aHierarchyLines)) { // possible timeout
$aParentOfLines = []; $aHierarchyLines = array();
} }
} }
@@ -250,20 +250,20 @@ if ($bIncludeKeywords) {
$sSQL = "SELECT * FROM search_name WHERE place_id = $iPlaceID"; $sSQL = "SELECT * FROM search_name WHERE place_id = $iPlaceID";
$aPlaceSearchName = $oDB->getRow($sSQL); // can be null $aPlaceSearchName = $oDB->getRow($sSQL); // can be null
if (!$aPlaceSearchName || PEAR::isError($aPlaceSearchName)) { // possible timeout if (!$aPlaceSearchName || PEAR::isError($aPlaceSearchName)) { // possible timeout
$aPlaceSearchName = []; $aPlaceSearchName = array();
} }
if (!empty($aPlaceSearchName)) { if (!empty($aPlaceSearchName)) {
$sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['name_vector'], 1, -1).')'; $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['name_vector'], 1, -1).')';
$aPlaceSearchNameKeywords = $oDB->getAll($sSQL); $aPlaceSearchNameKeywords = $oDB->getAll($sSQL);
if (PEAR::isError($aPlaceSearchNameKeywords)) { // possible timeout if (PEAR::isError($aPlaceSearchNameKeywords)) { // possible timeout
$aPlaceSearchNameKeywords = []; $aPlaceSearchNameKeywords = array();
} }
$sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['nameaddress_vector'], 1, -1).')'; $sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['nameaddress_vector'], 1, -1).')';
$aPlaceSearchAddressKeywords = $oDB->getAll($sSQL); $aPlaceSearchAddressKeywords = $oDB->getAll($sSQL);
if (PEAR::isError($aPlaceSearchAddressKeywords)) { // possible timeout if (PEAR::isError($aPlaceSearchAddressKeywords)) { // possible timeout
$aPlaceSearchAddressKeywords = []; $aPlaceSearchAddressKeywords = array();
} }
} }
} }