XOOPS Brasil

 

10.3. Formatos de Dados Espaciais Suportados

Esta seção descreve o formato de dados espaciais padrão que são utilizados para representar objetos geometry em consultas.

Eles são:

  • Formato Well-Known Text (WKT).

  • Formato Well-Known Binary (WKB).

Internamente, o MySQL armazena valores geometry em um formato que não é identico nem ao format WKT ou WKB.

10.3.1. Formato Well-Known Text (WKT)

A representação Well-Known Text (WKT) de Geometry é criada para troca de dados de geometria na forma ASCII.

Exemplos de representações WKT representations de objetos geometry são:

  • Um Point (ponto).

    POINT(15 20)
    

    Note que pontos coordenados são especificados sem separção por vírgulas.

  • Um LineString (linha) com quatro pontos.

    LINESTRING(0 0, 10 10, 20 25, 50 60)
    
  • Um Polygon (polígono) com um anel exterior e um anél interior.

    POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))
    
  • Um MultiPoint (multipontos) com três valores Points.

    MULTIPOINT(0 0, 20 20, 60 60)
    
  • Um MultiLineString (multi linhas) com dois valores LineString.

    MULTILINESTRING((10 10, 20 20), (15 15, 30 15))
    
  • Um MultiPolygon (multi polígonos) com dois valores Polygon.

    MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))
    
  • Um GeometryCollection (Coleção de Geometria) consistindo de dois valores Points e um LineString.

    GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))
    

Uma gramática Backus-Naur que especifica as regras de produção formal para gravar valores WKT podem ser encontrados na documentação de especificação OGC indicada próximo ao início deste capítulo.

10.3.2. Formato Well-Known Binary (WKB)

A representação Well-Known Binary (WKB) para valores geométricos é definida pela especificação OpenGIS. Ela também é definida no padrão ISO "SQL/MM Part 3: Spatial".

WKB é usado para trocar dados geometry como fluxos binários representados por valores BLOB contendop informações geométricas WKB.

WKB usa inteiros sem sinal de 1-byte e 4-byte e números de precisão dupla de 8-byte (formato IEEE 754). Um byte é 8 bits.

Por exemplo, um valor WKB que corresonde a POINT(1 1) consiste desta sequência de 21 bytes (cada um representado aqui por dois digitos hexa):

0101000000000000000000F03F000000000000F03F

A sequência pode ser quebrada nestes componentes:

Byte order : 01
WKB type : 01000000
X : 000000000000F03F
Y : 000000000000F03F

A respresentação do componente está a seguir:

  • O byte order pode ser de 0 ou 1 para indicar o tipo little-endian ou big-endian. Os byte orders little-endian e big-endian também são conhecidos como Network Data Representation - Representação de Dados de Rede (NDR) e External Data Representation - Representação de Dados Externos (XDR), repectivamente.

  • O tipo WKB é um código que indica o tipo de geometria. Valores de 1 a 7 indicam Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon, e GeometryCollection.

  • Um valor Point têm coordenadas X e Y, cada uma representada como um valor de dupla precisão.

Valores WKB para valores de geometria mais complexas são representados por estrutras de dados mais complexas, como detalhado na epecificação OpenGIS.