Example #1
0
 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;
     }
 }
 public static function geosToGeometry($geos)
 {
     if (!self::geosInstalled()) {
         return null;
     }
     $wkb_writer = new GEOSWKBWriter();
     $wkb = $wkb_writer->writeHEX($geos);
     $geometry = self::load($wkb, 'wkb', true);
     if ($geometry) {
         $geometry->setGeos($geos);
         return $geometry;
     }
 }
Example #3
0
 /**
  * @param \GEOSGeometry $geometry
  *
  * @return Geometry
  */
 private function fromGEOS(\GEOSGeometry $geometry)
 {
     if ($geometry->isEmpty()) {
         return Geometry::fromText($this->wktWriter->write($geometry), $geometry->getSRID());
     }
     if ($this->hasBinaryReadWrite) {
         return $this->ewkbReader->read($this->wkbWriter->write($geometry));
     }
     return $this->ewkbReader->read(hex2bin($this->wkbWriter->writeHEX($geometry)));
 }
Example #4
0
 public function testWKBWriter_writeHEX()
 {
     $writer = new GEOSWKBWriter();
     $reader = new GEOSWKTReader();
     try {
         $writer->writeHEX(1);
         $this->assertTrue(FALSE);
         # this is just to fail if we get here
     } catch (Exception $e) {
         $this->assertContains('expects parameter 1', $e->getMessage());
     }
     $g = $reader->read('POINT(6 7)');
     $g->setSRID(43);
     $writer->setOutputDimension(2);
     // 2D
     // 2D LITTLE endian
     $writer->setByteOrder(1);
     $this->assertEquals('010100000000000000000018400000000000001C40', $writer->writeHEX($g));
     // 2D LITTLE endian + SRID
     $writer->setIncludeSRID(TRUE);
     $this->assertEquals('01010000202B00000000000000000018400000000000001C40', $writer->writeHEX($g));
     $writer->setIncludeSRID(FALSE);
     // 2D BIG endian
     $writer->setByteOrder(0);
     $this->assertEquals('00000000014018000000000000401C000000000000', $writer->writeHEX($g));
     // 2D BIG endian + SRID
     $writer->setIncludeSRID(TRUE);
     $this->assertEquals('00200000010000002B4018000000000000401C000000000000', $writer->writeHEX($g));
     $writer->setIncludeSRID(FALSE);
     $writer->setOutputDimension(3);
     // 3D
     // 3D LITTLE endian (2D input)
     $writer->setByteOrder(1);
     $this->assertEquals('010100000000000000000018400000000000001C40', $writer->writeHEX($g));
     // 3D LITTLE endian + SRID  (2D input)
     $writer->setIncludeSRID(TRUE);
     $this->assertEquals('01010000202B00000000000000000018400000000000001C40', $writer->writeHEX($g));
     $writer->setIncludeSRID(FALSE);
     // 3D BIG endian (2D input)
     $writer->setByteOrder(0);
     $this->assertEquals('00000000014018000000000000401C000000000000', $writer->writeHEX($g));
     // 3D BIG endian + SRID (2D input)
     $writer->setIncludeSRID(TRUE);
     $this->assertEquals('00200000010000002B4018000000000000401C000000000000', $writer->writeHEX($g));
     $writer->setIncludeSRID(FALSE);
     $g = $reader->read('POINT(6 7 8)');
     $g->setSRID(53);
     $writer->setOutputDimension(2);
     // 2D
     // 2D LITTLE endian (3D input)
     $writer->setByteOrder(1);
     $this->assertEquals('010100000000000000000018400000000000001C40', $writer->writeHEX($g));
     // 2D LITTLE endian + SRID (3D input)
     $writer->setIncludeSRID(TRUE);
     $writer->setByteOrder(1);
     $this->assertEquals('01010000203500000000000000000018400000000000001C40', $writer->writeHEX($g));
     $writer->setIncludeSRID(FALSE);
     // 2D BIG endian (3D input)
     $writer->setByteOrder(0);
     $this->assertEquals('00000000014018000000000000401C000000000000', $writer->writeHEX($g));
     // 2D BIG endian + SRID (3D input)
     $writer->setIncludeSRID(TRUE);
     $this->assertEquals('0020000001000000354018000000000000401C000000000000', $writer->writeHEX($g));
     $writer->setIncludeSRID(FALSE);
     $writer->setOutputDimension(3);
     // 3D
     // 3D LITTLE endian (3D input)
     $writer->setByteOrder(1);
     $this->assertEquals('010100008000000000000018400000000000001C400000000000002040', $writer->writeHEX($g));
     // 3D BIG endian (3D input)
     $writer->setByteOrder(0);
     $this->assertEquals('00800000014018000000000000401C0000000000004020000000000000', $writer->writeHEX($g));
     // 3D BIG endian + SRID (3D input)
     $writer->setIncludeSRID(TRUE);
     $this->assertEquals('00A0000001000000354018000000000000401C0000000000004020000000000000', $writer->writeHEX($g));
     $writer->setIncludeSRID(FALSE);
 }