ArcGIS veröffentlicht in der Sammlung von Entwicklerressourcen„Item-Klon“Seite werden die Grundlagen der Item-Klonung vorgestellt, und im vorherigen Beitrag„Python verwenden, um Items in einem anderenArcGIS Konto zu duplizieren!“ wurden verschiedene Arten der Item-Klonung vorgestellt.
In diesem Artikel möchte ich als Erweiterung der Item-Klonung den Fokus auf die Parameter Esri Developer Dokumentation clone_items() und insbesondere auf die Parameter search_existing_items und owner legen.
Inhaltsverzeichnis
1. Parameter search_existing_items
2. Parameter owner3. Unterschied zwischen ArcGIS Assistant und clone_items()
Zum Parameter search_existing_items
Beim Verwenden von clone_items() kann der Parameter search_existing_items gesetzt werden, um zu entscheiden, ob bereits existierende Items erneut geklont werden sollen oder nicht. Der Standardwert ist True
Schauen wir uns das am Beispiel der Klonung einer Webkarte genauer an.Nach dem Klonen einer Instant Apps-Anwendung existiert eine Webkarte, die sich auf den Feature-Layer „Instant Layer“ bezieht, der durch diesen Klon entstanden ist.Angenommen diese Situation liegt vor. Web マップが存在する状況を想定します。
図 1-1
Web マップのみを対象とし、search_existing_items を True に設定してクローンをすると、Web マップのみがクローンされ、フィーチャ レイヤーはクローンされません。以下の図のような動きになります。
図 1-2
これは、クローンする際に source-<Web マップの ID> という typekeywords が含まれるアイテムが無いことから同一の Web マップが存在しないことを確認します。フィーチャ レイヤーについては Instant Apps のアプリのクローンによって既にソースが同一のアイテムが存在しているのでクローンはされずに、Web マップ側の参照ソースが同一であるアイテムを参照するように変更されます。
図 1-3
もう少し詳しく見てみましょう。 クローン元のある Web マップを JSON として見るとこのようになります。
図 1-4
操作レイヤーとして「インスタント用レイヤー」が参照されています。
図 1-5
操作レイヤーである「インスタント用レイヤー」を JSON で見てみましょう。
図 1-6
今度は、クローンされた Web マップを見てみましょう。source-ID としてクローン元のアイテム ID が入っていることがわかります。
図 1-7
Web マップの操作レイヤーが記載されている部分です。
図 1-8
クローン先で参照されているフィーチャ レイヤーです。
図 1-9
これら図 1-4 から図 1-9 までの 6 枚の JSON の図と先ほどのクローンの概念図を合わせてこの章の冒頭の説明と照らし合わせていきます。
- クローンを行うと source-<Web Map ID> という形で typekeywords に説明が追加される (ここでは Web マップの ID 9c~ がクローン先で source-9c~として書かれている)
- clone_items() を実行する際に 参照しているインスタント用レイヤー (ID 3044~) がクローン先アカウントでsource-3044~として存在するかどうかを検索して同一アイテムの存在を判定する
- 今回は既に Instant Apps でレイヤーをクローンしているので、そのアイテムが同一アイテムとして判定されている (図 1-9 typekeywords を参照)
今回の例ではこのようにして同一アイテムの存在を確認し、 search_existing_items を True にした場合にクローンをしないようにしています。
owner パラメーター
clone_items() には owner パラメーターが存在し、アイテムをクローンする対象を設定することができます。この記事では以下の図のように、ある組織のユーザーが別の組織の管理者アカウントにログインし、別の組織の管理者でない特定のユーザーに向けてアイテムをクローンする流れを想定して実行します。
図 2-1
まずは図 2-2のように owner パラメーターを設定しないでクローンをしてみます。クローンする対象は フィーチャ レイヤーを参照している Web マップです。
図 2-2
図 2-3 はクローン先としている ArcGIS Enterprise の管理者アカウントのコンテンツです。このように宛先を指定しないとターゲットとしてログインしているユーザーのコンテンツへクローンされます。
図 2-3
次に、owner パラメーターを設定して実行してみます。owner パラメーターにクローン先の組織にいる公開者のアカウントのユーザー名を指定し、folder パラメーターにはユーザーが所有するフォルダ名を指定します。
図 2-4
実行後のユーザーでログインした時のマイ コンテンツの画面が以下になります。
図 2-5
また、公開者側でアイテムを確認するとアイテムのオーナーが管理者でなく、公開者となっていることがわかります。
図 2-6
ArcGIS Assistant の Copy Item との違い
ArcGIS Assistant(国内未サポート)には、Copy Item というアイテムを他のアカウントにコピーできる機能があります。 clone_items と比べて、Copy Item は UI 上で一つ一つアイテムを別アカウントにコピーできる特徴があります。 Copy Item は ArcGIS Online や ArcGIS Enterprise と同じような UI からアイテムを扱うことができること、そしてコードを書かずに UI 操作のみでアイテムのコピーができることがメリットです。
図 3-1
ただし、Copy Item は clone_items() と異なり、アイテムの参照関係は考慮されずにコピーされてしまうデメリットがあるので、使う対象には注意が必要です。 従って、次のような場面では ArcGIS Assistant の Copy Item が有効な場合があります。
・フィーチャ レイヤーや CSV ファイルのような参照を持たないアイテムの場合
・Web マップなど参照がアイテム内に存在するが、参照先アイテムがパブリックになっている場合
図 3-2
ここでは、有効である一例として ArcGIS StoryMaps を紹介します。 題材となる ストーリー マップは次の画像のようにエクスプレス マップを利用し、多くのポイントや画像が含まれています。
図 3-3
このストーリー マップはエクスプレス マップを利用しているので、他アイテムの参照がありません。 アイテム ID の参照の崩れを心配する必要がないので ArcGIS Assistant の Copy Item を使うこともできます。
もちろん clone_items() はこれまでに紹介してきたすべてのコンテンツに対して実行できますが、クローン対象がフィーチャ レイヤーやストーリー マップで、なるべく UI で操作を行いたいといった場合には Copy Item でアイテムの移行を行うことも可能です。Web マップや ArcGIS Experience Builder などのアプリケーションがクローンの対象になった場合は clone_items() を使用するようにしてください。
さいごに
本記事では、「アイテムのクローン」、「Python を使って他のArcGIS アカウントにアイテムを複製してみよう!」の 2 記事に続いて、clone_items() を扱ってきました。 search_exisiting_items パラメーターを利用すると既に存在するアイテムについて参照のみ変更しクローンをしないようにするか、アイテムの重複を許可し、クローンを作成するかを選択できます。 owner パラメーターを利用すると、ログインしている管理者自身でないユーザーに向けてクローンを送ることができます。
関連リンク
アイテムのクローン
Python を使って他のArcGIS アカウントにアイテムを複製してみよう!
Cloning Content