Rechercher dans le manuel MySQL

12.16.8 Spatial Operator Functions

OpenGIS proposes a number of functions that can produce geometries. They are designed to implement spatial operators.

These functions support all argument type combinations except those that are inapplicable according to the Open Geospatial Consortium specification.

Unless otherwise specified, functions in this section handle their 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_DATA error occurs.

  • If any geometry argument has an SRID value that refers to an undefined spatial reference system (SRS), an ER_SRS_NOT_FOUND error occurs.

  • For functions that take multiple geometry arguments, if those arguments do not have the same SRID, an ER_GIS_DIFFERENT_SRIDS error occurs.

  • If any geometry argument has an SRID value for a geographic SRS, an ER_NOT_IMPLEMENTED_FOR_GEOGRAPHIC_SRS error occurs.

  • Otherwise, the return value is non-NULL.

These spatial operator functions are available:

  • ST_Buffer(g, d[, strategy1[, strategy2[, strategy3]]])

    Returns a geometry that represents all points whose distance from the geometry value g is less than or equal to a distance of d.

    If the geometry argument is empty, ST_Buffer() returns an empty geometry.

    If the distance is 0, ST_Buffer() returns the geometry argument unchanged:

    1. mysql> SET @pt = ST_GeomFromText('POINT(0 0)');
    2. mysql> SELECT ST_AsText(ST_Buffer(@pt, 0));
    3. +------------------------------+
    4. | ST_AsText(ST_Buffer(@pt, 0)) |
    5. +------------------------------+
    6. | POINT(0 0)                   |
    7. +------------------------------+

    ST_Buffer() supports negative distances for Polygon and MultiPolygon values, and for geometry collections containing Polygon or MultiPolygon values. The result may be an empty geometry.

    ST_Buffer() permits up to three optional strategy arguments following the distance argument. Strategies influence buffer computation. These arguments are byte string values produced by the ST_Buffer_Strategy() function, to be used for point, join, and end strategies:

    Up to one strategy of each type may be specified, and they may be given in any order.

    ST_Buffer() handles its arguments as described in the introduction to this section, with these exceptions:

    • For a negative distance for Point, MultiPoint, LineString, and MultiLineString values, and for geometry collections not containing any Polygon or MultiPolygon values, an ER_WRONG_ARGUMENTS error occurs.

    • If multiple strategies of a given type are specified, an ER_WRONG_ARGUMENTS error occurs.

    1. mysql> SET @pt = ST_GeomFromText('POINT(0 0)');
    2. mysql> SET @pt_strategy = ST_Buffer_Strategy('point_square');
    3. mysql> SELECT ST_AsText(ST_Buffer(@pt, 2, @pt_strategy));
    4. +--------------------------------------------+
    5. | ST_AsText(ST_Buffer(@pt, 2, @pt_strategy)) |
    6. +--------------------------------------------+
    7. | POLYGON((-2 -2,2 -2,2 2,-2 2,-2 -2))       |
    8. +--------------------------------------------+
    1. mysql> SET @ls = ST_GeomFromText('LINESTRING(0 0,0 5,5 5)');
    2. mysql> SET @end_strategy = ST_Buffer_Strategy('end_flat');
    3. mysql> SET @join_strategy = ST_Buffer_Strategy('join_round', 10);
    4. mysql> SELECT ST_AsText(ST_Buffer(@ls, 5, @end_strategy, @join_strategy))
    5. +---------------------------------------------------------------+
    6. | ST_AsText(ST_Buffer(@ls, 5, @end_strategy, @join_strategy))   |
    7. +---------------------------------------------------------------+
    8. | POLYGON((5 5,5 10,0 10,-3.5355339059327373 8.535533905932738, |
    9. | -5 5,-5 0,0 0,5 0,5 5))                                       |
    10. +---------------------------------------------------------------+
  • ST_Buffer_Strategy(strategy[, points_per_circle])

    This function returns a strategy byte string for use with ST_Buffer() to influence buffer computation.

    Information about strategies is available at Boost.org.

    The first argument must be a string indicating a strategy option:

    • For point strategies, permitted values are 'point_circle' and 'point_square'.

    • For join strategies, permitted values are 'join_round' and 'join_miter'.

    • For end strategies, permitted values are 'end_round' and 'end_flat'.

    If the first argument is 'point_circle', 'join_round', 'join_miter', or 'end_round', the points_per_circle argument must be given as a positive numeric value. The maximum points_per_circle value is the value of the max_points_in_geometry system variable.

    For examples, see the description of ST_Buffer().

    ST_Buffer_Strategy() handles its arguments as described in the introduction to this section, with these exceptions:

    • If any argument is invalid, an ER_WRONG_ARGUMENTS error occurs.

    • If the first argument is 'point_square' or 'end_flat', the points_per_circle argument must not be given or an ER_WRONG_ARGUMENTS error occurs.

  • ST_ConvexHull(g)

    Returns a geometry that represents the convex hull of the geometry value g.

    This function computes a geometry's convex hull by first checking whether its vertex points are colinear. The function returns a linear hull if so, a polygon hull otherwise. This function processes geometry collections by extracting all vertex points of all components of the collection, creating a MultiPoint value from them, and computing its convex hull.

    ST_ConvexHull() handles its arguments as described in the introduction to this section, with this exception:

    • The return value is NULL for the additional condition that the argument is an empty geometry collection.

    1. mysql> SET @g = 'MULTIPOINT(5 0,25 0,15 10,15 25)';
    2. mysql> SELECT ST_AsText(ST_ConvexHull(ST_GeomFromText(@g)));
    3. +-----------------------------------------------+
    4. | ST_AsText(ST_ConvexHull(ST_GeomFromText(@g))) |
    5. +-----------------------------------------------+
    6. | POLYGON((5 0,25 0,15 25,5 0))                 |
    7. +-----------------------------------------------+
  • ST_Difference(g1, g2)

    Returns a geometry that represents the point set difference of the geometry values g1 and g2.

    ST_Difference() handles its arguments as described in the introduction to this section.

    1. mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);
    2. mysql> SELECT ST_AsText(ST_Difference(@g1, @g2));
    3. +------------------------------------+
    4. | ST_AsText(ST_Difference(@g1, @g2)) |
    5. +------------------------------------+
    6. | POINT(1 1)                         |
    7. +------------------------------------+
  • ST_Intersection(g1, g2)

    Returns a geometry that represents the point set intersection of the geometry values g1 and g2.

    ST_Intersection() handles its arguments as described in the introduction to this section.

    1. mysql> SET @g1 = ST_GeomFromText('LineString(1 1, 3 3)');
    2. mysql> SET @g2 = ST_GeomFromText('LineString(1 3, 3 1)');
    3. mysql> SELECT ST_AsText(ST_Intersection(@g1, @g2));
    4. +--------------------------------------+
    5. | ST_AsText(ST_Intersection(@g1, @g2)) |
    6. +--------------------------------------+
    7. | POINT(2 2)                           |
    8. +--------------------------------------+
  • ST_SymDifference(g1, g2)

    Returns a geometry that represents the point set symmetric difference of the geometry values g1 and g2, which is defined as:

    g1 symdifference g2 := (g1 union g2) difference (g1 intersection g2)

    Or, in function call notation:

    ST_SymDifference(g1, g2) = ST_Difference(ST_Union(g1, g2), ST_Intersection(g1, g2))

    ST_SymDifference() handles its arguments as described in the introduction to this section.

    1. mysql> SET @g1 = Point(1,1), @g2 = Point(2,2);
    2. mysql> SELECT ST_AsText(ST_SymDifference(@g1, @g2));
    3. +---------------------------------------+
    4. | ST_AsText(ST_SymDifference(@g1, @g2)) |
    5. +---------------------------------------+
    6. | MULTIPOINT((1 1),(2 2))               |
    7. +---------------------------------------+
  • ST_Transform(g, target_srid)

    Transforms a geometry from one spatial reference system (SRS) to another. The return value is a geometry of the same type as the input geometry with all coordinates transformed to the target SRID, target_srid. Transformation support is limited to geographic SRSs, unless the SRID of the geometry argument is the same as the target SRID value, in which case the return value is the input geometry for any valid SRS.

    ST_Transform() handles its arguments as described in the introduction to this section, with these exceptions:

    ST_SRID(g, target_srid) and ST_Transform(g, target_srid) differ as follows:

    • ST_SRID() changes the geometry SRID value without transforming its coordinates.

    • ST_Transform() transforms the geometry coordinates in addition to changing its SRID value.

    1. mysql> SET @p = ST_GeomFromText('POINT(52.381389 13.064444)', 4326);
    2. mysql> SELECT ST_AsText(@p);
    3. +----------------------------+
    4. | ST_AsText(@p)              |
    5. +----------------------------+
    6. | POINT(52.381389 13.064444) |
    7. +----------------------------+
    8. mysql> SET @p = ST_Transform(@p, 4230);
    9. mysql> SELECT ST_AsText(@p);
    10. +---------------------------------------------+
    11. | ST_AsText(@p)                               |
    12. +---------------------------------------------+
    13. | POINT(52.38208611407426 13.065520672345304) |
    14. +---------------------------------------------+
  • ST_Union(g1, g2)

    Returns a geometry that represents the point set union of the geometry values g1 and g2.

    ST_Union() handles its arguments as described in the introduction to this section.

    1. mysql> SET @g1 = ST_GeomFromText('LineString(1 1, 3 3)');
    2. mysql> SET @g2 = ST_GeomFromText('LineString(1 3, 3 1)');
    3. mysql> SELECT ST_AsText(ST_Union(@g1, @g2));
    4. +--------------------------------------+
    5. | ST_AsText(ST_Union(@g1, @g2))        |
    6. +--------------------------------------+
    7. | MULTILINESTRING((1 1,3 3),(1 3,3 1)) |
    8. +--------------------------------------+

In addition, Section 12.16.7, “Geometry Property Functions”, discusses several functions that construct new geometries from existing ones. See that section for descriptions of these functions:


Find a PHP function

Document created the 26/06/2006, last modified the 26/10/2018
Source of the printed document:https://www.gaudry.be/en/mysql-rf-spatial-operator-functions.html

The infobrol is a personal site whose content is my sole responsibility. The text is available under CreativeCommons license (BY-NC-SA). More info on the terms of use and the author.

References

  1. View the html document Language of the document:en Manuel MySQL : https://dev.mysql.com/

These references and links indicate documents consulted during the writing of this page, or which may provide additional information, but the authors of these sources can not be held responsible for the content of this page.
The author This site is solely responsible for the way in which the various concepts, and the freedoms that are taken with the reference works, are presented here. Remember that you must cross multiple source information to reduce the risk of errors.

Contents Haut