WKB格式

290 阅读1分钟

WKB采用二进制进行存储,更方便于计算机处理,因此广泛运用于数据的传输与存储,以二位点Point(1 1)为例,其WKB表达如下:

01  0100 0020 E6100000  000000000000F03F 000000000000F03F

注:该格式为二进制转为十六进制的字符串

第一个字节表示编码方式

  • 00为使用big-endian编码(XDR),
  • 01为使用little-endian编码(NDR)。

他们的不同仅限于在内存中放置字节的顺序,比如我们将0x1234abcd写入到以0×0000开始的内存中,则结果如下表:

Addressbig-endianlittle-endian
0×00000x120xcd
0×00010x340xab
0×00020xab0x34
0×00030xcd0x12
  • 第二到第九字节对矢量数据基本信息进行了定义。
  • 第二与第三个字节规定了矢量数据的类型,如例子中的0100代表Point;
  • 第四与第五个字节规定了矢量数据的维数,如例子中的0020代表该点是二位的;
  • 第六到第九个字节规定了矢量数据的空间参考SRID,如例子中的E6100000是4326的整数十六位进制表达;第十个字节开始,每16个字节就代表一个坐标对,如例子中的000000000000F03F是浮点型1的十六进制表达。