public function geos() { // If it's already been set, just return it if ($this->geos && GeoPHP::geosInstalled()) { return $this->geos; } // It hasn't been set yet, generate it if (GeoPHP::geosInstalled()) { $reader = new GEOSWKBReader(); $this->geos = $reader->readHEX($this->out('wkb', TRUE)); } else { $this->geos = FALSE; } return $this->geos; }
/** * Serialize geometries into a WKT string. * * @param Geometry $geometry * * @return string The WKT string representation of the input geometries */ public function write(Geometry $geometry) { // If geos is installed, then we take a shortcut and let it write the WKT if (GeoPHP::geosInstalled()) { $writer = new GEOSWKTWriter(); $writer->setTrim(TRUE); return $writer->write($geometry->geos()); } if ($geometry->isEmpty()) { return strtoupper($geometry->geometryType()) . ' EMPTY'; } else { if ($data = $this->extractData($geometry)) { return strtoupper($geometry->geometryType()) . ' (' . $data . ')'; } } }
static function geosToGeometry($geos) { if (!GeoPHP::geosInstalled()) { return NULL; } $wkb_writer = new GEOSWKBWriter(); $wkb = $wkb_writer->writeHEX($geos); $geometry = GeoPHP::load($wkb, 'wkb', TRUE); if ($geometry) { $geometry->setGeos($geos); return $geometry; } }