標高データから道路勾配を求める方法

      2017/01/05

道路フィーチャの属性値に DEM データから求めた勾配を格納する方法を紹介します。

この処理を行うモデルは ArcGIS Online に公開されていて、ArcGIS ブログの記事でも取り上げられているのですが、ArcGIS for Desktop Advanced ライセンスが必要な方法で作成されていたので、この記事では ArcGIS for Desktop Basic ライセンスでも実行できるように修正します。ラスタ データを処理するので ArcGIS Spatial Analyst エクステンション ライセンスは必須です。

参考になるモデルをダウンロードしてモデル ビルダーで確認すると、おおまかに以下の流れで処理されていました。

Path Slope モデル

  1. AOI(処理したい範囲)から 1km バッファーを作成
  2. 道路データを "バッファー ポリゴン フィーチャクラス" でクリップ (Clip)
  3. DEM データのセル サイズ(X)を取得
  4. "1." の高さ・幅いずれかの大きい方を 2000 で割った値を計算
  5. マスクで抽出 (Extract by Mask) ツールで DEM データからバッファー ポリゴン フィーチャクラスの範囲で抽出、出力セルサイズとして "3." と "4." の大きい方の値を使用
  6. "5." で作成したラスターから傾斜角 (Slope) ツールで勾配(パーセント)を計算
  7. "6." で求められた勾配を再分類 (Reclassify) ツールで 9 の値に分類(おおむね勾配 10% ごとに)
  8. "7." のラスタ データセットをラスター → ポリゴン (Raster to Polygon) ツールでポリゴンに変換、ポリゴンは単純化された形状にスムージング
  9. アイデンティティ (Identity) ツール※ Advanced ライセンスが必要)で道路データと "7." のポリゴンを結合して、勾配を持ったライン フィーチャクラスを作成
  10. フィールドを追加して "7." で求めた勾配の値を適切なフィールドに格納し、不要なフィールドを削除

モデルを Python スクリプトに変換したコードはこちら

"9." のアイデンティティ ツールは、インターセクト (Intersect) ツールで代用することができます。勾配の再分類も任意に指定できるようにモデル パラメーターとしました。また、不要なフィールドの削除も修正しました。

ダウンロード:Path Slope Tool Basic.tbx

ファイルをダウンロードして ZIP を解凍し、TBX ファイルを任意の場所に配置して ArcMap から開いてください。Path Slope (Basic Version) が ArcGIS for Desktop Basic ライセンスで実行できるように修正したモデルです。修正はバージョン 10.4.1 で行っています。ツールの実行は自己責任でお願いします。

 - GIS, ArcGIS