ArcGIS ProのAdd Surface Informationツールを使用すると、表面上の線の傾斜を簡単に計算できます。このツールは、LASやラスター データセットなどのサーフェスと線フィーチャを重ね合わせて標高値を抽出し、傾斜値を計算します。<\/P>
しかし、計算に使用するサーフェス レイヤーがない場合はどうしますか?<\/STRONG><\/EM><\/P>傾斜の計算方法<\/H2>まず、傾斜の計算を分解して、特定のデータ要件をよりよく理解しましょう。傾斜は、標高の変化量を水平距離で割ることで計算されます。これは「rise over run」とも呼ばれます。この計算結果に100を掛けるとパーセンテージ値が得られます。<\/P>
<\/span><\/P>標高値を計算するためのサーフス レイヤーが利用できない場合は、属性値または線フィーチャのZ値を使用する必要があります。標高変化は開始標高から終了標高を引くことで計算でき、距離値は形状長さから取得できます。<\/P>利用可能な値が決まったら、Arcadeを使って傾斜値を計算できます。<\/P>Z値を使った傾斜計算のユースケース<\/H2>モバイルデバイスでランドスケープ調査を行っていると想像してください。収集するデータポイントの一つにプロパティ排水があります。これは通常、2点を収集して排水線を形成します。通常、このデータは収集後に編集者が手動で線の傾斜を計算し、属性フィールドに入力します。<\/P>ArcGIS Arcadeについて少し学んだ後、属性ルールattribute ruleとArcadeを使ってデータ収集中に傾斜を計算できることがわかりました。Calculation rulesはフィーチャ収集直後に傾斜式を実行できます。これは線の開始および終了頂点のz値に基づいて計算されます。返された値は属性テーブル内のSLOPEフィールドに書き込まれます。
以下はz値を使って傾斜を計算する式の例です:<\/P> <\/P> <\/P>\/\/ ジオメトリが空または長さがゼロの場合は元のSLOPE値を返す。
if (IsEmpty(Geometry($feature)) || Length(Geometry($feature)) == 0)
{
return $feature.SLOPE;
}
\/\/ 線パスを取得。
var paths = Geometry($feature)['paths'];
\/\/ 最初と最後の頂点を取得し、そのうち低い方を選択。
var down_elevation = min(paths[0][0]['z'], paths[-1][-1]['z'])
\/\/ 最初と最後の頂点を取得し、そのうち高い方を選択。
var up_elevation = max(paths[0][0]['z'], paths[-1][-1]['z'])
\/\/ 3つの変数で傾斜を計算。
return ABS((up_elevation - down_elevation)\/Length(Geometry($feature))) <\/code><\/pre> <\/P> <\/P>注意: この式を使用する際は、フィールド名をあなたのデータに合わせて更新してください。<\/EM><\/P>フィールド値で傾斜を計算するユースケース<\/H2>パイプライン フィーチャクラスが渡され、それぞれのフィーチャについて新しいフィールドを追加し傾斜を計算するよう依頼されたと想像してください。その線フィーチャはz対応されておらず、各頂点に標高値がありません。属性テーブルを見ると、それぞれのパイプライン開始と終了の標高値が入った2つのフィールドがあります。<\/P>Arcade式でSLOPEフィールドを計算することにしました。この式はUPELEVおよびDOWNELEV属性フィールドから標高変化量を計算します。各パイプラインの距離はジオメトリ関数で計算されます。この3つの値が傾斜計算への入力となり、返り値がSLOPEフィールドに格納されます。 <\/P>以下はフィールド値で傾斜を計算した式の例です:<\/P> <\/P> <\/P>\/\/ どちらかのフィールドが空の場合は元のSLOPE値を返す。
if (IsEmpty($feature.UPELEV) || IsEmpty($feature.DOWNELEV))
{
return $feature.SLOPE;
}
\/\/ ジオメトリが空または長さゼロの場合は元のSLOPE値を返す。
if (IsEmpty(Geometry($feature)) || Length(Geometry($feature)) == 0)
{
return $feature.SLOPE;
}
\/\/ 2つのフィールドとジオメトリ関数で傾斜計算。
return ABS(($feature.UPELEV - $feature.DOWNELEV)\/Length(Geometry($feature))); <\/code><\/pre> <\/P> <\/P>注意: この式をご使用になる際は、フィールド名をご自身のデータに合わせて更新してください。<\/EM><\/P>ArcGIS ArcadeはArcGIS内でデータフォーマットや操作に使われる式言語です。属性ルールやフィールド計算で傾斜計算するこれらユースケースはArcade例の一部です。この式はラベリングやポップアップ、フォームなど他アプリケーションでも傾斜値取得に利用可能です。これらサンプル式はプロジェクト固有ニーズに合わせて再利用・修正できます。 <\/P>Arcade式言語についてさらに学習したい場合は、Esri のGet Started with ArcGIS Arcadeをご覧ください: <\/SPAN>https://go.esri.com/arcade-course<\/SPAN><\/SPAN><\/A> <\/SPAN><\/P>