道路フィーチャの属性値に DEM データから求めた勾配を格納する方法を紹介します。
この処理を行うモデルは ArcGIS Online に公開されていて、ArcGIS ブログの記事でも取り上げられているのですが、ArcGIS for Desktop Advanced ライセンスが必要な方法で作成されていたので、この記事では ArcGIS for Desktop Basic ライセンスでも実行できるように修正します。ラスタ データを処理するので ArcGIS Spatial Analyst エクステンション ライセンスは必須です。
参考になるモデルをダウンロードしてモデル ビルダーで確認すると、おおまかに以下の流れで処理されていました。
- AOI(処理したい範囲)から 1km バッファーを作成
- 道路データを "バッファー ポリゴン フィーチャクラス" でクリップ (Clip)
- DEM データのセル サイズ(X)を取得
- "1." の高さ・幅いずれかの大きい方を 2000 で割った値を計算
- マスクで抽出 (Extract by Mask) ツールで DEM データからバッファー ポリゴン フィーチャクラスの範囲で抽出、出力セルサイズとして "3." と "4." の大きい方の値を使用
- "5." で作成したラスターから傾斜角 (Slope) ツールで勾配(パーセント)を計算
- "6." で求められた勾配を再分類 (Reclassify) ツールで 9 の値に分類(おおむね勾配 10% ごとに)
- "7." のラスタ データセットをラスター → ポリゴン (Raster to Polygon) ツールでポリゴンに変換、ポリゴンは単純化された形状にスムージング
- アイデンティティ (Identity) ツール(※ Advanced ライセンスが必要)で道路データと "7." のポリゴンを結合して、勾配を持ったライン フィーチャクラスを作成
- フィールドを追加して "7." で求めた勾配の値を適切なフィールドに格納し、不要なフィールドを削除
モデルを Python スクリプトに変換したコードはこちら。
"9." のアイデンティティ ツールは、インターセクト (Intersect) ツールで代用することができます。勾配の再分類も任意に指定できるようにモデル パラメーターとしました。また、不要なフィールドの削除も修正しました。
ダウンロード:Path Slope Tool Basic.tbx
ファイルをダウンロードして ZIP を解凍し、TBX ファイルを任意の場所に配置して ArcMap から開いてください。Path Slope (Basic Version) が ArcGIS for Desktop Basic ライセンスで実行できるように修正したモデルです。修正はバージョン 10.4.1 で行っています。ツールの実行は自己責任でお願いします。