Esta sección describe los formatos de datos espaciales estándar que suelen utilizarse para representar objetos geométricos en consultas. Son:
-
Formato Well-Known Text (WKT)
-
Formato Well-Known Binary (WKB)
Internamente, MySQL almacena los valores de geometría en un formato que no es idéntico a ninguno de los formatos WKT o WKB
La representación Well-Known Text (WKT) de Geometrías está diseñada para intercambiar datos geométricos en formato ASCII.
Ejemplos de representaciones WKT de objetos geométricos son:
-
Un
Point
:POINT(15 20)
Nótese que las coordenadas del punto se especifican sin coma separadora.
-
Una
LineString
con cuatro puntos:LINESTRING(0 0, 10 10, 20 25, 50 60)
Nótese que los pares de coordenadas de los puntos están separados por comas.
-
Un
Polygon
con un anillo exterior y un anillo interior:POLYGON((0 0,10 0,10 10,0 10,0 0),(5 5,7 5,7 7,5 7, 5 5))
-
Un
MultiPoint
con tres valoresPoint
:MULTIPOINT(0 0, 20 20, 60 60)
-
Una
MultiLineString
con dos valoresLineString
:MULTILINESTRING((10 10, 20 20), (15 15, 30 15))
-
Un
MultiPolygon
con dos valoresPolygon
:MULTIPOLYGON(((0 0,10 0,10 10,0 10,0 0)),((5 5,7 5,7 7,5 7, 5 5)))
-
Una
GeometryCollection
consistente en dos valoresPoint
y unaLineString
:GEOMETRYCOLLECTION(POINT(10 10), POINT(30 30), LINESTRING(15 15, 20 20))
Puede encontrar una gramática que especifica las reglas formales para la escritura de valores WKT en el documento de especificación OGC referenciado al principio de este capítulo.
La representación Well-Known Binary (WKB) de valores geométricos está definida por la especificación OpenGIS. También está definida en el estándar ISO “SQL/MM Part 3: Spatial”.
WKB se utiliza para intercambiar datos como cadenas binarias representadas por
valores BLOB
que contienen información geométrica WKB.
WKB utiliza enteros sin signo de un byte, enteros sin signo de cuatro bytes, y números de ocho bytes de doble precisión (formato IEEE 754). Un byte son ocho bits.
Por ejemplo, un valor WKB que corresponde a un POINT(1
1)
consiste en esta secuancia de 21 bytes (cada uno representado aquí por dos dígitos hexadecimales):
0101000000000000000000F03F000000000000F03F
La secuencia puede descomponerse en los siguientes componentes:
Orden de byte : 01 Tipo WKB : 01000000 X : 000000000000F03F Y : 000000000000F03F
La representación de componentes es como sigue:
-
El orden de byte puede ser 0 o 1, para indicar almacenamiento tipo little-endian o big-endian. Los órdenes de byte little-endian y big-endian son también conocidos como Representación de Datos de Red (Network Data Representation (NDR)) y Representación Externa de Datos (External Data Representation (XDR)), respectivamente.
-
El tipo WKB es un código que indica el tipo de geometría. Los valores del 1 al 7 significan
Point
,LineString
,Polygon
,MultiPoint
,MultiLineString
,MultiPolygon
, yGeometryCollection
. -
Un valor
Point
tiene coordenadas X e Y, cada una representada por un valor de doble precisión.
Los valores WKB que representan valores geométricos más complejos son representados por estructuras de datos más complejas, tal como se detalla en la especificación OpenGIS.