WKB 是存储GIS程序所使用的几何对象的内存区域,GIS系统中的不同组件借助WKB可以有效地交换几何数据。 WKB是由OpenGIS规范定义的。它还定义在ISO “SQL/MM Part 3: Spatial”标准中。
WKB用于以二进制流的形式交换几何数据,二进制流由含几何WKB信息的BLOB值表示。
WKB使用1字节无符号整数、4字节无符号整数、以及8字节双精度数(IEEE 754格式)。1字节等于8比特。
例如,与POINT(1 1)对应的WKB值由下述21字节序列构成(在此,每个字节由2个十六进制数值表示):
0101000000000000000000F03F000000000000F03F
该序列可分为下述部分:
Byte order : 01
WKB type : 01000000
X : 000000000000F03F
Y : 000000000000F03F
表示如下:
· 字节顺序(Byte order)可以是0或1,分别表明little-endian或big-endian存储。little-endian和big-endian字节顺序也分别
称为网络数据表示(NDR)和外部数据表示(XDR)。
· “WKB type”(WKB类型)是指明几何类型的代码。取值从1到7,分别表示Point、LineString、Polygon、MultiPoint、
MultiLineString、MultiPolygon、和GeometryCollection。
·Point值具有X和Y坐标,每个值均用双精度值表示。
对于更复杂几何值的WKB值,它们是由更复杂的数据结构表示的,详情请参见OpenGIS规范。
AGF是Autodesk几何对象格式(Autodesk Geometry Format的缩写),是著名二进制格式(WKB)的Autodesk扩充版本,也就是说AGF是WKB的一个子集。
WKB 和AGF的区别:
在WKB和AGF格式上在一些细节上存在明显的不同。
WKB 定义了每个几何对象中的数据的字节顺序并存在字节区域,作为结果可能会使内存对齐从Word变为byte,而在AGF中仅支持一种内存对齐规则,这种对齐类型同样背微软的.NET Framework和Windows所采用,作为结果该字节标识不需要保存。
WKB 仅定义了2D格式,这很难有效表示3D的points,polyline和polygon;AGF中添加了Dimension标记,特别地该标记包含在每一个几何片段中用以表示该几何对象是2D,3D或者是4D(包含动态分割所使用地测量值),AGF中包含WKB规范中所没有包含的几何类型。
---Hongxian翻译整理 于Beijing