PostGISで交差する2つの線の間の角度を計算します。
PostGISでの角度計算の開始点はST_Azimuthのようですが、それは入力として点を取ります。最初に考えたのは、交差する線の終点を取得し、それらの方位角計算を実行することでした。ほとんどのラインフィーチャが直線ではないため、これでは十分ではありません。交差点の角度に興味があります。だから私が思いついたのは、次の手順を実行するネストされた操作です:
- 2つのラインフィーチャテーブル間のすべての交点を特定します。
- 交差点の周りに非常に小さなバッファーを作成します
- ラインフィーチャがバッファの外部と交差するポイントを特定します(複数ある場合は最初のポイントを取得します-角度が0、90、または180度に近いかどうかにのみ関心があります)
- これらの2つのポイントのST_Azimuthを計算します。
完全なSQLはここに投稿するのに少し時間がかかりますが、興味があるならここでそれを説明しました。(ところで、WITHステートメントを下るすべてのフィールドを引き継ぐよりも良い方法はありますか?)
結果は正しく見えないので、明らかに何か間違ったことをしています:
編集私はEPSG:3785で計算をやり直しましたが、結果は少し異なりますが、まだ正しくありません:
私の質問は、このプロセスのどこに欠陥があるのかです。ST_Azimuthの機能を誤解していますか?CRSの問題はありますか?他に何かありますか?それとも、もっと簡単な方法がありますか?