跳到主要内容

ST_CIRCLE

描述

将一个 WKT(Well Known Text)转化为地球球面上的一个圆。

语法

ST_CIRCLE( <center_lng>, <center_lat>, <radius>)

参数

参数说明
<center_lng>圆心的经度,类型为 DOUBLE,取值范围为 [-180, 180]
<center_lat>圆心的纬度,类型为 DOUBLE,取值范围为 [-180, 180]
<radius>圆的半径,类型为 DOUBLE,单位为 米

返回值

返回地球球面上的圆,类型为 GeoCircle。其 WKT 表示形式为 CIRCLE ((<center_lng> <center_lat>), ),其中包含圆心坐标和半径信息。

ST_CIRCLE 存在以下边缘情况:

  • 若任何输入参数为 NULL,返回 NULL。
  • 若 <center_lng> 超出 [-180, 180] 或 <center_lat> 超出 [-90, 90],返回 NULL。
  • 为 0,返回以圆心为唯一点的特殊圆(WKT 表示为 CIRCLE ((<center_lng> <center_lat>), 0))。

举例

基本用法(正常圆)

SELECT ST_AsText(ST_Circle(111, 64, 10000));
+--------------------------------------------+
| st_astext(st_circle(111.0, 64.0, 10000.0)) |
+--------------------------------------------+
| CIRCLE ((111 64), 10000) |
+--------------------------------------------+

赤道上的圆(纬度 0°)

mysql> SELECT ST_AsText(ST_Circle(0, 0, 5000));
+----------------------------------+
| ST_AsText(ST_Circle(0, 0, 5000)) |
+----------------------------------+
| CIRCLE ((0 0), 5000) |
+----------------------------------+

半径为 0 的圆(退化为点)

mysql> SELECT ST_AsText(ST_Circle(120, 30, 0));
+----------------------------------+
| ST_AsText(ST_Circle(120, 30, 0)) |
+----------------------------------+
| CIRCLE ((120 30), 0) |
+----------------------------------+

无效参数(经度超出范围)

mysql> SELECT ST_AsText(ST_Circle(190, 30, 1000));
+-------------------------------------+
| ST_AsText(ST_Circle(190, 30, 1000)) |
+-------------------------------------+
| NULL |
+-------------------------------------+

参数为 NULL

mysql> SELECT ST_AsText(ST_Circle(NULL, 30, 1000));
+--------------------------------------+
| ST_AsText(ST_Circle(NULL, 30, 1000)) |
+--------------------------------------+
| NULL |
+--------------------------------------+