The functions in this section provide convenience operations on geometry values.
Unless otherwise specified, functions in this section handle their geometry arguments as follows:
- If any argument is - NULL, the return value is- NULL.
- If any geometry argument is not a syntactically well-formed geometry, an - ER_GIS_INVALID_DATAerror occurs.
- If any geometry argument is a syntactically well-formed geometry in an undefined spatial reference system (SRS), an - ER_SRS_NOT_FOUNDerror occurs.
- For functions that take multiple geometry arguments, if those arguments are not in the same SRS, an - ER_GIS_DIFFERENT_SRIDSerror occurs.
- Otherwise, the return value is non- - NULL.
These convenience functions are available:
- ST_Distance_Sphere(- g1,- g2[,- radius])- Returns the minimum spherical distance between - Pointor- MultiPointarguments on a sphere, in meters. (For general-purpose distance calculations, see the- ST_Distance()function.) The optional- radiusargument should be given in meters.- If both geometry parameters are valid Cartesian - Pointor- MultiPointvalues in SRID 0, the return value is shortest distance between the two geometries on a sphere with the provided radius. If omitted, the default radius is 6,370,986 meters, Point X and Y coordinates are interpreted as longitude and latitude, respectively, in degrees.- If both geometry parameters are valid - Pointor- MultiPointvalues in a geographic spatial reference system (SRS), the return value is the shortest distance between the two geometries on a sphere with the provided radius. If omitted, the default radius is equal to the mean radius, defined as (2a+b)/3, where a is the semi-major axis and b is the semi-minor axis of the SRS.- ST_Distance_Sphere()handles its arguments as described in the introduction to this section, with these exceptions:- Supported geometry argument combinations are - Pointand- Point, or- Pointand- MultiPoint(in any argument order). If at least one of the geometries is neither- Pointnor- MultiPoint, and its SRID is 0, an- ER_NOT_IMPLEMENTED_FOR_CARTESIAN_SRSerror occurs. If at least one of the geometries is neither- Pointnor- MultiPoint, and its SRID refers to a geographic SRS, an- ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRSerror occurs. If any geometry refers to a projected SRS, an- ER_NOT_IMPLEMENTED_FOR_PROJECTED_SRSerror occurs.
- If any argument has a longitude or latitude that is out of range, an error occurs: - If a longitude value is not in the range (−180, 180], an - ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGEerror occurs.
- If a latitude value is not in the range [−90, 90], an - ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGEerror occurs.
 - Ranges shown are in degrees. If an SRS uses another unit, the range uses the corresponding values in its unit. The exact range limits deviate slightly due to floating-point arithmetic. 
- If the - radiusargument is present but not positive, an- ER_NONPOSITIVE_RADIUSerror occurs.
- If the distance exceeds the range of a double-precision number, an - ER_STD_OVERFLOW_ERRORerror occurs.
 - mysql> SET @pt1 = ST_GeomFromText('POINT(0 0)'); mysql> SET @pt2 = ST_GeomFromText('POINT(180 0)'); mysql> SELECT ST_Distance_Sphere(@pt1, @pt2); +--------------------------------+ | ST_Distance_Sphere(@pt1, @pt2) | +--------------------------------+ | 20015042.813723423 | +--------------------------------+
- Returns 1 if the argument is geometrically valid, 0 if the argument is not geometrically valid. Geometry validity is defined by the OGC specification. - The only valid empty geometry is represented in the form of an empty geometry collection value. - ST_IsValid()returns 1 in this case. MySQL does not support GIS- EMPTYvalues such as- POINT EMPTY.- ST_IsValid()handles its arguments as described in the introduction to this section, with this exception:- If the geometry has a geographic SRS with a longitude or latitude that is out of range, an error occurs: - If a longitude value is not in the range (−180, 180], an - ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGEerror occurs.
- If a latitude value is not in the range [−90, 90], an - ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGEerror occurs.
 - Ranges shown are in degrees. If an SRS uses another unit, the range uses the corresponding values in its unit. The exact range limits deviate slightly due to floating-point arithmetic. 
 - mysql> SET @ls1 = ST_GeomFromText('LINESTRING(0 0,-0.00 0,0.0 0)'); mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 1 1)'); mysql> SELECT ST_IsValid(@ls1); +------------------+ | ST_IsValid(@ls1) | +------------------+ | 0 | +------------------+ mysql> SELECT ST_IsValid(@ls2); +------------------+ | ST_IsValid(@ls2) | +------------------+ | 1 | +------------------+
- Returns the rectangle that forms the envelope around two points, as a - Point,- LineString, or- Polygon.- Calculations are done using the Cartesian coordinate system rather than on a sphere, spheroid, or on earth. - Given two points - pt1and- pt2,- ST_MakeEnvelope()creates the result geometry on an abstract plane like this:- If - pt1and- pt2are equal, the result is the point- pt1.
- Otherwise, if - (is a vertical or horizontal line segment, the result is the line segment- pt1,- pt2)- (.- pt1,- pt2)
- Otherwise, the result is a polygon using - pt1and- pt2as diagonal points.
 - The result geometry has an SRID of 0. - ST_MakeEnvelope()handles its arguments as described in the introduction to this section, with these exceptions:- If the arguments are not - Pointvalues, an- ER_WRONG_ARGUMENTSerror occurs.
- An - ER_GIS_INVALID_DATAerror occurs for the additional condition that any coordinate value of the two points is infinite or- NaN.
- If any geometry has an SRID value for a geographic spatial reference system (SRS), an - ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRSerror occurs.
 - mysql> SET @pt1 = ST_GeomFromText('POINT(0 0)'); mysql> SET @pt2 = ST_GeomFromText('POINT(1 1)'); mysql> SELECT ST_AsText(ST_MakeEnvelope(@pt1, @pt2)); +----------------------------------------+ | ST_AsText(ST_MakeEnvelope(@pt1, @pt2)) | +----------------------------------------+ | POLYGON((0 0,1 0,1 1,0 1,0 0)) | +----------------------------------------+
- Simplifies a geometry using the Douglas-Peucker algorithm and returns a simplified value of the same type. - The geometry may be any geometry type, although the Douglas-Peucker algorithm may not actually process every type. A geometry collection is processed by giving its components one by one to the simplification algorithm, and the returned geometries are put into a geometry collection as result. - The - max_distanceargument is the distance (in units of the input coordinates) of a vertex to other segments to be removed. Vertices within this distance of the simplified linestring are removed.- According to Boost.Geometry, geometries might become invalid as a result of the simplification process, and the process might create self-intersections. To check the validity of the result, pass it to - ST_IsValid().- ST_Simplify()handles its arguments as described in the introduction to this section, with this exception:- If the - max_distanceargument is not positive, or is- NaN, an- ER_WRONG_ARGUMENTSerror occurs.
 - mysql> SET @g = ST_GeomFromText('LINESTRING(0 0,0 1,1 1,1 2,2 2,2 3,3 3)'); mysql> SELECT ST_AsText(ST_Simplify(@g, 0.5)); +---------------------------------+ | ST_AsText(ST_Simplify(@g, 0.5)) | +---------------------------------+ | LINESTRING(0 0,0 1,1 1,2 3,3 3) | +---------------------------------+ mysql> SELECT ST_AsText(ST_Simplify(@g, 1.0)); +---------------------------------+ | ST_AsText(ST_Simplify(@g, 1.0)) | +---------------------------------+ | LINESTRING(0 0,3 3) | +---------------------------------+
- Validates a geometry according to the OGC specification. A geometry can be syntactically well-formed (WKB value plus SRID) but geometrically invalid. For example, this polygon is geometrically invalid: - POLYGON((0 0, 0 0, 0 0, 0 0, 0 0))- ST_Validate()returns the geometry if it is syntactically well-formed and is geometrically valid,- NULLif the argument is not syntactically well-formed or is not geometrically valid or is- NULL.- ST_Validate()can be used to filter out invalid geometry data, although at a cost. For applications that require more precise results not tainted by invalid data, this penalty may be worthwhile.- If the geometry argument is valid, it is returned as is, except that if an input - Polygonor- MultiPolygonhas clockwise rings, those rings are reversed before checking for validity. If the geometry is valid, the value with the reversed rings is returned.- The only valid empty geometry is represented in the form of an empty geometry collection value. - ST_Validate()returns it directly without further checks in this case.- ST_Validate()handles its arguments as described in the introduction to this section, with the exceptions listed here:- If the geometry has a geographic SRS with a longitude or latitude that is out of range, an error occurs: - If a longitude value is not in the range (−180, 180], an - ER_GEOMETRY_PARAM_LONGITUDE_OUT_OF_RANGEerror occurs.
- If a latitude value is not in the range [−90, 90], an - ER_GEOMETRY_PARAM_LATITUDE_OUT_OF_RANGEerror occurs.
 - Ranges shown are in degrees. The exact range limits deviate slightly due to floating-point arithmetic. 
 - mysql> SET @ls1 = ST_GeomFromText('LINESTRING(0 0)'); mysql> SET @ls2 = ST_GeomFromText('LINESTRING(0 0, 1 1)'); mysql> SELECT ST_AsText(ST_Validate(@ls1)); +------------------------------+ | ST_AsText(ST_Validate(@ls1)) | +------------------------------+ | NULL | +------------------------------+ mysql> SELECT ST_AsText(ST_Validate(@ls2)); +------------------------------+ | ST_AsText(ST_Validate(@ls2)) | +------------------------------+ | LINESTRING(0 0,1 1) | +------------------------------+