Return GIS data types
public static getGISDatatypes ( boolean $upper_case = false ) : string[] | ||
$upper_case | boolean | whether to return values in upper case |
리턴 | string[] | GIS data types |
/** * Returns the singleton instance of geometric class of the given type. * * @param string $type type of the geometric object * * @return GISGeometry the singleton instance of geometric class * of the given type * * @access public * @static */ public static function factory($type) { $type_lower = strtolower($type); $file = './libraries/gis/GIS' . ucfirst($type_lower) . '.php'; if (!PMA_isValid($type_lower, PMA\libraries\Util::getGISDatatypes()) || !file_exists($file)) { return false; } if (include_once $file) { switch (strtoupper($type)) { case 'MULTIPOLYGON': return GISMultipolygon::singleton(); case 'POLYGON': return GISPolygon::singleton(); case 'MULTIPOINT': return GISMultipoint::singleton(); case 'POINT': return GISPoint::singleton(); case 'MULTILINESTRING': return GISMultilinestring::singleton(); case 'LINESTRING': return GISLinestring::singleton(); case 'GEOMETRYCOLLECTION': return GISGeometrycollection::singleton(); default: return false; } } else { return false; } }
/** * Return the where clause for a geometrical column. * * @param mixed $criteriaValues Search criteria input * @param string $names Name of the column on which search is submitted * @param string $func_type Search function/operator * @param string $types Type of the field * @param bool $geom_func Whether geometry functions should be applied * * @return string part of where clause. */ private function _getGeomWhereClause($criteriaValues, $names, $func_type, $types, $geom_func = null) { $geom_unary_functions = array('IsEmpty' => 1, 'IsSimple' => 1, 'IsRing' => 1, 'IsClosed' => 1); $where = ''; // Get details about the geometry functions $geom_funcs = Util::getGISFunctions($types, true, false); // If the function takes multiple parameters if ($geom_funcs[$geom_func]['params'] > 1) { // create gis data from the criteria input $gis_data = Util::createGISData($criteriaValues); $where = $geom_func . '(' . Util::backquote($names) . ', ' . $gis_data . ')'; return $where; } // New output type is the output type of the function being applied $type = $geom_funcs[$geom_func]['type']; $geom_function_applied = $geom_func . '(' . Util::backquote($names) . ')'; // If the where clause is something like 'IsEmpty(`spatial_col_name`)' if (isset($geom_unary_functions[$geom_func]) && trim($criteriaValues) == '') { $where = $geom_function_applied; } elseif (in_array($type, Util::getGISDatatypes()) && !empty($criteriaValues)) { // create gis data from the criteria input $gis_data = Util::createGISData($criteriaValues); $where = $geom_function_applied . " " . $func_type . " " . $gis_data; } elseif (mb_strlen($criteriaValues) > 0) { $where = $geom_function_applied . " " . $func_type . " '" . $criteriaValues . "'"; } return $where; }