ERROR

Error de tiempo de ejecución: el elemento<item_name>ya existe

Last Published: May 28, 2020

Mensaje de error

Es posible sobrescribir una capa de entidades alojada existente en un portal utilizando el método de overwrite() en ArcGIS API for Python, como se muestra en el siguiente ejemplo:

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')

Sin embargo, en algunos casos, aparece el siguiente error:

Error: Error de tiempo de ejecución: el elemento <item name> ya existe.

Causa

El error puede ocurrir si la capa publicada está asociada a una capa de vista. Consulte Portal for ArcGIS: Crear vistas de capas de entidades alojadas para obtener más información. Al buscar el nombre de la capa de entidades con la función gis.content.search(), se devuelve más de un resultado: la capa de entidades y la capa de vista. Para comprobar si hay capas de vista asociadas, se puede llamar al parámetro establecido para la función gis.content.search() en el script, como se muestra en el siguiente ejemplo:

item = gis.content.search("featurename", "Feature Layer") item

El código devuelve todos los elementos disponibles con el nombre especificado. El siguiente script muestra un ejemplo del resultado:

[<Item title:"featurename_1" type:Feature Layer Collection owner:User_1>, <Item title:"featurename" type:Feature Layer Collection owner:User_1>]

Solución o solución alternativa

Para evitar el problema de la función gis.content.search() se puede agregar un índice o matriz a la función. Como las capas de vista se enumeran primero en el resultado de búsqueda, se debe insertar un índice de '1' para que la búsqueda seleccione la capa de entidades alojada correcta que se va a sobrescribir. La siguiente muestra de código muestra cómo hacerlo:

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')

Otra alternativa es utilizar el método gis.content.search() buscando el Id. de elemento de la entidad deseada. El Id. de elemento de una entidad se puede encontrar en la barra de direcciones de un navegador cuando la entidad se abre en ArcGIS Online, como se muestra en la siguiente imagen:

La imagen de una barra de direcciones de una capa de entidades alojada abierta

Para ello, modifique el script de la siguiente manera:

#Para buscar utilizando el Id. de elemento item = gis.content.search("item_id")

Id. de artículo: 000019281

Recibir notificaciones y encontrar soluciones a problemas nuevos o comunes

Obtenga respuestas resumidas y soluciones de vídeo de nuestro nuevo chatbot de IA.

Descargar la aplicación de soporte de Esri

Información relacionada

Descubrir más sobre este tema

Obtener ayuda de expertos en ArcGIS

Contactar con el soporte técnico

Descargar la aplicación de soporte de Esri

Ir a opciones de descarga