longitude-one / wkb-parser
解析已知的二进制(WKB/EWKB)对象数据解析器
3.0.0
2024-04-10 11:59 UTC
Requires
- php: ^8.1
Requires (Dev)
- phpunit/phpunit: ^10.5.16
README
用于解析二维、三维和四维开放地理空间联盟(OGC)WKB或PostGIS EWKB空间对象数据的解析库。
注意
本软件包是已废弃的creof/wkt-parser软件包的延续。
安装
composer require longitude-one/wkb-parser
用法
解析器有两种使用模式。要解析的值可以传递给构造函数,然后对返回的Parser对象调用parse()。
$parser = new Parser($input); $value = $parser->parse();
如果需要解析许多值,可以使用单个Parser实例。
$parser = new Parser(); $value1 = $parser->parse($input1); $value2 = $parser->parse($input2);
输入值
编码
解析器目前支持3种WKB编码
- OGC v1.1
- OGC v1.2
- PostGIS EWKB
格式
解析器支持多种输入格式
- 二进制字符串(从数据库返回或
pack('H*', $hexString)) - 纯十六进制文本字符串(例如
'01010000003D0AD7A3.....') - 带前缀的十六进制测试字符串(例如
'0x01010000003D0AD7A3.....'等)
返回
解析器将返回一个数组,其中包含键type、value、srid和dimension。
type字符串,不带维度的空间对象类型(如POINT、LINESTRING等)的字符串。value数组,包含点、基于空间对象类型的嵌套数组或空数组(对于EMPTY几何形状)的整数或浮点值。srid整数,如果EWKB值中存在,则为SRID,否则为null。dimension字符串,对于相应的3D和4D对象,将包含Z、M或ZM,否则为null。
异常
Reader和Parser将抛出实现接口CrEOF\Geo\WKB\Exception\ExceptionInterface的异常。
参考
- PostGIS EWKB - https://github.com/postgis/postgis/blob/master/doc/ZMSgeoms.txt
- OGC简单特征访问,第一部分 - http://www.opengeospatial.org/standards/sfa
- OGC简单特征访问,第二部分 - http://www.opengeospatial.org/standards/sfs