DB2 Spatial Extender possui várias funções que geram geometrias a partir de representações do modo binário:
A representação do modo binário reconhecido é um fluxo contíguo de bytes. Ela permite que a geometria sejam trocada entre um cliente ODBC e um banco de dados SQL no modo binário. Como estas funções de geometria exigem a definição das estruturas da linguagem de programação para mapear a representação do modo binário, elas destinam-se ao uso dentro de um programa da linguagem de terceira geração (3GL). Elas não se adaptam ao ambiente da linguagem de quarta geração (4GL). A função ST_AsBinary converte um valor de geometria existente numa representação do modo binário reconhecida.
A representação do modo binário reconhecido para geometria é obtida pela serialização de uma instância da geometria como uma seqüência de tipos numéricos. Estes tipos são retirados do conjunto (inteiro não-assinado, duplo) e, cada tipo numérico é serializado como uma seqüência de bytes. Os tipos são serializados através de uma das representações padrão, do modo binário, bem-definidas para tipos numéricos (NDR, XDR). Uma tag de um byte que precede os bytes serializados descreve a codificação binária específica (NDR ou XDR) usada para um fluxo de bytes de geometria. A única diferença entre as duas codificações da geometria é uma da ordem de bytes: A codificação XDR é Big Endian; a codificação NDR é Little Endian.
Um inteiro não-assinado é um tipo de dados (4 bytes) de 32 bits que codifica um inteiro não-negativo no intervalo [0, 4294967295].
Um duplo é um tipo de dados de precisão dupla de (8 bytes) e 64 bits que codifica um número de precisão dupla através do formato de precisão dupla 754 do IEEE.
Estas definições são comuns para XDR e NDR.
A representação XDR de um inteiro não-assinado é Big Endian (byte mais significativo primeiro).
A representação XDR de um duplo é Big Endian (bit de sinal é o primeiro byte).
A representação NDR de um inteiro não-assinado é Little Endian (byte menos significativo primeiro).
A representação NDR de um duplo é Little Endian (bit de sinal é o último byte).
A conversão entre os tipos de dados NDR e XDR para inteiros não-assinados e duplos é uma operação simples. Ela envolve a inversão da ordem de bytes dentro de cada inteiro não-assinado ou duplo no fluxo de bytes.
Esta seção descreve a representação do modo binário reconhecida para geometria. O bloco de construção básica é o fluxo de bytes para um ponto, que consiste em dois duplos. Os fluxos de bytes para outras geometrias são construídos através de fluxos de bytes para geometrias que já estejam definidas.
// Definições do tipo básico // byte : 1 byte // uint32 : inteiro não-assinado de 32 bits (4 bytes) // double : número de precisão dupla (8 bytes) // Construindo Blocos : Ponto, Anel Linear 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 Ponto 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; } };
A figura a seguir mostra uma representação NDR.
Figura 39. Representação no formato NDR. (B=1) do tipo polígono (T=3) com 2 lineares (NR=2), cada anel tendo 3 pontos (NP=3).
![]() |
A representação do modo binário reconhecida para geometria foi projetada para representar as instâncias dos tipos de geometria descritos no Modelo do Objeto de Geometria e Especificação do Abstrato da OpenGIS.
Estas assertiva implicam o seguinte para anéis, polígonos e multipolígonos: