Spatial Extender possui várias funções que geram figuras geométricas a partir de representações do modo binário:
A representação do modo binário reconhecida é um fluxo contíguo de bytes. Ela permite que a figura geométrica sejam trocada entre um cliente ODBC e um banco de dados SQL no modo binário. Como estas funções de figura geométrica 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 figura geométrica existente numa representação do modo binário reconhecida.
A representação do modo binário reconhecido para figura geométrica é obtida pela serialização de uma instância da figura geométrica 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 figura geométrica. A única diferença entre as duas codificações da figura geométrica é 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 de 32 bits (4 bytes) que codifica um inteiro não negativo no intervalo [1, 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 de XDR de um duplo é Big Endian (bit de sinal é o primeiro bit).
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 figura geométrica. 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 figuras geométricas são construídos através de fluxos de bytes para figuras geométricas 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 figura geométrica foi projetada para representar as instâncias dos tipos de figura geométrica descritos no Modelo do Objeto de figura geométrica e Especificação do Abstrato da OpenGIS.
Estas assertiva implicam o seguinte para anéis, polígonos e multipolígonos: