この記事は、「ArcGIS API for Python を使ってみよう」シリーズその⑥です。
当シリーズでは、ArcGIS API for Python(以下、Python API)の使い方をご紹介しています。
前回までの記事では、ArcGIS Online へデータを作成・検索・削除する方法や、Web マップにデータを可視化する方法を紹介しました。
今回は、ArcGIS Online が提供する解析ツールを利用して、データに対して空間的な解析を行います。
ArcGIS Online には、さまざまな解析ツールが提供されており、高度な解析を簡単に実行できます。
今回は、オープンデータとして公開されている栃木のダム諸元表(出典:G空間情報センター)をもとにダムの集水域を取得し、地図に表示してみます。さらに下流解析を行いダムから放出される水の流れを GIS 解析で求めて可視化します。
次の手順で解析の実行とマップを作成します。
Tips: GIS 解析のメリット
これまでの記事で、CSV ファイルやシェープファイル、オープンデータとして公開されているフィーチャ サービスなどのさまざまな位置情報を持つデータを Python API を利用して ArcGIS Online へ公開し、地図上に可視化する方法を紹介してきました。
地図を用いてデータを可視化することで、データを羅列するだけでは分からなかった空間的な関連性に気付くことができます。しかし、GIS でできることはそれだけにとどまりません。さまざまな解析手法を用いて、目的の情報を検出したり、共通の情報をまとめたり、情報の分布を探ったりすることで、データから新しい情報を得ることもできます。
実行するコードを解説していきます。
解析ツールで使用するデータを準備します。
『ローカル端末から 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' オプションを使用して位置情報が含まれるフィールドのヘッダーを指定します。
集水域を作成するには [集水域の作成(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
解析を実行してみましょう。解析が完了すると、各ダムの集水域のポリゴンを含んだレイヤーが作成されます。
さらに、レイヤーを地図に追加することで、各ダムの集水域が一目で確認できます。
続いて、[下流解析(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
地図を拡大すると、ダムから放出された水は下流の河川に沿って流れていくことが分かります。
最後に、解析結果を表示したマップを 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 で公開しています。ぜひ、お手持ちのデータでお試しください。
関連リンク集
ArcGIS 関連ページ
・ArcGIS API for Python(ESRIジャパン製品ページ)
・ArcGIS for Developers(ESRIジャパン製品ページ)
・ArcGIS for Developers 開発リソース集
・ArcGIS API for Python(米国Esri ページ(英語))
シリーズブログ 関連ページ
・ArcGIS API for Python を使ってみよう:できることや使いどころ
・ArcGIS API for Python を使ってみよう ①:Jupyter Notebook で使うための環境構築
・ArcGIS API for Python を使ってみよう:ArcGIS Pro からの環境構築 (ArcGIS Pro 2.1)
・ArcGIS API for Python を使ってみよう ②:ローカル端末から ArcGIS Online へデータを作成してみよう
・ArcGIS API for Python を使ってみよう ③:ArcGIS Online のアイテムを検索してみよう
・ArcGIS API for Python を使ってみよう ④:ArcGIS Online 上のアイテムを削除してみよう
・ArcGIS API for Python を使ってみよう ⑤:Web マップを作成してみよう
・ArcGIS API for Python を使ってみよう ⑥:解析ツールを使ってみよう
ArcGIS 開発リソース集