ArcGIS Disponível na coleção de recursos para desenvolvedores"Clone de Itens"Esta página apresenta os conceitos básicos sobre clone de itens, e no post anterior"Python para tentar clonar itens em outra conta ArcGIS!" foram apresentados vários tipos de clone de itens.
Neste artigo, como uma extensão do clone de itens,Esri Developer documentação apresenta o parâmetro clone_items() e foca nos parâmetros search_existing_items e owner. Gostaria de apresentar esses parâmetros.
Sumário
1. Parâmetro search_existing_items
2. Parâmetro owner
3. Diferenças entre ArcGIS Assistant e clone_items()
Sobre o parâmetro search_existing_items
Ao usar clone_items() você pode definir o parâmetro chamado , que decide se deve clonar novamente um item que já existe.search_existing_items. O valor padrão é True. Para entender este parâmetro, também é necessário conhecer o elemento chamado
, que representa as características internas do item.typekeywords. Quando um item é clonado, além dos
, que são criados automaticamente quando o item é criado, é adicionado um , chamado source-<ID do item original>, que é um tipo de . Quando search_existing_itemsTrue, antes da execução real do clone por meio de clone_items(), ele procura se existe algum item no destino do clone que possua um . Se existir, ao invés de clonar novamente, ele referencia esse item.
False, ele clona independentemente da existência do mesmo item.
Vamos examinar detalhadamente usando o exemplo do clone de um mapa Web.Após clonar um aplicativo Instant Apps, assumimos a situação onde existe um mapa Web criado referenciando a camada de feição "Camada para Instant" que apareceu nesse clone.
Figura 1-1
Se clonarmos apenas o mapa Web com o parâmetro search_existing_itemsTrue, somente o mapa Web será clonado e a camada de feição não será clonada. O comportamento será como mostrado na figura abaixo.
Figura 1-2
Isso ocorre porque ao clonar, confirma-se que não existe nenhum item contendo o tipo de palavra-chave source-<ID do mapa Web>, então não existe o mesmo mapa Web. Para a camada de feição, como já existe um item com a mesma fonte devido ao clone do aplicativo Instant Apps, ele não é clonado e o mapa Web referencia esse item com a mesma fonte.
Figura 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