You are here

public function EWKB::write in geoPHP 8

Same name and namespace in other branches
  1. 7 geoPHP/lib/adapters/EWKB.class.php \EWKB::write()

Serialize geometries into an EWKB binary string.

Parameters

Geometry $geometry:

Return value

string The Extended-WKB binary string representation of the input geometries

Overrides WKB::write

File

geoPHP/lib/adapters/EWKB.class.php, line 52

Class

EWKB
EWKB (Extended Well Known Binary) Adapter

Code

public function write(Geometry $geometry, $write_as_hex = FALSE) {

  // We always write into NDR (little endian)
  $wkb = pack('c', 1);
  switch ($geometry
    ->getGeomType()) {
    case 'Point':
      $wkb .= pack('L', 1);
      $wkb .= $this
        ->writePoint($geometry);
      break;
    case 'LineString':
      $wkb .= pack('L', 2);
      $wkb .= $this
        ->writeLineString($geometry);
      break;
    case 'Polygon':
      $wkb .= pack('L', 3);
      $wkb .= $this
        ->writePolygon($geometry);
      break;
    case 'MultiPoint':
      $wkb .= pack('L', 4);
      $wkb .= $this
        ->writeMulti($geometry);
      break;
    case 'MultiLineString':
      $wkb .= pack('L', 5);
      $wkb .= $this
        ->writeMulti($geometry);
      break;
    case 'MultiPolygon':
      $wkb .= pack('L', 6);
      $wkb .= $this
        ->writeMulti($geometry);
      break;
    case 'GeometryCollection':
      $wkb .= pack('L', 7);
      $wkb .= $this
        ->writeMulti($geometry);
      break;
  }
  if ($write_as_hex) {
    $unpacked = unpack('H*', $wkb);
    return $unpacked[1];
  }
  else {
    return $wkb;
  }
}