/** * States if a geometry is valid or not an if not valid, a reason why * Available since PostGIS 1.4 (more dependenices??) * * @param string $geoJSON JSON object with geometry * @return string the reason */ public function ST_IsValidReason($geoJSON) { $registry = Zend_Registry::getInstance(); $db = $registry->get('db'); $autoloader = Zend_Loader_Autoloader::getInstance(); $autoloader->pushAutoloader(array('GeoJSON', 'autoload')); try { $geometry = GeoJSON::load($geoJSON); $geoWKT = WKT::dump($geometry); } catch (Exception $e) { return $e->getMessage(); } $result = $db->fetchOne("SELECT ST_IsValidReason( :geoWKT ) ;", array('geoWKT' => $geoWKT)); return (string)$result; }