Перейти к содержимому
Последнее обновление

ST_CIRCLE

Описание​

Преобразует WKT (Well-Known Text) в круг на сферической поверхности Земли.

Синтаксис​

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

Параметры​

ПараметрОписание
<center_lng>Долгота центра круга, тип DOUBLE, допустимый диапазон [-180, 180]
<center_lat>Широта центра круга, тип DOUBLE, допустимый диапазон [-90, 90]
<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 |
+--------------------------------------+