ST_Azimuth — pointAとPointBで定義されるベクタの、水平面での方位をラジアン単位で返します。方位は時計回りで、前半は下向き方向で後半は上向き方向になります。時計でいうと12=0; 3=PI/2; 6=PI; 9=3PI/4となります。
float ST_Azimuth(
geometry pointA, geometry pointB)
;
float ST_Azimuth(
geography pointA, geography pointB)
;
与えられたポイントジオメトリで定義される線分の方位を返し、2点が同位置にある場合はNULLを返します。返り値はラジアン単位です。方位は時計回りで、前半は下向き方向で後半は上向き方向になります。時計でいうと12=0; 3=PI/2; 6=PI; 9=3PI/4となります。
方位は基準面とポイントのあいたの角度(この場合はラジアン単位)と定義される数学的な概念です。
初出: 1.1.0
機能強化: 2.0.0では、ジオグラフィが導入されました。
ST_Azimuthは、ST_Translateと併用して、垂直軸に沿ってオブジェクトをシフトさせる場合に、特に便利です。これの例として、upgis_lineshift Plpgsqlfunctions PostGIS wiki sectionを参照して下さい。
度単位のジオメトリの方位
SELECT ST_Azimuth(ST_Point(25,45), ST_Point(75,100))/(2*pi())*360 as degAz, ST_Azimuth(ST_Point(75,100), ST_Point(25,45))/(2*pi())*360 As degAzrev; -- ご注意: 度に関するPostgreSQL組み込み関数を使うと覚えやすいです。 -- 両方とも同じ答えです。 SELECT degrees( ST_Azimuth(ST_Point(25,45), ST_Point(75,100)) ) as degAz, degrees( ST_Azimuth(ST_Point(75,100), ST_Point(25,45)) ) As degAzrev; degaz | degazrev ------------------+------------------ 42.2736890060937 | 222.273689006094
|
|