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('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('Rank' , $aPointDetails['rank_search_label'] );
if ($aPointDetails['calculated_importance']) {
@@ -199,12 +199,12 @@
}
}
if (!empty($aParentOfLines))
if (!empty($aHierarchyLines))
{
headline('Parent Of');
$aGroupedAddressLines = array();
foreach($aParentOfLines as $aAddressLine)
foreach($aHierarchyLines as $aAddressLine)
{
if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class'];
else $sType = $aAddressLine['type'];
@@ -213,17 +213,17 @@
$aGroupedAddressLines[$sType] = array();
$aGroupedAddressLines[$sType][] = $aAddressLine;
}
foreach($aGroupedAddressLines as $sGroupHeading => $aParentOfLines)
foreach($aGroupedAddressLines as $sGroupHeading => $aHierarchyLines)
{
$sGroupHeading = ucwords($sGroupHeading);
headline3($sGroupHeading);
foreach($aParentOfLines as $aAddressLine)
foreach($aHierarchyLines as $aAddressLine)
{
_one_row($aAddressLine);
}
}
if (count($aParentOfLines) >= 500) {
if (count($aHierarchyLines) >= 500) {
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['housenumber'] = $aPointDetails['housenumber'];
$aPlaceDetails['postcode'] = $aPointDetails['postcode']; // computed
$aPlaceDetails['calculated_postcode'] = $aPointDetails['postcode'];
$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['calculated_importance'] = (float) $aPointDetails['calculated_importance'];
$aPlaceDetails['extratags'] = $aPointDetails['aExtraTags'];
$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_search'] = (int) $aPointDetails['rank_search'];
@@ -39,22 +39,23 @@ $aPlaceDetails['lon'] = (float) $aPointDetails['lon'];
$aPlaceDetails['geometry'] = json_decode($aPointDetails['asgeojson']);
$funcMapAddressLines = function ($aFull) {
$funcMapAddressLine = function ($aFull) {
$aMapped = [
'localname' => $aFull['localname'],
'place_id' => (int) $aFull['place_id'],
'osm_id' => (int) $aFull['osm_id'],
'osm_type' => formatOSMType($aFull['osm_type']),
'place_id' => isset($aFull['place_id']) ? (int) $aFull['place_id'] : null,
'osm_id' => isset($aFull['osm_id']) ? (int) $aFull['osm_id'] : null,
'osm_type' => isset($aFull['osm_type']) ? $aFull['osm_type'] : null,
'class' => $aFull['class'],
'type' => $aFull['type'],
'admin_level' => (int) $aFull['admin_level'],
'rank_address' => (int) $aFull['rank_address'],
'admin_level' => isset($aFull['admin_level']) ? (int) $aFull['admin_level'] : null,
'rank_address' => $aFull['rank_address'] ? (int) $aFull['rank_address'] : null,
'distance' => (float) $aFull['distance']
];
return $aMapped;
};
$funcMapKeywords = function ($aFull) {
$funcMapKeyword = function ($aFull) {
$aMapped = [
'id' => (int) $aFull['word_id'],
'token' => $aFull['word_token']
@@ -63,39 +64,38 @@ $funcMapKeywords = function ($aFull) {
};
if ($aAddressLines) {
$aPlaceDetails['address'] = array_map($funcMapAddressLines, $aAddressLines);
$aPlaceDetails['address'] = array_map($funcMapAddressLine, $aAddressLines);
}
if ($aLinkedLines) {
$aPlaceDetails['linked_places'] = array_map($funcMapAddressLines, $aLinkedLines);
$aPlaceDetails['linked_places'] = array_map($funcMapAddressLine, $aLinkedLines);
}
if ($bIncludeKeywords) {
$aPlaceDetails['keywords'] = array();
if ($aPlaceSearchNameKeywords) {
$aPlaceDetails['keywords']['name'] = array_map($funcMapKeywords, $aPlaceSearchNameKeywords);
$aPlaceDetails['keywords']['name'] = array_map($funcMapKeyword, $aPlaceSearchNameKeywords);
}
if ($aPlaceSearchAddressKeywords) {
$aPlaceDetails['keywords']['address'] = array_map($funcMapKeywords, $aPlaceSearchAddressKeywords);
$aPlaceDetails['keywords']['address'] = array_map($funcMapKeyword, $aPlaceSearchAddressKeywords);
}
}
if ($bIncludeChildPlaces) {
$aPlaceDetails['parentof'] = array_map($funcMapAddressLines, $aParentOfLines);
if ($bGroupChildPlaces) {
$aGroupedAddressLines = [];
foreach ($aParentOfLines as $aAddressLine) {
if ($bIncludeHierarchy) {
if ($bGroupHierarchy) {
$aPlaceDetails['hierarchy'] = array();
foreach ($aHierarchyLines as $aAddressLine) {
if ($aAddressLine['type'] == 'yes') $sType = $aAddressLine['class'];
else $sType = $aAddressLine['type'];
if (!isset($aGroupedAddressLines[$sType]))
$aGroupedAddressLines[$sType] = [];
$aGroupedAddressLines[$sType][] = $aAddressLine;
if (!isset($aPlaceDetails['hierarchy'][$sType]))
$aPlaceDetails['hierarchy'][$sType] = array();
$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
And result has attributes linked_places
Scenario: JSON Details with childplaces
Scenario: JSON Details with hierarchy
When sending json details query for W78099902
| childplaces |
| hierarchy |
| 1 |
Then the result is valid json
And result has attributes parentof
And result has attributes hierarchy
Scenario: JSON Details with linkedplaces
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);
$sClass = $oParams->getString('class');
$bIncludeKeywords = $oParams->getBool('keywords');
$bIncludeKeywords = $oParams->getBool('keywords', false);
$bIncludeAddressDetails = $oParams->getBool('addressdetails', $sOutputFormat == 'html');
$bIncludeLinkedPlaces = $oParams->getBool('linkedplaces', $sOutputFormat == 'html');
$bIncludeChildPlaces = $oParams->getBool('childplaces', $sOutputFormat == 'html');
$bGroupChildPlaces = $oParams->getBool('group_childplaces', false);
$bIncludeLinkedPlaces = $oParams->getBool('linkedplaces', true);
$bIncludeHierarchy = $oParams->getBool('hierarchy', $sOutputFormat == 'html');
$bGroupHierarchy = $oParams->getBool('group_hierarchy', false);
$bIncludePolygonAsGeoJSON = $oParams->getBool('polygon_geojson', $sOutputFormat == 'html');
$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 .= ' housenumber, postcode, country_code,';
$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 .= ' rank_address, ';
$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";
$aPointDetails['aNames'] = $oDB->getAssoc($sSQL);
if (PEAR::isError($aPointDetails['aNames'])) { // possible timeout
$aPointDetails['aNames'] = [];
$aPointDetails['aNames'] = array();
}
// 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";
$aPointDetails['aAddressTags'] = $oDB->getAssoc($sSQL);
if (PEAR::isError($aPointDetails['aAddressTags'])) { // possible timeout
$aPointDetails['aAddressTags'] = [];
$aPointDetails['aAddressTags'] = array();
}
// 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";
$aPointDetails['aExtraTags'] = $oDB->getAssoc($sSQL);
if (PEAR::isError($aPointDetails['aExtraTags'])) { // possible timeout
$aPointDetails['aExtraTags'] = [];
$aPointDetails['aExtraTags'] = array();
}
// Address
@@ -206,13 +206,13 @@ if ($bIncludeLinkedPlaces) {
$sSQL .= ' housenumber';
$aLinkedLines = $oDB->getAll($sSQL);
if (PEAR::isError($aLinkedLines)) { // possible timeout
$aLinkedLines = [];
$aLinkedLines = array();
}
}
// All places this is an imediate parent of
$aParentOfLines = false;
if ($bIncludeChildPlaces) {
$aHierarchyLines = false;
if ($bIncludeHierarchy) {
$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 .= " 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 .= ' localname, ';
$sSQL .= ' housenumber';
$aParentOfLines = $oDB->getAll($sSQL);
if (PEAR::isError($aParentOfLines)) { // possible timeout
$aParentOfLines = [];
$aHierarchyLines = $oDB->getAll($sSQL);
if (PEAR::isError($aHierarchyLines)) { // possible timeout
$aHierarchyLines = array();
}
}
@@ -250,20 +250,20 @@ if ($bIncludeKeywords) {
$sSQL = "SELECT * FROM search_name WHERE place_id = $iPlaceID";
$aPlaceSearchName = $oDB->getRow($sSQL); // can be null
if (!$aPlaceSearchName || PEAR::isError($aPlaceSearchName)) { // possible timeout
$aPlaceSearchName = [];
$aPlaceSearchName = array();
}
if (!empty($aPlaceSearchName)) {
$sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['name_vector'], 1, -1).')';
$aPlaceSearchNameKeywords = $oDB->getAll($sSQL);
if (PEAR::isError($aPlaceSearchNameKeywords)) { // possible timeout
$aPlaceSearchNameKeywords = [];
$aPlaceSearchNameKeywords = array();
}
$sSQL = 'SELECT * FROM word WHERE word_id in ('.substr($aPlaceSearchName['nameaddress_vector'], 1, -1).')';
$aPlaceSearchAddressKeywords = $oDB->getAll($sSQL);
if (PEAR::isError($aPlaceSearchAddressKeywords)) { // possible timeout
$aPlaceSearchAddressKeywords = [];
$aPlaceSearchAddressKeywords = array();
}
}
}