Example #1
0
 /**
  * @param Geometry $geometry
  *
  * @return \GEOSGeometry
  */
 private function toGEOS(Geometry $geometry)
 {
     if ($geometry->isEmpty()) {
         $geosGeometry = $this->wktReader->read($geometry->asText());
         $geosGeometry->setSRID($geometry->SRID());
         return $geosGeometry;
     }
     if ($this->hasBinaryReadWrite) {
         return $this->wkbReader->read($this->ewkbWriter->write($geometry));
     }
     return $this->wkbReader->readHEX(bin2hex($this->ewkbWriter->write($geometry)));
 }
Example #2
0
 public function geos()
 {
     // If it's already been set, just return it
     if ($this->geos && FOX_geo::geosInstalled()) {
         return $this->geos;
     }
     // It hasn't been set yet, generate it
     if (FOX_geo::geosInstalled()) {
         $reader = new GEOSWKBReader();
         $this->geos = $reader->readHEX($this->out('wkb', true));
     } else {
         $this->geos = false;
     }
     return $this->geos;
 }
Example #3
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());
 }
Example #4
0
 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;
 }