WKB采用二进制进行存储,更方便于计算机处理,因此广泛运用于数据的传输与存储,以二位点Point(1 1)为例,其WKB表达如下:
01 0100 0020 E6100000 000000000000F03F 000000000000F03F
注:该格式为二进制转为十六进制的字符串
第一个字节表示编码方式
- 00为使用big-endian编码(XDR),
- 01为使用little-endian编码(NDR)。
他们的不同仅限于在内存中放置字节的顺序,比如我们将0x1234abcd写入到以0×0000开始的内存中,则结果如下表:
| Address | big-endian | little-endian |
|---|---|---|
| 0×0000 | 0x12 | 0xcd |
| 0×0001 | 0x34 | 0xab |
| 0×0002 | 0xab | 0x34 |
| 0×0003 | 0xcd | 0x12 |
- 第二到第九字节对矢量数据基本信息进行了定义。
- 第二与第三个字节规定了矢量数据的类型,如例子中的0100代表Point;
- 第四与第五个字节规定了矢量数据的维数,如例子中的0020代表该点是二位的;
- 第六到第九个字节规定了矢量数据的空间参考SRID,如例子中的E6100000是4326的整数十六位进制表达;第十个字节开始,每16个字节就代表一个坐标对,如例子中的000000000000F03F是浮点型1的十六进制表达。