Español
Continue in the app
Be The First To Get Support Updates
Want to know about the latest technical content and software updates?

Cómo: Copiar/clonar contenido de una organización de ArcGIS Online o Portal for ArcGIS a otra

Resumen

ArcGIS Online Assistant suele considerarse la única forma de copiar contenido de una organización de ArcGIS Online o Portal for ArcGIS a otra. Sin embargo, las instrucciones proporcionadas a continuación describen cómo hacerlo utilizando ArcGIS API for Python para copiar mapas web de contenido, aplicaciones configurables, cuadros de mando, shapefiles, geodatabases de archivos y otros.

Procedimiento

El siguiente script de Python (ejecutado desde una interfaz de Jupyter Notebook) utiliza el método clone_items del módulo arcgis para copiar capas de entidades alojadas y el servicio subyacente de una organización de ArcGIS Online a otra. Las celdas de muestra utilizadas están diseñadas para su uso en Jupyter Notebook, pero se pueden modificar para su uso en un script independiente.

Nota: El usuario que ejecuta la copia debe ser un administrador en el SIG de destino.
  1. Importe el módulo necesario.
from arcgis.gis import GIS
  1. Especifique la URL y las credenciales de la cuenta de origen de ArcGIS Online. 
#Para ArcGIS Online gis=GIS("https://arcgis.com", "Nombre de usuario", "Contraseña") #Para Portal for ArcGIS gis=GIS("https://<gisserver>.<domain>.com/portal", "Nombre de usuario", "Contraseña")
  1. Especifique el nombre de usuario de la cuenta para exportar los elementos clonados. 
username_2 = input("Introducir nombre de usuario de organización de destino: ") #Para ArcGIS Online gis2 = GIS("https://arcgis.com", username_2) #Para Portal for ArcGIS gis2 = GIS("https://<gisserver>.<domain>.com/portal", username_2)
  1. Cree una lista de elementos para clonar. Existen varias opciones para hacerlo:
  • Cambiar el número máximo de elementos a exportar:
num_items = 5 items = gis1.content.search(query="owner: {}".format(username), max_items=num_items, sort_field='id', sort_order='desc')
  • Obtener el número máximo de elementos como parámetro de entrada:
num_items = int(input("¿Cuántos elementos desea clonar? ")) items = gis1.content.search(query="owner: {}".format(username), max_items=num_items, sort_field='id', sort_order='desc'
  • Obtener un elemento concreto utilizando el Id. de elemento:
itemid = '<item_ID>' #insertar id de elemento items = gis.content.get(itemid)
  • Utilice la función Search con una consulta para buscar elementos específicos para clonarlos. El formato general es el siguiente:
items = gis.content.search(query, item_type=None, sort_field='avgRating', sort_order='desc', max_items=10, outside_org=False, categories=None, category_filters=None)
  1. Imprimir la lista de los elementos que se van a clonar.
print(str(len(items)) + " elementos se clonarán. Consulte la lista siguiente:") items
  1. Cree una lógica para clonar los elementos utilizando la función clone_items() y gestionar un error si falla el proceso de clonación.  
def deep_copy_content(input_list): for item in input_list: try: print("Clonando " + item.title) copy_list = [] copy_list.append(item) gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True) print("Se clonó correctamente " + item.title) except Exception as e: print(e) print("La función se ha completado") deep_copy_content(items)
Nota: Como alternativa, también se puede utilizar la función clone_items() fuera del bloque de código lógico si no es necesario gestionar la excepción. Después del paso 5, se puede utilizar la función clone_items() como tal: gis2.content.clone_items([items])

A continuación, se muestra un ejemplo de un script completo:

from arcgis.gis import GIS gis=GIS("https://arcgis.com", "Nombre de usuario", "Contraseña") username_2 = input("Introducir nombre de usuario de organización de destino: ") gis2 = GIS("https://arcgis.com", username_2) #Obtener un elemento concreto con id de elemento: itemid = 'cc94b27a35d14f40987d96f3d2a39e67' items = gis.content.get(itemid)  print(str(len(items)) + " elementos se clonarán. Consulte la lista siguiente:") items def deep_copy_content(input_list): for item in input_list: try: print("Clonando " + item.title) copy_list = [] copy_list.append(item) gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True) print("Se clonó correctamente " + item.title) except Exception as e: print(e) print("La función de completó") deep_copy_content(items)

Información relacionada

Última modificación: 5/13/2021

Id. de artículo: 000022252

Software: Portal for ArcGIS 10.8.1, 10.8, 10.7.1, 10.7, 10.6.1, 10.6