2024 年 6 月の ArcGIS Online アップデートで、ArcGIS Notebooks を Web ツールとして公開できるようになりました。Web ツールとは、ArcGIS Online 上に作成・公開することができる解析機能で、入出力パラメーターを設定してノートブックを公開することで、Map Viewer や ArcGIS Experience Builder といった Web アプリケーションで利用できるようになるため、ArcGIS Notebooks の共有と利用が容易になります。
※ 公開された Web ツールを実行するには、実行するユーザーにノートブック権限と、Web ツールの実行権限が必要となります。
本記事ではバッファー ツールを例にノートブックを Web ツールとして公開し、Web アプリ上から実行する方法をご紹介します。
まず、Web ツールで実行する処理を ArcGIS Notebooks で記述します。本記事ではマップをクリックした地点からのバッファーを作成する処理を記述していきます。
結果イメージ
ArcGIS Online 上部の [ノートブック] タブをクリックし、画面左上の [新しいノートブック] > [Standard] を選択し、ノートブックを新規作成します。
Note:ノートブックを新規に作成する際はノートブック ランタイムを選択します。Standard ランタイムには ArcGIS API for Python や数百の Python ライブラリが含まれており、Advanced ランタイムには Standard と同じライブラリに加え、ArcPy とその関連ライブラリが含まれます。GPU を使った Advanced ランタイムも使用することができます。
ノートブックを開いたら、右上の [保存] から [名前を付けて保存] をクリックします。任意のタイトルを入力し、必要に応じて保存先のフォルダーやタグなどを設定して保存してください。
保存が完了すると、Web ツールの公開に必要な [パラメーター] や [公開] といったタブが表示されます。ノートブックを Webツールとして公開するには Web ツールの公開権限が必要です。権限が付与されている場合に [パラメーター] タブや [公開] タブが表示されます。
ノートブックにはデフォルトで下記のコードが入力されています。これは ArcGIS Online にサイン インするもので、ArcGIS API for Python を使用した処理を記述するために必要となるコードです。
from arcgis.gis import GIS
gis = GIS("home")
今回使用するモジュールをインポートします。
[+] ボタンで上記のセルの上に空白のセルを作成し、下記のコードを入力します。
from arcgis import features
import warnings
warnings.filterwarnings("ignore")
続いて入力パラメーターを設定します。パラメーターは下記のような構成で入力することができます。
方角:入力または出力
変数名:ノートブック内で使用する変数の名前
表示名:解析ツール上に表示される名前
データ タイプ:パラメーターのデータ タイプ (ドロップダウン メニューから選択)
デフォルト値:パラメーターのデフォルト値を設定します。デフォルト値の構文については Geoprocessing services data types をご参照ください。
説明 (オプション):パラメーターの説明
本記事ではバッファー ツールを作成するため、バッファーの中心点となるポイントとバッファーの距離 (km) をパラメーターに設定します。
まずはバッファーの中心となるポイントを設定します。
[パラメーター] > [追加] からパラメーターの設定画面に移ります。
下記のように設定します。今回入力フィーチャはマップのクリックした地点を選択するため、デフォルト値には空の値を入力しています。特定の地点やデータを入力したい場合は JSON 形式でフィーチャ セットを入力するか、[解析レイヤーの選択] でデータを選択してください。
方角:入力
変数名:input_point
表示名:入力ポイント
データ タイプ:フィーチャ セット
デフォルト値:{}
説明:任意の説明
同様にバッファーの距離のパラメーターも設定します。
方角:入力
変数名:distance
表示名:距離 (km)
データタイプ:Double
デフォルト値:0
説明:任意の説明
必要なパラメーターの設定が完了したら [変数として追加] からノートブックに挿入します。
入力ポイントからフィーチャ セットを取得するための下記のコードを追加します。
try:
if "featureSet" in point.keys():
point = point["featureSet"]
print(point)
except:
print('入力ポイントに "featureSet" が見つかりませんでした。')
以上で入力パラメーターの設定は完了です。パラメーターの設定については Web ツールとしてのノートブックの公開もあわせてご参照ください。
続いて処理を実装します。今回はクリックした地点からのバッファーを作成する処理を create_buffers 関数を使用して下記のように記述します。input_layer には入力パラメーターに設定した変数 input_point を指定します。distances も同様に入力パラメーターで設定した変数をリスト型で指定します。本記事では距離単位 (units) にはキロメートル (Kilometers) を指定していますが、ほかに Meters, Feet, Miles, NauticalMiles, Yards を指定することもできます。
buffer = features.use_proximity.create_buffers(input_layer=input_point,
distances=[distance],
units='Kilometers')
以上でバッファーの処理の実装は完了です。
ArcGIS Online のノートブックでは、[解析] タブの [+] ボタンから解析ツールの Python コードを簡単に挿入することができます。さまざまなツールが提供されていますので、お好みの解析ツールで試してみてください。
続いて出力パラメーターを設定します。入力パラメーターと同様の構成で設定することができます。解析結果としてマップ上に出力されるバッファーのパラメーターを下記のように設定します。
方角:出力
変数名:output
表示名:出力レイヤー
データ タイプ:フィーチャ セット
デフォルト値:{}
説明:任意の説明
ノートブック上のバッファー解析を実装した次のセルに、下記のコードを入力します。
output = buffer.query()
ここではパラメーターで設定した変数 output を指定しています。
解析結果をマップ上に出力するには出力パラメーターで設定したように、データ タイプがフィーチャ セットである必要があります。create_buffers は返却されるデータ タイプが FeatureLayer または FeatureCollection となっています。これをフィーチャ セットに変換するために query() メソッドを使用しています。
変数 output を設定後、[パラメーター] タブ > [出力] > 設定した出力パラメーターの [+] ボタンをクリックし、ノートブックにコードを挿入します。
下記のコードがノートブックに挿入されたら、出力パラメーターの設定は完了です。
# Inserted snippet writes output parameter file for web tool execution
import os
# Only run this snippet during web tool execution when env variable "ENB_JOBID" will be present
if "ENB_JOBID" in os.environ:
out_param_name = "output"
out_param_file = os.path.join(
os.environ["ENB_JOBID"], "value_" + out_param_name + ".dat")
with open(out_param_file, "w") as writer:
writer.write(str(output))
処理の記述が完了したらノートブックを上書き保存し、[公開] タブから Web ツールとして公開します。[Web ツールとして公開] ウィンドウでタイトル、フォルダー等設定して [公開] ボタンをクリックすることで公開が完了します。Web ツール公開後にコードを編集した場合は、上書きして公開することも可能です。
公開が完了すると、コンテンツ一覧に Web ツールが追加されています。
公開が完了したので、Web ツールを実行してみます。
公開した Web ツールのアイテム詳細画面で [Map Viewer で開く] をクリックします。
作成したツールがMap Viewer で開くので、作成するバッファーの中心となるポイントと距離を入力し、実行するとバッファーが作成されます。[入力フィーチャの描画] ボタンをクリックすることでマップ上の任意の地点を入力することができます。
実行が完了すると画像のようにバッファーが作成されます。
Map Viewer 上での実行結果
このように Web ツールとして公開することで、ほかの解析ツールのように Map Viewer 上で実行することができます。Map Viewer 上での Web ツールの実行については、カスタム Web ツールの使用もご参照ください。
ArcGIS Experience Builder でも Web ツールを実行することができます。
ArcGIS Experience builder のビルダー画面にマップ ウィジェットと解析ウィジェットを追加します。
マップ ウィジェットには任意の Web マップを設定します。解析ウィジェットの設定画面で [カスタム Web ツール] > [ユーティリティの追加] > [アイテム] に移動し、公開した Web ツールを選択して [終了] をクリックします。
選択すると [ユーティリティの選択] 画面に Web ツールが追加されますので、ツールをクリックすると、解析ウィジェットに Web ツールが追加されます。
Map Viewer と同様にアプリ上から公開した Web ツールを実行できます。
ArcGIS Experience builder上での実行結果
Web エクスペリエンス作成手順についての詳細は最初の Web エクスペリエンスの作成をご参照ください。
本記事では ArcGIS Notebooks で作成した処理を Web ツールとして公開し、実行するまでの流れをご紹介しました。Web ツールは Map Viewer やArcGIS Experience Builder といった Web アプリケーションで利用できるようになるため、ArcGIS Notebooks で実装した処理の共有や利用が容易になります。本記事でご紹介したバッファー ツールのノートブックを ArcGIS Online で公開していますので、Web ツールを作成する際の参考としてご活用ください。
また、米国 Esri 社では Web ツールに関してチュートリアルのノートブックも公開されていますので、こちらもあわせてご活用ください。
ESRIジャパン Web サイト
米国 Esri 社 Web サイト
ArcGIS Notebooks
ArcGIS Blog