- 类别:
ST_AZIMUTH¶
给定一个表示原点(观察者位置)的点和一个指定的点,返回以弧度为单位的方位角。两个点都必须是 GEOGRAPHY 或 GEOMETRY 对象。
方位角 (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> )
实参¶
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 | +---------------------------------+
以下示例返回原点(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 | +---------------------------------+
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 |
+------------------------------------------------------------------+
以下示例返回原点(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 |
+-------------------------------------------------------------------------+