はじめに
ArcGIS Pro SDK は ArcGIS Pro を拡張するアドイン開発ができる開発キットです。ArcGIS Pro のユーザー インターフェイスをカスタマイズしたり、独自の機能を開発したりすることができます。業務フローを効率的に実行できるように ArcGIS Pro をより使いやすく拡張することができます。
本記事ではマップ上に円形の選択領域を描画し、選択領域内で見つかったフィーチャ レイヤーごとのフィーチャ数を表示するマップ ツールのアドインを作成します。このアドインを例にアドイン作成方法についてご紹介します。
本記事では下記の環境を使用しています。
・ArcGIS Pro 3.1
・ArcGIS Pro SDK 3.1
・Visual Studio 2022
ArcGIS Pro SDK のインストールについてはインストールガイドをご参照ください。
プロジェクトの作成
まずは Visual Studio でプロジェクトを作成します。
Visual Studio を起動して、[新しいプロジェクトの作成] を選択し、ArcGIS Pro SDK テンプレートグループから [ArcGIS Pro モジュールアドイン] を選択しプロジェクトを作成します。
プロジェクト名や保存場所などを入力するとプロジェクトが作成されます。
デフォルトでは、Config.daml ファイルが Visual Studio で開きます。Module1.cs ファイルには、アドイン モジュール コードが含まれています。
Config.daml ファイルでは、<insertModule> タグの id が Module1.cs ファイル内の ID と一致し、className がモジュールのクラス名と一致していることが確認できます。
Config.daml
Module1.cs
Config.daml の <group> タグの caption を編集することで ArcGIS Pro 上でのラベルを設定することができます。
マップ ツールの作成
続いて作成したプロジェクトにマップ ツールを追加します。
ソリューション エクスプローラーでプロジェクトを右クリックし、[追加] > [新しい項目] を選択します。
[ArcGIS Pro Add-ins] グループのアイテム テンプレート リストから [ArcGIS Pro マップ ツール] を選択します。ファイルに任意の名前 (本記事では IdentifyTool.cs としています) を付け、[追加] をクリックするとマップ ツールが追加されます。
追加すると、デフォルトでマップ ツール (IdentifyTool.cs) が開きます。
Config.daml を開くと、中身が更新されていることが確認できます。
<tool> タグや <tooltip> タグでは追加したマップツールの ArcGIS Pro 上での表示を変更することができます。<tool>タグの caption ではArcGIS Pro上での表示名、<tooltip> タグの heading ではカーソルを合わせたときに表示されるツールチップを変更することができます。
今回は下記のコメントアウトした箇所のように、マップツール名やツールチップのテキストを修正します。
<!-- caption プロパティ を "カウントツール" に変更 -->
<tool id="MapToolIdentify_IdentifyTool"
caption="カウント ツール "
className="IdentifyTool"
loadOnClick="true"
smallImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonRed16.png"
largeImage="pack://application:,,,/ArcGIS.Desktop.Resources;component/Images/GenericButtonRed32.png"
condition="esri_mapping_mapPane">
<!-- heading の属性値を "カウントツール" に変更し、テキストもそれにあわせて修正 -->
<tooltip heading="カウント ツール">円形スケッチを使用して現在のマップ上のレイヤー毎のフィーチャ数をカウントします。<disabledText /></tooltip>
</tool>
[ビルド] > [ソリューションのビルド] でアドインプロジェクトをビルドします。
ビルドに成功したら、[開始] ボタンをクリックしてデバッグを開始します。
ArcGIS Pro のスタート ページが表示されたら、任意のプロジェクトを選択して開きます。
[アドイン] タブが追加されていますのでクリックして、作成したマップツールの UI がリボン上に表示されて、上記で行ったキャプションとツールチップの変更が反映さていれることが確認できます。確認ができたら ArcGIS Pro を閉じます。
この時点では処理を実装していないため、ボタンをクリックしても何も起こりません。
次のステップでボタンをクリックしたときの処理を実装していきます。
マップ ツールの処理の実装
まずは マップツール (IdentyfyTool.cs) を開き、2D のマップだけではなく、3D シーンでもツールを使用できるように IdentifyTool() の SketchOutputMode を以下のように Screen に変更します。
public IdentifyTool()
{
IsSketchTool = true;
SketchType = SketchGeometryType.Circle;
SketchOutputMode = SketchOutputMode.Screen;
}
今回は上記のように SketchGeometryType をCircleに変更し円を描いてフィーチャを選択していますが、設定を変えることで長方形等ほかの図形を描いて選択することも可能です。
OnSketchCompleteAsync を以下のように変更し、メソッド宣言に async キーワードを追加します。
protected override async Task<bool> OnSketchCompleteAsync(Geometry geometry)
{
var mv = MapView.Active;
var identifyResult = await QueuedTask.Run(() =>
{
var sb = new StringBuilder();
// スケッチしたジオメトリと交差するフィーチャを取得
var features = mv.GetFeatures(geometry);
// レイヤーを取得
var lyrs = mv.Map.GetLayersAsFlattenedList().OfType<FeatureLayer>();
foreach (var lyr in lyrs)
{
var fCnt = features.ToDictionary().ContainsKey(lyr) ? features[lyr].Count : 0;
sb.AppendLine($@"{lyr.Name} レイヤーに {fCnt} フィーチャあります。");
}
return sb.ToString();
});
MessageBox.Show(identifyResult);
return true;
}
プロジェクトを再度ビルドします。ビルドに成功したら、[開始] ボタンをクリックしてデバッグを開始します。
ArcGIS Pro のスタート ページが表示されたら、フィーチャ レイヤーが含まれる任意のプロジェクトを選択して開きます。
各フィーチャ レイヤーのフィーチャを含むマップの範囲を拡大し、作成したマップツールが期待通りに動作することを確認します。クリック&ホールドして選択円の中心点を定義し、ドラッグして半径を定義します。マウスボタンをはなすと、定義した円内で見つかったフィーチャの数がレイヤー毎にメッセージボックスに表示されます。
まとめ
本記事では選択領域内のフィーチャ レイヤーごとのフィーチャ数を表示するマップ ツールを例にArcGIS Pro のアドイン作成手順をご紹介しました。ArcGIS Pro SDK を使用するとオリジナルの機能をもったアドインを作成することができ、ArcGIS Pro を拡張することができますので、ArcGIS Proのカスタマイズを検討している方はぜひご活用ください。
関連リンク
類似の記事がありません