エラー
次のサンプルに示すように、ArcGIS API for Python で overwrite() メソッドを使用して、ポータル内の既存のホスト フィーチャ レイヤーを上書きすることができます。
from arcgis.gis import GIS from IPython.display import display gis = GIS("https://python.playground.esri.com/portal", "username", "password", verify_cert=False) item = gis.content.search("feature_name", "Feature Layer") service_flayer_collection = FeatureLayerCollection.fromitem(item) service_flayer_collection.manager.overwrite(r'[folder_location]/TEST.zip')
ただし、場合によっては、次のエラーが返されます。
エラー: ランタイム エラー: アイテム <アイテム名> はすでに存在します。
このエラーは、公開したレイヤーがビュー レイヤーに関連付けられている場合に発生することがあります。 詳細については、「Portal for ArcGIS: ホスト フィーチャ レイヤー ビューの作成」をご参照ください。gis.content.search() 関数を使用してフィーチャ レイヤー名を検索するときに、フィーチャ レイヤーおよびビュー レイヤーという 2 つ以上の結果が返されます。 関連するビュー レイヤーを確認するには、次のサンプルに示すように、gis.content.search() 関数に対して設定したパラメーターをスクリプトで呼び出すことができます。
item = gis.content.search("featurename", "Feature Layer") item
このコードは、指定した名前を持つ使用可能なすべてのアイテムを返します。 次のスクリプトは、結果のサンプルを示しています。
[<Item title:"featurename_1" type:Feature Layer Collection owner:User_1>, <Item title:"featurename" type:Feature Layer Collection owner:User_1>]
gis.content.search() 関数の問題に対処するために、インデックスまたは配列を関数に追加することができます。 検索結果では、ビュー レイヤーが最初にリスト表示されるため、上書きされる正しいホスト フィーチャ レイヤーを検索で選択するには、「1」のインデックスを挿入する必要があります。 その手順を、以下のコード サンプルに示します。
from arcgis.gis import GIS from IPython.display import display gis = GIS("https://python.playground.esri.com/portal", "username", "password", verify_cert=False) #インデックス配列方法を使用する場合 item = gis.content.search("feature_name", "Feature Layer")[1] //検索関数のインデックスを設定する service_flayer_collection = FeatureLayerCollection.fromitem(item) service_flayer_collection.manager.overwrite(r'[folder_location]/TEST.zip')
別の方法は、目的のフィーチャのアイテム ID を検索することによって gis.content.search() メソッドを使用することです。 フィーチャのアイテム ID は、以下の図に示すように、フィーチャを ArcGIS Online で開いたときにブラウザーのアドレス バー上にあります。
これを実行するには、スクリプトを次のように変更します。
#アイテム ID を使用して検索する場合 item = gis.content.search("item_id")
ArcGIS エキスパートのサポートを受ける
Esri Support アプリのダウンロード