类别:

地理空间函数

ST_AZIMUTH

给定一个表示原点(观察者位置)的点和一个指定的点,返回以弧度为单位的方位角。两个点都必须是 GEOGRAPHYGEOMETRY 对象。

方位角 (link removed) 是当原点处的观测者面向北方(对于 GEOGRAPHY 对象)或 Y 轴(对于 GEOMETRY 对象)时两点之间的角度。顺时针方向的角度为正,为:

  • 0 表示指向北方的线段。

  • π/2 表示指向东方的线段。

  • π 表示指向南方的线段。

  • 3π/2 表示指向西方的线段。

如果两个点的位置相同,则函数返回 NULL。

对于地球上的 GEOGRAPHY 对象,此处描述的公式 (link removed) 用于确定方位角。

小心

使用椭圆地球模型的系统使用 更复杂的方位角算法 (link removed),偶尔会产生明显不同的结果。

语法

ST_AZIMUTH( <geography_expression_for_origin> , <geography_expression_for_target> )
ST_AZIMUTH( <geometry_expression_for_origin> , <geometry_expression_for_target> )
Copy

实参

geography_expression_for_origin

GEOGRAPHY 对象,该对象是表示原点(观察者所在的位置)的点。

geography_expression_for_target

GEOGRAPHY 对象,该对象是要计算其方位角的点。

geometry_expression_for_origin

GEOMETRY 对象,该对象是表示原点(观察者所在的位置)的点。

geometry_expression_for_target

GEOMETRY 对象,该对象是要计算其方位角的点。

返回

返回一个类型 REAL 的值,该值是方位角(以弧度为单位)。

使用说明

  • 如果其中一个输入地理空间对象不是点,则函数将报告错误。

  • 如果一个或两个输入点为 NULL,则返回 NULL。

示例

GEOGRAPHY 示例

以下示例返回原点(0,1)和目标点(0,0)的方位角(以弧度为单位):

SELECT ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(0 0)')
);
+---------------------------------+
|                     ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(0 0)') |
|                               ) |
|---------------------------------|
|                     3.141592654 |
+---------------------------------+
Copy

以下示例返回原点(0,1)和目标点(1,2)的方位角(以度为单位):

SELECT DEGREES(ST_AZIMUTH(
    TO_GEOGRAPHY('POINT(0 1)'),
    TO_GEOGRAPHY('POINT(1 2)')
));
+---------------------------------+
|             DEGREES(ST_AZIMUTH( |
|     TO_GEOGRAPHY('POINT(0 1)'), |
|      TO_GEOGRAPHY('POINT(1 2)') |
|                              )) |
|---------------------------------|
|                    44.978182941 |
+---------------------------------+
Copy

GEOMETRY 示例

以下示例返回原点(0,1)和目标点(0,0)的方位角(以弧度为单位):

SELECT ST_AZIMUTH(
    TO_GEOMETRY('POINT(0 1)', TO_GEOMETRY('POINT(0 0)')
);

+------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 1)'), TO_GEOMETRY('POINT(0 0)')) |
|------------------------------------------------------------------|
| 3.141592654                                                      |
+------------------------------------------------------------------+
Copy

以下示例返回原点(0,1)和目标点(0.707,0.707)的方位角(以度为单位):

SELECT ST_AZIMUTH(
    TO_GEOMETRY('POINT(0 0)', TO_GEOMETRY(0.707 0.707')
);

+-------------------------------------------------------------------------+
| ST_AZIMUTH(TO_GEOMETRY('POINT(0 0)'), TO_GEOMETRY('POINT(0.707 0.707')) |
|-------------------------------------------------------------------------|
| 0.7853981634                                                            |
+-------------------------------------------------------------------------+
Copy
语言: 中文