ArcGIS publié dans la collection de ressources pour développeurs« Clonage d'éléments »Cette page présente les bases du clonage d'éléments, et dans l'article précédent«Python pour essayer de dupliquer des éléments vers un autreArcGIS compte ! »nous avons présenté divers types de clonage d'éléments.
Dans cet article, en prolongement du clonage d'éléments,Esri Developer documentation présente les paramètres clone_items() et nous allons nous concentrer sur les paramètres search_existing_items et owner.
Table des matières
1. Paramètre search_existing_items
2. Paramètre owner 3. Différences entre ArcGIS Assistant et
clone_items()
À propos du paramètre search_existing_items
Lors de l'utilisation de clone_items() , vous pouvez définir le paramètre search_existing_items, qui détermine si un élément déjà existant doit être cloné à nouveau. La valeur par défaut est True.
Pour comprendre ce paramètre, il est également nécessaire de connaître l'élément appelé typekeywords, qui représente les caractéristiques internes d'un élément.
Lors du clonage d'un élément, l'élément cloné reçoit automatiquement, en plus des typekeywords, un typekeywords source-<ID de l'élément source>.
マップが存在しないことを確認します。フィーチャ レイヤーについては 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