/** * 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 . ')'; } } }
public function testWKBReader_readHEX() { $reader = new GEOSWKBReader(); $writer = new GEOSWKTWriter(); $writer->setTrim(TRUE); $writer->setOutputDimension(3); // 2D LITTLE endian $g = $reader->readHEX('010100000000000000000018400000000000001C40'); $this->assertEquals('POINT (6 7)', $writer->write($g)); $this->assertEquals(0, $g->getSRID()); // 2D BIG endian $g = $reader->readHEX('00000000014018000000000000401C000000000000'); $this->assertEquals('POINT (6 7)', $writer->write($g)); $this->assertEquals(0, $g->getSRID()); // 2D LITTLE endian + SRID $g = $reader->readHEX('01010000202B00000000000000000018400000000000001C40'); $this->assertEquals('POINT (6 7)', $writer->write($g)); $this->assertEquals(43, $g->getSRID()); // 2D BIG endian + SRID $g = $reader->readHEX('00200000010000002B4018000000000000401C000000000000'); $this->assertEquals('POINT (6 7)', $writer->write($g)); $this->assertEquals(43, $g->getSRID()); // 3D LITTLE endian $g = $reader->readHEX('010100008000000000000018400000000000001C400000000000002040'); $this->assertEquals('POINT Z (6 7 8)', $writer->write($g)); $this->assertEquals(0, $g->getSRID()); // 3D BIG endian $g = $reader->readHEX('00800000014018000000000000401C0000000000004020000000000000'); $this->assertEquals('POINT Z (6 7 8)', $writer->write($g)); $this->assertEquals(0, $g->getSRID()); // 3D BIG endian + SRID $g = $reader->readHEX('00A0000001000000354018000000000000401C0000000000004020000000000000'); $this->assertEquals('POINT Z (6 7 8)', $writer->write($g)); $this->assertEquals(53, $g->getSRID()); }