概要
ArcGIS Pro のフィールド演算機能を使用して、ラインの角度(方位角)を算出します。
操作手順
準備
属性テーブルに新規でフィールドを追加します。フィールドのタイプは、「Double 型」にしてください。フィールドの作成方法につきましては、以下の FAQ をご参考ください。
手順
- 作成したフィールドの名前上で右クリックし、[フィールド演算] を選択します。
- [フィールド演算] ダイアログの [式の種類] から [Python] を選択します。
- [<フィールド名> =] の箇所に、以下のコードを入力します。
※ [<フィールド名> =] は、指定したフィールド名に適宜変更されます。 - [コード ブロック] のボックスに以下の Python スクリプトを入力します。
○始点から終点への角度を算出する場合
import math def GetAzimuthPolyline(shape): radian = math.atan2((shape.lastpoint.y - shape.firstpoint.y),(shape.lastpoint.x - shape.firstpoint.x)) angle = radian * 180 / math.pi #一般角 if angle < 0: angle = 360 + angle #負の角度を正の角度に変換 #一般角を方位角に変換 azimuth =((90 - angle)+360) % 360 return azimuth○始点から 2 番目の頂点への角度を算出する場合
import math def GetAzimuthPolyline(shape): nextPoint = shape.getPart(0).getObject(1) radian = math.atan2((nextPoint.y - shape.firstpoint.y),(nextPoint.x - shape.firstpoint.x)) angle = radian * 180 / math.pi #一般角 if angle < 0: angle = 360 + angle #負の角度を正の角度に変換 #一般角を方位角に変換 azimuth = ((90 - angle)+360) % 360 return azimuth○終点の 1 つ手前の頂点から終点への角度を算出する場合
import math def GetAzimuthPolyline(shape): beforePoint= shape.getPart(0).getObject(shape.pointCount-2) radian = math.atan2((shape.lastpoint.y - beforePoint.y),(shape.lastpoint.x - beforePoint.x)) angle = radian * 180 / math.pi #一般角 if angle < 0: angle = 360 + angle #負の角度を正の角度に変換 #一般角を方位角に変換 azimuth = ((90 - angle)+360) % 360 return azimuth - [OK] をクリックし、フィールド演算を実行します。
GetAzimuthPolyline(!Shape!)
このサンプル コードはポリラインの頂点情報を使用して、図上の真上を 0 度とする方位角を算出します。複数のセグメントで構成されているポリラインに対して始点と終点から角度を算出した場合、形状に関わらず始点と終点を結ぶ線分の角度となります。
また、上記の処理はラインだけでなく、ポリゴンに対しても実行することができます。
なお、座標値が地理座標系の場合には、期待する方位角は求められませんのでご注意ください。
地理座標系から投影座標系に変換するには、以下の FAQ の手順を用いて [投影変換] を行ってください。
フィーチャクラス、シェープファイルの測地基準系や座標系を変更するには? (投影変換)
このナレッジはお役に立ちましたか?
フィードバックをいただきありがとうございます!