Formato binario (WKB) ben noto
La specifica OpenGIS Consortium Simple Features for SQL definisce il formato binario noto. Questo formato è definito anche dall'International Organization for Standardization (ISO) SQL/MM Part: 3 Spatial standard.
Il blocco di base per i formati binari ben noti è il flusso di byte per un punto, che consiste in due valori di virgola mobile a doppia precisione. I flussi di byte per altre geometrie sono costruiti utilizzando i flussi di byte per le geometrie già definite.
Il seguente esempio illustra il blocco di base per i formati binari ben noti.
// 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=wkbPoint
Point point;
};
WKBLineString {
byte byteOrder;
uint32 wkbType; // 2=wkbLineString
uint32 numPoints;
Point points[numPoints];
};
WKBPolygon {
byte byteOrder;
uint32 wkbType; // 3=wkbPolygon
uint32 numRings;
LinearRing rings[numRings];
};
WKBMultiPoint {
byte byteOrder;
uint32 wkbType; // 4=wkbMultipoint
uint32 num_wkbPoints;
WKBPoint WKBPoints[num_wkbPoints];
};
WKBMultiLineString {
byte byteOrder;
uint32 wkbType; // 5=wkbMultiLineString
uint32 num_wkbLineStrings;
WKBLineString WKBLineStrings[num_wkbLineStrings];
};
wkbMultiPolygon {
byte byteOrder;
uint32 wkbType; // 6=wkbMultiPolygon
uint32 num_wkbPolygons;
WKBPolygon wkbPolygons[num_wkbPolygons];
};
WKBGeometry {
union {
WKBPoint point;
WKBLineString linestring;
WKBPolygon polygon;
WKBMultiPoint mpoint;
WKBMultiLineString mlinestring;
WKBMultiPolygon mpolygon;
}
};
La seguente figura mostra un esempio di geometria in formato binario ben noto.