Pre-General Availability Draft: 2017-12-16

`Geometry`

is the root class of the
hierarchy. It is a noninstantiable class but has a number of
properties, described in the following list, that are common
to all geometry values created from any of the
`Geometry`

subclasses. Particular subclasses
have their own specific properties, described later.

**Geometry Properties**

A geometry value has the following properties:

Its

**type**. Each geometry belongs to one of the instantiable classes in the hierarchy.Its

**SRID**, or spatial reference identifier. This value identifies the geometry's associated spatial reference system that describes the coordinate space in which the geometry object is defined.In MySQL, the SRID value is an integer associated with the geometry value. The maximum usable SRID value is 2

^{32}−1. If a larger value is given, only the lower 32 bits are used.SRID 0 represents an infinite flat Cartesian plane with no units assigned to its axes. To ensure SRID 0 behavior, create geometry values using SRID 0. SRID 0 is the default for new geometry values if no SRID is specified.

Its

**coordinates**in its spatial reference system, represented as double-precision (8-byte) numbers. All nonempty geometries include at least one pair of (X,Y) coordinates. Empty geometries contain no coordinates.Coordinates are related to the SRID. For example, in different coordinate systems, the distance between two objects may differ even when objects have the same coordinates, because the distance on the

**planar**coordinate system and the distance on the**geodetic**system (coordinates on the Earth's surface) are different things.Its

**interior**,**boundary**, and**exterior**.Every geometry occupies some position in space. The exterior of a geometry is all space not occupied by the geometry. The interior is the space occupied by the geometry. The boundary is the interface between the geometry's interior and exterior.

Its

**MBR**(minimum bounding rectangle), or envelope. This is the bounding geometry, formed by the minimum and maximum (X,Y) coordinates:`((MINX MINY, MAXX MINY, MAXX MAXY, MINX MAXY, MINX MINY))`

Whether the value is

**simple**or**nonsimple**. Geometry values of types (`LineString`

,`MultiPoint`

,`MultiLineString`

) are either simple or nonsimple. Each type determines its own assertions for being simple or nonsimple.Whether the value is

**closed**or**not closed**. Geometry values of types (`LineString`

,`MultiString`

) are either closed or not closed. Each type determines its own assertions for being closed or not closed.Whether the value is

**empty**or**nonempty**A geometry is empty if it does not have any points. Exterior, interior, and boundary of an empty geometry are not defined (that is, they are represented by a`NULL`

value). An empty geometry is defined to be always simple and has an area of 0.Its

**dimension**. A geometry can have a dimension of −1, 0, 1, or 2:−1 for an empty geometry.

0 for a geometry with no length and no area.

1 for a geometry with nonzero length and zero area.

2 for a geometry with nonzero area.

`Point`

objects have a dimension of zero.`LineString`

objects have a dimension of 1.`Polygon`

objects have a dimension of 2. The dimensions of`MultiPoint`

,`MultiLineString`

, and`MultiPolygon`

objects are the same as the dimensions of the elements they consist of.

Example of usage:

> SELECT DISTANCE(city1.lat, city1.lng, city2.lat, city2.lng);