ST_ANGLE_SPHERE
説明
地球表面上の2点間の中心角(度単位)を計算します。入力パラメータは順に、点Xの経度、点Xの緯度、点Yの経度、点Yの緯度です。
中心角とは、2点を結ぶ弧が地球の中心で作る角度を指します。
構文
ST_ANGLE_SPHERE( <x_lng>, <x_lat>, <y_lng>, <y_lat>)
参数
| parameters | description |
|---|---|
<x_lng> | 点Xの経度、型はDOUBLE、有効範囲は[-180, 180] |
<y_lng> | 点Yの経度、型はDOUBLE、有効範囲は[-180, 180] |
<x_lat> | 点Xの緯度、型はDOUBLE、有効範囲は[-90, 90] |
<y_lat> | 点Yの緯度、型はDOUBLE、有効範囲は[-90, 90] |
戻り値
2点間の中心角を度で返します。型はDOUBLE、範囲は[0, 180]です。
ST_ANGLE_SPHEREのエッジケース:
- 任意の入力パラメータがNULLの場合、NULLを返します。
- 任意の座標が範囲外の場合(例:経度 > 180、緯度 < -90)、NULLを返します。
- 2点が同一の場合(同じ経度と緯度)、0を返します。
- 2点が対蹠点の場合(地球上で正反対)、180を返します。
Example
隣接する2点間の中心角の計算
select ST_Angle_Sphere(116.35620117, 39.939093, 116.4274406433, 39.9020987219);
+---------------------------------------------------------------------------+
| st_angle_sphere(116.35620117, 39.939093, 116.4274406433, 39.9020987219) |
+---------------------------------------------------------------------------+
| 0.0659823452409903 |
+---------------------------------------------------------------------------+
経度差45°の赤道上の2点
select ST_Angle_Sphere(0, 0, 45, 0);
+----------------------------------------+
| st_angle_sphere(0.0, 0.0, 45.0, 0.0) |
+----------------------------------------+
| 45 |
+----------------------------------------+
同一座標を持つ2つの点
mysql> SELECT ST_ANGLE_SPHERE(30, 60, 30, 60);
+---------------------------------+
| ST_ANGLE_SPHERE(30, 60, 30, 60) |
+---------------------------------+
| 0 |
+---------------------------------+
対蹠点(直径上で対向する点)
mysql> SELECT ST_ANGLE_SPHERE(0, 0, 180, 0);
+-------------------------------+
| ST_ANGLE_SPHERE(0, 0, 180, 0) |
+-------------------------------+
| 180 |
+-------------------------------+
東西の経度をまたぐ2点(例:東経170度と西経170度)
mysql> SELECT ST_ANGLE_SPHERE(170, 30, -170, 30);
+------------------------------------+
| ST_ANGLE_SPHERE(170, 30, -170, 30) |
+------------------------------------+
| 17.298330210575152 |
+------------------------------------+
赤道を挟んだ2点(北緯と南緯)
mysql> SELECT ST_ANGLE_SPHERE(0, 45, 0, -45);
+--------------------------------+
| ST_ANGLE_SPHERE(0, 45, 0, -45) |
+--------------------------------+
| 89.99999999999999 |
+--------------------------------+
無効な経度(範囲外)
mysql> SELECT ST_ANGLE_SPHERE(190, 30, 10, 30);
+----------------------------------+
| ST_ANGLE_SPHERE(190, 30, 10, 30) |
+----------------------------------+
| NULL |
+----------------------------------+
いずれかのパラメータがNULLです
mysql> SELECT ST_ANGLE_SPHERE(NULL, 30, 10, 30);
+-----------------------------------+
| ST_ANGLE_SPHERE(NULL, 30, 10, 30) |
+-----------------------------------+
| NULL |
+-----------------------------------+
緯度が範囲外です(例:91°N)
mysql> SELECT ST_ANGLE_SPHERE(0, 0, 180, 91);
+--------------------------------+
| ST_ANGLE_SPHERE(0, 0, 180, 91) |
+--------------------------------+
| NULL |
+--------------------------------+