
はじめに
この記事は、「ArcGIS API for Python を使ってみよう」シリーズその⑥です。
当シリーズでは、ArcGIS API for Python(以下、Python API)の使い方をご紹介しています。
前回までの記事では、ArcGIS Online へデータを作成・検索・削除する方法や、Web マップにデータを可視化する方法を紹介しました。
今回は、ArcGIS Online が提供する解析ツールを利用して、データに対して空間的な解析を行います。
CSV データをもとにダムの集水域および河川の流域データを作成する

ArcGIS Online には、さまざまな解析ツールが提供されており、高度な解析を簡単に実行できます。
今回は、オープンデータとして公開されている栃木のダム諸元表(出典:G空間情報センター)をもとにダムの集水域を取得し、地図に表示してみます。さらに下流解析を行いダムから放出される水の流れを GIS 解析で求めて可視化します。
次の手順で解析の実行とマップを作成します。
- CSV データをホスト フィーチャ サービスにする
- 集水域を作成する GIS 解析を実行する
- 下流解析を行う GIS 解析を実行する
- 解析結果を Web マップとして保存する
Tips: GIS 解析のメリット
これまでの記事で、CSV ファイルやシェープファイル、オープンデータとして公開されているフィーチャ サービスなどのさまざまな位置情報を持つデータを Python API を利用して ArcGIS Online へ公開し、地図上に可視化する方法を紹介してきました。
地図を用いてデータを可視化することで、データを羅列するだけでは分からなかった空間的な関連性に気付くことができます。しかし、GIS でできることはそれだけにとどまりません。さまざまな解析手法を用いて、目的の情報を検出したり、共通の情報をまとめたり、情報の分布を探ったりすることで、データから新しい情報を得ることもできます。
実行コードと解説
実行するコードを解説していきます。
1. ダム情報の作成
解析ツールで使用するデータを準備します。
『ローカル端末から ArcGIS Online へデータを作成してみよう』の記事を参考に、CSV ファイルとして公開されているダム情報をホスト フィーチャ サービスとして公開します。
# ArcGIS Online に CSV ファイルをアイテムとして追加する
csv_file = 'https://www.geospatial.jp/ckan/dataset/d6a87e42-6e86-449e-9d76-1e40319bb99b/resource/b5d633c8-f2c8-4baa-88a9-fcf1872dcfcd/download/724522014tochiginodamsyogen04033.csv'
csv_item = gis.content.add({}, csv_file)
display(csv_item)
# CSV にある緯度経度の情報を使用して、追加したアイテムからホスト フィーチャ サービス(ダムのポイント)を公開する
csv_lyr = csv_item.publish({'name':'dam','locationType':'coordinates', 'latitudeFieldName':'緯度', 'longitudeFieldName':'経度'})
display(csv_lyr)
CSV ファイルに含まれる位置情報が XY フィールド以外に格納されている場合、'latitudeFieldName' および 'longitudeFieldName' オプションを使用して位置情報が含まれるフィールドのヘッダーを指定します。

2. 集水域の作成
集水域を作成するには [集水域の作成(Create Watersheds)] ツールを使用します。
Python API では、ポイントなどのフィーチャ データに対して処理を行う機能は features モジュールに含まれており、解析機能は arcgis.features.analysis モジュールにまとめられています。
[集水域の作成] ツールは、create_watersheds メソッドから利用できます。メソッドに手順 1 で作成したレイヤーを渡します。また、output_name オプションに結果として出力されるレイヤー名を指定します。
# ダムのポイントのホスト フィーチャ サービスを引数にして集水域の作成ツール(create_watersheds)を実行する
from arcgis.features import analysis
watershedsResult = analysis.create_watersheds(csv_lyr, output_name='watersheds_result')
watershedsResult
解析を実行してみましょう。解析が完了すると、各ダムの集水域のポリゴンを含んだレイヤーが作成されます。
さらに、レイヤーを地図に追加することで、各ダムの集水域が一目で確認できます。

3. 下流解析
続いて、[下流解析(Trace Downstream)] ツール を使用してダムから放出される水の流路を求めます。
下流解析は、arcgis.features.analysis モジュールの trace_downstream メソッドを使用します。
集水域の作成と同じように、手順1で作成したフィーチャ レイヤーを渡して解析を実行し、結果を地図に追加してみましょう。
# 集水域の解析結果で出力された調整された入力ポイントを引数にして下流解析ツール(trace_downstream)を実行する
input_layer = watershedsResult.layers[0]
downstreamResult = analysis.trace_downstream(input_layer, output_name='downstream_result')
downstreamResult

地図を拡大すると、ダムから放出された水は下流の河川に沿って流れていくことが分かります。
4. 解析結果の保存
最後に、解析結果を表示したマップを Web マップとして保存します。
# Web マップのタイトルなどを定義する
webMap_properties = {'title':'栃木県のダム・河川',
'snippet':'Python API で作成した栃木県のダム・河川 Web マップ',
'tags':'栃木県, ダム, 河川',
'extent':downstreamResult.extent
}
# Web マップを保存する
webMap = map.save(item_properties=webMap_properties)
webMap
ArcGIS Online には、集水域や下流解析のほかにも多彩な解析ツールが用意されています。
どのツールも基本的には今回紹介した方法と同じようなフローで利用できます。
全体のコードは ESRIジャパン GitHub で公開しています。ぜひ、お手持ちのデータでお試しください。