回答:
平面方位は次を使用して計算できますST_Azimuth
。
SELECT ST_Azimuth(ST_MakePoint(1,2),
ST_MakePoint(3,4))/(2*pi())*360 as degAz,
ST_Azimuth(ST_MakePoint(3,4),
ST_MakePoint(1,2))/(2*pi())*360 As degAzrev
degaz degazrev
------ ---------
45 225
球面方位(Quoting potgis-usersグループ)の場合:
PostGISの方位関数は、単純なarctan関数を使用して方位を決定しているようです。座標を投影座標系に変換してからクエリを実行すると、結果はFCCサイトの結果にはるかに近くなります。
UTMゾーン31への簡単な変換を次に示します。
select degrees(azimuth(
'POINT(634714.442133176 5802006.052402816)',
'POINT(634731.2410598891 5801981.648284801)'
));
145.457858825445の方位角が得られます。UTMゾーンの中心にあるポイント、またはより適切な投影は、より良い結果をもたらします。
これは、主にレガシーの理由で、この問題に対処しなければならなかったときに選択したソリューションです(方位角を計算するPython関数がありました)。まず、2点間の正確な距離を示す関数を見つける必要があります。postgisマニュアルを引用:
ST_distance_sphere(point、point)2つの緯度/経度ポイント間の直線距離をメートル単位で返します。球状の地球と6370986メートルの半径を使用します。distance_spheroid()より高速ですが、精度は劣ります。ポイントに対してのみ実装されます。
ポイント間の経度と緯度の距離を測定し、arctan
関数を使用して角度を取得します。
atan
か?私の三角法は少しかすんでいます