AnalyticDB for MySQL支持的GEO函数包括ST_Point或Point、ST_AsText、ST_GeometryFromText或ST_GeomFromText、ST_Distance、ST_Distance_Sphere,本文介绍GEO函数的用法。

ST_Point或Point

ST_Point(x, y)
  • 命令说明:先将两个DOUBLE类型的数值x和y进行除法运算x/y,然后将x/y的结果值为坐标构造一个POINT类型的值。
  • 返回值类型:GEOMETRY类型的POINT对象,直接通过SELECT查询函数结果将显示乱码。
  • 示例:
    SELECT ST_Point(1,1);
    +-----------------------+
    | ST_Point(1,1)         |
    +-----------------------+
    |        �?      �?   |                    

ST_AsText

ST_AsText(g)
  • 命令说明:返回g的WKT(Well-Known Text)格式。
  • 示例:
    SELECT ST_AsText(ST_Point(1,1));
    +--------------------------+
    | ST_AsText(ST_Point(1,1)) |
    +--------------------------+
    | POINT (1 1)              |                   

ST_GeometryFromText或ST_GeomFromText

ST_GeometryFromText(wkt)
  • 命令说明:使用WKT格式的字符串构造GEOMETRY值。
  • 返回值类型:GEOMETRY类型的对象,直接通过SELECT查询函数结果将显示乱码。
  • 示例:
    SELECT ST_GeometryFromText('Point(1 1)');
    +-----------------------------------+
    | ST_GeometryFromText('Point(1 1)') |
    +-----------------------------------+
    |        �?      �?                 |              
    SELECT ST_AsText(ST_GeometryFromText('Point(1 1)'));
    +----------------------------------------------+
    | ST_AsText(ST_GeometryFromText('Point(1 1)')) |
    +----------------------------------------------+
    | POINT (1 1)                                  |          

ST_Distance

ST_Distance(g1, g2)
  • 命令说明:返回g1、g2之间的直线距离。
  • 返回值类型:DOUBLE。
  • 示例:
    SELECT ST_Distance(ST_Point(1,1), ST_Point(2,2));
    +-------------------------------------------+
    | ST_Distance(ST_Point(1,1), ST_Point(2,2)) |
    +-------------------------------------------+
    |                        1.4142135623730951 |           

ST_Distance_Sphere

ST_Distance_Sphere(g1, g2 [, radius])
  • 命令说明:返回g1、g2之间的球面距离,可以指定球的半径radius,radius默认值为6370986米。
  • 返回值类型:DOUBLE。
  • 示例:
    SELECT ST_Distance_Sphere(point(1,1), point(2,2));
    +--------------------------------------------+
    | ST_Distance_Sphere(point(1,1), point(2,2)) |
    +--------------------------------------------+
    |                         157225.08654191086 |       
    SELECT ST_Distance_Sphere(point(1,1), point(2,2), 6370986);
    +-----------------------------------------------------+
    | ST_Distance_Sphere(point(1,1), point(2,2), 6370986) |
    +-----------------------------------------------------+
    |                                  157225.08654191086 |