Exemplo n.º 1
0
 /**
  * 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 . ')';
         }
     }
 }
Exemplo n.º 2
0
 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());
 }