français
Continue in the app
Be The First To Get Support Updates
Want to know about the latest technical content and software updates?

Procédure : copier/cloner du contenu d’une organisation ArcGIS Online ou Portal for ArcGIS vers une autre

Résumé

ArcGIS Online Assistant est souvent considéré comme le seul moyen de copier du contenu d’une organisation ArcGIS Online ou Portal for ArcGIS vers une autre. Toutefois, les instructions fournies ci-dessous expliquent comment effectuer cette opération avec ArcGIS API for Python pour copier des cartes Web, des applications configurables, des tableaux de bord, des shapefiles, des géodatabases fichier, etc.

Procédure

Le script Python suivant (exécuté à partir d’une interface Jupyter Notebook) utilise la méthode clone_items du module arcgis pour copier les couches d’entités hébergées et le service sous-jacent d’une organisation ArcGIS Online vers une autre. Les exemples de cellule utilisés sont destinés à être employés dans Jupyter Notebook, mais ils peuvent être modifiés pour une utilisation dans un script autonome.

Remarque : L’utilisateur qui exécute la copie doit être un administrateur dans le SIG cible.
  1. Importez le module nécessaire.
from arcgis.gis import GIS
  1. Spécifiez l’URL et les identifiants de connexion du compte ArcGIS Online d’origine. 
#For ArcGIS Online gis=GIS("https://arcgis.com", "Username", "Password") #For Portal for ArcGIS gis=GIS("https://<gisserver>.<domain>.com/portal", "Username", "Password")
  1. Spécifiez le nom d’utilisateur du compte vers lequel exporter les éléments clonés. 
username_2 = input("Enter username of target organization: ") #For ArcGIS Online gis2 = GIS("https://arcgis.com", username_2) #For Portal for ArcGIS gis2 = GIS("https://<gisserver>.<domain>.com/portal", username_2)
  1. Créez une liste d’éléments à cloner. Il existe plusieurs options permettant d’effectuer cette opération :
  • Définissez le nombre maximal d’éléments à exporter :
num_items = 5 items = gis1.content.search(query="owner: {}".format(username), max_items=num_items, sort_field='id', sort_order='desc')
  • Obtenez le nombre maximal d’éléments comme paramètre en entrée :
num_items = int(input("How many items would you like to clone? ")) items = gis1.content.search(query="owner: {}".format(username), max_items=num_items, sort_field='id', sort_order='desc')
  • Obtenez un élément spécifique avec un ID d’élément :
itemid = '<item_ID>' #insert the item id items = gis.content.get(itemid)
  • Utilisez la fonction de recherche avec une requête pour rechercher des éléments spécifiques à cloner. Le format général est le suivant :
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. Affichez la liste des éléments à cloner.
print(str(len(items)) + " items will be cloned. See the list below:") items
  1. Créez une logique permettant de cloner les éléments à l’aide de la fonction clone_items() et de traiter les erreurs en cas d’échec du clonage.  
def deep_copy_content(input_list): for item in input_list: try: print("Cloning " + item.title) copy_list = [] copy_list.append(item) gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True) print("Successfully cloned " + item.title) except Exception as e: print(e) print("The function has completed") deep_copy_content(items)
Remarque : Vous pouvez également utiliser la fonction clone_items() en dehors du bloc de code de logique s’il n’est pas nécessaire de traiter les exceptions. Après l’étape 5, la fonction clone_items() peut être utilisée comme suit : gis2.content.clone_items([items])

Voici un exemple de script complet :

from arcgis.gis import GIS gis=GIS("https://arcgis.com", "Username", "Password") username_2 = input("Enter username of target organization: ") gis2 = GIS("https://arcgis.com", username_2) #Get a specific item using item id: itemid = 'cc94b27a35d14f40987d96f3d2a39e67' items = gis.content.get(itemid)  print(str(len(items)) + " items will be cloned. See the list below:") items def deep_copy_content(input_list): for item in input_list: try: print("Cloning " + item.title) copy_list = [] copy_list.append(item) gis2.content.clone_items(copy_list, copy_data=True, search_existing_items=True) print("Successfully cloned " + item.title) except Exception as e: print(e) print("The function has completed") deep_copy_content(items)

Informations associées

Dernière modification: 5/13/2021

ID d’article: 000022252

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