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