content_image/736405.jpg
## Well-Known Binary (WKB) Format 

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

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.4, “Spatial Data Types” ). It is also defined in the ISO SQL/MM Part 3: Spatial  standard. 

WKB uses 1-byte unsigned integers, 4-byte unsigned integers, and 8-byte double-precision numbers (IEEE 754 format). A byte is eight bits. 

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. 

<img src='content_image/736405.jpg'>

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-endian values. 

•MySQL supports geometry types of Point , LineString , Polygon , MultiPoint , MultiLineString , MultiPolygon , and GeometryCollection . Other geometry types are not supported. 

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

