getInt('days', false); $bReduced = $oParams->getBool('reduced', false); $sClass = $oParams->getString('class', false); $oDB = new Nominatim\DB(); $oDB->connect(); $iTotalBroken = (int) chksql($oDB->getOne('select count(*) from import_polygon_error')); $aPolygons = array(); while ($iTotalBroken && empty($aPolygons)) { $sSQL = 'select osm_type as "type",osm_id as "id",class as "key",type as "value",name->\'name\' as "name",'; $sSQL .= 'country_code as "country",errormessage as "error message",updated'; $sSQL .= ' from import_polygon_error'; $aWhere = array(); if ($iDays) { $aWhere[] = "updated > 'now'::timestamp - '".$iDays." day'::interval"; $iDays++; } if ($bReduced) $aWhere[] = "errormessage like 'Area reduced%'"; if ($sClass) $sWhere[] = "class = '".pg_escape_string($sClass)."'"; if (!empty($aWhere)) { $sSQL .= ' where '.join(' and ', $aWhere); } $sSQL .= ' order by updated desc limit 1000'; $aPolygons = chksql($oDB->getAll($sSQL)); } if (CONST_Debug) { var_dump($aPolygons); exit; } ?> Nominatim Broken Polygon Data Total number of broken polygons: $iTotalBroken

"; if (!$aPolygons) exit; echo ''; echo ''; //var_dump($aPolygons[0]); foreach ($aPolygons[0] as $sCol => $sVal) { echo ''; } echo ''; echo ''; $aSeen = array(); foreach ($aPolygons as $aRow) { if (isset($aSeen[$aRow['type'].$aRow['id']])) continue; $aSeen[$aRow['type'].$aRow['id']] = 1; echo ''; foreach ($aRow as $sCol => $sVal) { switch ($sCol) { case 'error message': if (preg_match('/Self-intersection\\[([0-9.\\-]+) ([0-9.\\-]+)\\]/', $sVal, $aMatch)) { $aRow['lat'] = $aMatch[2]; $aRow['lon'] = $aMatch[1]; echo ''; } else { echo ''; } break; case 'id': echo ''; break; default: echo ''; break; } } echo ''; echo ''; } echo '
'.$sCol.' 
'.($sVal?$sVal:' ').''.($sVal?$sVal:' ').''.osmLink($aRow).''.($sVal?$sVal:' ').'josm
'; ?>