Well-Known Text (WKT) Format

The Well-Known Text (WKT) representation of geometry values is
designed for exchanging geometry data in ASCII form. The
OpenGIS specification provides a Backus-Naur grammar that
specifies the formal production rules for writing WKT values
(see Section 11.5, “Spatial Data Types”).

Examples of WKT representations of geometry objects:

A Point:

POINT(15 20)

The point coordinates are specified with no separating
comma. This differs from the syntax for the SQL
Point() function, which
requires a comma between the coordinates. Take care to use
the syntax appropriate to the context of a given spatial
operation. For example, the following statements both use
ST_X() to extract the
X-coordinate from a Point object. The
first produces the object directly using the
Point() function. The
second uses a WKT representation converted to a
Point with
ST_GeomFromText().

Spatial functions such as
ST_MPointFromText() and
ST_GeomFromText() that
accept WKT-format representations of
MultiPoint values permit individual
points within values to be surrounded by parentheses. For
example, both of the following function calls are valid:

Well-Known Binary (WKB) Format

The Well-Known Binary (WKB) representation of geometric values
is used for exchanging geometry data as binary streams
represented by BLOB values
containing geometric WKB information. This format is defined
by the OpenGIS specification (see
Section 11.5, “Spatial Data Types”). It is also defined in the
ISO SQL/MM Part 3: Spatial standard.

For example, a WKB value that corresponds to POINT(1
-1) consists of this sequence of 21 bytes, each
represented by two hexadecimal digits:

0101000000000000000000F03F000000000000F0BF

The sequence consists of the components shown in the following
table.

Table 11.2 WKB Components Example

Component

Size

Value

Byte order

1 byte

01

WKB type

4 bytes

01000000

X coordinate

8 bytes

000000000000F03F

Y coordinate

8 bytes

000000000000F0BF

Component representation is as follows:

The byte order indicator is either 1 or 0 to signify
little-endian or big-endian storage. The little-endian and
big-endian byte orders are also known as Network Data
Representation (NDR) and External Data Representation
(XDR), respectively.

The WKB type is a code that indicates the geometry type.
MySQL uses values from 1 through 7 to indicate
Point, LineString,
Polygon, MultiPoint,
MultiLineString,
MultiPolygon, and
GeometryCollection.

A Point value has X and Y coordinates,
each represented as a double-precision value.

WKB values for more complex geometry values have more complex
data structures, as detailed in the OpenGIS specification.

Internal Geometry Storage Format

MySQL stores geometry values using 4 bytes to indicate the
SRID followed by the WKB representation of the value. For a
description of WKB format, see
Well-Known Binary (WKB) Format.

For the WKB part, these MySQL-specific considerations apply:

The byte-order indicator byte is 1 because MySQL stores
geometries as little-ending values.

Only GeometryCollection can be empty.
Such a value is stored with 0 elements.

Polygon rings can be specified both clockwise and
counterclockwise. MySQL flips the rings automatically when
reading data.

Cartesian coordinates are stored in the length unit of the
spatial reference system, with X values in the X coordinates
and Y values in the Y coordinates. Axis directions are those
specified by the spatial reference system.

Geographic coordinates are stored in the angle unit of the
spatial reference system, with longitudes in the X coordinates
and latitudes in the Y coordinates. Axis directions and the
meridian are those specified by the spatial reference system.

The LENGTH() function returns
the space in bytes required for value storage. Example: