/** * @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))); }
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; } }
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 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); }