DB2 Spatial Extender 有一些函數從二進位表示法產生幾何:
知名二進位表示法是連續位元組串流。它允許在 ODBC 從屬站與 SQL 資料庫之間使用二進位格式交換幾何。 因為這些幾何函數需要 C 程式設計語言結構定義才能對映二進位表示法,所以它們是專門在第三代語言 (3GL) 程式內使用。它們不適合第四代語言 (4GL) 環境。 ST_AsBinary 函數將現存幾何值轉換成知名二進位表示法。
透過一連串數值類型來序列化幾何案例,從而取得幾何的知名二進位表示法。 這些類型是從這個設定 (無正負號整數、倍整數) 產生,然後每一個數值類型序列化成為一連串位元組。 這些類型是使用數值類型的兩個定義完善的標準二進位表示法 (NDR, XDR) 的其中一個來序列化。 位於序列化位元組前面的一位元組標籤,說明用於幾何位元組串流的特定二進位編碼 (NDR 或 XDR)。 這兩個幾何編碼的唯一差異是位元組順序差異: XDR 編碼是 Big Endian;NDR 編碼是 Little Endian。
無正負號整數是 32 位元 (4 位元組) 資料類型,它在範圍 [0, 4294967295] 中編碼非負數整數。
倍整數是 64 位元 (8 位元組) 倍準度資料類型,它使用 IEEE 754 倍準度格式編碼倍準數。
XDR 和 NDR 共用這些定義。
無正負號整數的 XDR 表示是 Big Endian (最大有效位元組是第一個位元組)。
倍整數的 XDR 表示是 Big Endian (正負號位元是第一個位元組)。
無正負號整數的 NDR 表示 Little Endian (最小有效位元組是第一個位元組)。
倍整數的 NDR 表示是 Little Endian (正負號位元是最後一個位元組)。
在無正負號整數和倍整數的 NDR 與 XDR 資料類型之間轉換是很簡單的作業。 該作業會反轉位元組串流中的每一個無正負號整數或倍整數內的位元組順序。
本節說明幾何的知名二進位表示法。 基本建置區塊是點的位元組串流,它由兩個倍整數組成。 使用已定義的幾何的位元組串流建置其它幾何的位元組串流。
// Basic Type definitions // byte : 1 byte // uint32 : 32 bit unsigned integer (4 bytes) // double : double precision number (8 bytes) // Building Blocks : Point, LinearRing Point { double x; double y; }; LinearRing { uint32 numPoints; Point points[numPoints]; }; enum wkbGeometryType { wkbPoint = 1, wkbLineString = 2, wkbPolygon = 3, wkbMultiPoint = 4, wkbMultiLineString = 5, wkbMultiPolygon = 6, }; enum wkbByteOrder { wkbXDR = 0, // Big Endian wkbNDR = 1 // Little Endian }; WKBPoint { byte byteOrder; uint32 wkbType; // 1 Point point; }; WKBLineString { byte byteOrder; uint32 wkbType; // 2 uint32 numPoints; Point points[numPoints]; } WKBPolygon { byte byteOrder; uint32 wkbType; // 3 uint32 numRings; LinearRing rings[numRings]; } WKBMultiPoint { byte byteOrder; uint32 wkbType; // 4 uint32 num_wkbPoints; WKBPoint WKBPoints[num_wkbPoints]; } WKBMultiLineString { byte byteOrder; uint32 wkbType; // 5 uint32 num_wkbLineStrings; WKBLineString WKBLineStrings[num_wkbLineStrings]; } wkbMultiPolygon { byte byteOrder; uint32 wkbType; // 6 uint32 num_wkbPolygons; WKBPolygon wkbPolygons[num_wkbPolygons]; } WKBGeometry { union { WKBPoint point; WKBLineString linestring; WKBPolygon polygon; WKBMultiPoint mpoint; WKBMultiLineString mlinestring; WKBMultiPolygon mpolygon; } };
下圖顯示 NDR 表示。
圖 39. 使用 NDR 格式的表示. 具有 2 線性 (NR=2) 的類型多邊形 (T=3) 的 (B=1),每一個環有 3 點 (NP=3)。
![]() |
幾何的知名二進位表示法代表 Geometry Object Model 和 OpenGIS Abstract Specification 說明的幾何類型案例。
這些主張對於環、多邊形和多重多邊形隱含下列涵意: