-
-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathEWKBWriter.php
44 lines (32 loc) · 910 Bytes
/
EWKBWriter.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
declare(strict_types=1);
namespace Brick\Geo\IO;
use Brick\Geo\Geometry;
use Override;
/**
* Writes geometries in the Extended WKB format designed by PostGIS.
*/
final class EWKBWriter extends AbstractWKBWriter
{
#[Override]
protected function packHeader(Geometry $geometry, bool $outer) : string
{
$geometryType = $geometry->geometryTypeBinary();
$cs = $geometry->coordinateSystem();
if ($cs->hasZ()) {
$geometryType |= EWKBTools::Z;
}
if ($cs->hasM()) {
$geometryType |= EWKBTools::M;
}
$srid = $cs->SRID();
if ($srid !== 0 && $outer) {
$geometryType |= EWKBTools::S;
}
$header = $this->packUnsignedInteger($geometryType);
if ($srid !== 0 && $outer) {
$header .= $this->packUnsignedInteger($srid);
}
return $header;
}
}