错误

错误:运行时错误:项目<item_name>已存在

Last Published: May 28, 2020

错误消息

可以在 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() 函数搜索要素图层名称,则将返回多个结果:要素图层和视图图层。 要检查是否存在任何关联的视图图层,可以在脚本中调用针对 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) #For using index array method item = gis.content.search("feature_name", "Feature Layer")[1] //Setting the index for the search function service_flayer_collection = FeatureLayerCollection.fromitem(item) service_flayer_collection.manager.overwrite(r'[folder_location]/TEST.zip')

另一种替代解决方法是使用 gis.content.search() 方法来搜索所需要素的项目 ID。 在 ArcGIS Online 中打开要素后,可以在浏览器的地址栏中找到该要素的项目 ID,如下图所示:

打开的托管要素图层地址栏的图像

为此,请按如下所示修改该脚本:

#For searching using item ID item = gis.content.search("item_id")

文章 ID:000019281

接收通知并查找新问题或常见问题的解决方案

从我们全新的 AI 聊天机器人中获得简明答案和视频解决方案。

下载 Esri 支持应用程序

相关信息

发现关于本主题的更多内容

获取来自 ArcGIS 专家的帮助

联系技术支持部门

下载 Esri 支持应用程序

转至下载选项