Ejemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 protected function readGeometryHeader(WKBBuffer $buffer, &$geometryType, &$hasZ, &$hasM, &$srid)
 {
     $wkbType = $buffer->readUnsignedLong();
     $geometryType = $wkbType % 1000;
     $dimension = ($wkbType - $geometryType) / 1000;
     if ($dimension < 0 || $dimension > 3) {
         throw GeometryIOException::unsupportedWKBType($wkbType);
     }
     $hasZ = $dimension === 1 || $dimension === 3;
     $hasM = $dimension === 2 || $dimension === 3;
 }
Ejemplo n.º 2
0
 /**
  * {@inheritdoc}
  */
 protected function readGeometryHeader(WKBBuffer $buffer, &$geometryType, &$hasZ, &$hasM, &$srid)
 {
     $header = $buffer->readUnsignedLong();
     if ($header >= 0 && $header < 4000) {
         $geometryType = $header % 1000;
         $dimension = ($header - $geometryType) / 1000;
         if ($dimension < 0 || $dimension > 3) {
             throw GeometryIOException::unsupportedWKBType($header);
         }
         $hasZ = $dimension === 1 || $dimension === 3;
         $hasM = $dimension === 2 || $dimension === 3;
     } else {
         $geometryType = $header & 0xfff;
         $hasZ = ($header & EWKBTools::Z) !== 0;
         $hasM = ($header & EWKBTools::M) !== 0;
         $hasSRID = ($header & EWKBTools::S) !== 0;
         if ($hasSRID) {
             $srid = $buffer->readUnsignedLong();
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * @param WKBBuffer        $buffer
  * @param CoordinateSystem $cs
  *
  * @return Triangle
  */
 private function readTriangle(WKBBuffer $buffer, CoordinateSystem $cs)
 {
     $numRings = $buffer->readUnsignedLong();
     $rings = [];
     for ($i = 0; $i < $numRings; $i++) {
         $rings[] = $this->readLineString($buffer, $cs);
     }
     return new Triangle($cs, ...$rings);
 }