ArcGIS gepubliceerd in de ontwikkelaarshulpmiddelen"Klonen van items"pagina wordt de basis van het klonen van items uitgelegd, en in het vorige bericht"Python gebruiken om items te dupliceren naar een anderArcGIS account!" werden verschillende manieren van itemklonen geïntroduceerd.
In dit artikel, als uitbreiding op het klonen van items,Esri Developer documentatie wordt besproken over de clone_items()search_existing_itemsowner parameters, met speciale aandacht voor deze.
Inhoudsopgave
1. search_existing_items parameter
2. owner parameter
3. Verschillen tussen ArcGIS Assistant enclone_items()
Over de search_existing_items parameter
Bij het gebruik van clone_items() kan de parameter search_existing_items ingesteld worden om te bepalen of reeds bestaande items opnieuw gekloond moeten worden. De standaardwaarde is True.
Om deze parameter te begrijpen, is het ook nodig om te weten over het element typekeywords, dat eigenschappen van een item beschrijft.
Wanneer een item wordt gekloond, krijgt het gekloonde item naast de automatisch aangemaakte typekeywords 'source-<ID van het origineel>' als extra typekeywords.Als search_existing_items True is, zoekt clone_items() voordat het klonen plaatsvindt naar items met overeenkomende typekeywords , die al bestaan in de doelaccount.Als zo'n item bestaat, wordt er niet opnieuw gekloond maar wordt dat item gebruikt als referentie.
Als search_existing_items False is, wordt er altijd gekloond ongeacht of hetzelfde item al bestaat.
Laten we dit nader bekijken aan de hand van een voorbeeld met een webmap.Na het klonen van een Instant Apps app, stellen we ons een situatie voor waarin er een webmap bestaat die verwijst naar de feature layer "Instant-laag" die in deze kloon is verschenen.
Figuur 1-1
Figuur 1-2
Wanneer alleen de webmap wordt gekloond met search_existing_items ingesteld op 'source-<ID van de webmap>' als typekeyword, wordt gecontroleerd of er geen identieke webmap bestaat.'source-<ID van de webmap>' als typekeyword aanwezig is bij een item, betekent dit dat er geen identieke webmap bestaat.. Feature layers worden niet gekloond omdat ze al bestaan door het klonen van de Instant Apps app; in plaats daarvan verwijst de webmap naar hetzelfde feature layer-item.. Omdat er al een feature layer met dezelfde bron bestaat door het klonen van Instant Apps, wordt deze niet opnieuw gekloond en wijst de webmap naar datzelfde item.のアプリのクローンによって既にソースが同一のアイテムが存在しているのでクローンはされずに、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