CÓMO
Los flujos de trabajo recomendados y compatibles para realizar copias de seguridad de contenido en ArcGIS Online son exportar y descargar servicios de entidades alojados o copiar servicios de entidades alojados en ArcGIS Enterprise mediante Colaboración distribuida. Este artículo presenta un ejemplo de código que muestra cómo exportar y descargar servicios de entidades alojados en formato de geodatabase de archivos.
El almacenamiento en la nube de ArcGIS Online es seguro y fiable. Sin embargo, los errores aparecen o las copias de seguridad periódicas pueden ser un requisito empresarial. Por tanto, muchas organizaciones sin ArcGIS Enterprise exportan y descargan servicios de entidades alojados con regularidad para tener una copia de seguridad. La desventaja de este flujo de trabajo es que la copia de seguridad manual de los servicios de entidades alojados a través de la exportación y descarga consume mucho tiempo y requiere mucho trabajo.
Con ArcGIS API for Python, es posible automatizar la exportación y descarga de servicios de entidades alojados como geodatabases de archivos en una ubicación de una unidad local. El siguiente ejemplo de código muestra cómo ejecutarlo en un entorno de Jupyter Notebook o en un entorno de script independiente:
from arcgis.gis import GIS
import datetime as dt
username = input("Input your username: ")
gis = GIS("https://arcgis.com", username)
Al devolver este bloque de código, se solicita introducir una contraseña. Después de esto, busque servicios de entidades para descargar. Introduzca un valor alto para el parámetro max_items para asegurarse de que todos los servicios de entidades se devuelven en la lista. En este ejemplo, la consulta busca solo los elementos del usuario que ha iniciado sesión. Conéctese con privilegios administrativos y modifique la consulta para descargar servicios no compartidos o no habilitados para la exportación que sean propiedad de otros usuarios de la organización. En la celda siguiente también se pide una ruta de archivo, que se puede introducir regularmente como cuentas de Jupyter Notebook con caracteres de escape cuando la cadena de caracteres se usa como ubicación de salida en la función de descarga.
Note: When using the Jupyter Notebook or a stand-alone script, a local folder location can be provided. However, ArcGIS Notebook on ArcGIS Online is not directly connected to the local folder on the machine. When running the script on ArcGIS Notebook, the following folder path must be provided: '/arcgis/home/<folder_name>' The folder path above can be accessed from the Files tab of ArcGIS Notebook.
folder_path = input("Please enter the file location to store the backups: ")
num_items = int(input("How many items do you want to back up? "))
query_string = "type:Feature Service, owner:{}".format(username)
items = gis.content.search(query=query_string, max_items=num_items, sort_field='modifed', sort_order='desc')
print(str(len(items)) + " items will be backed up to " + folder_path +". See the list below:")
items
Se devuelve una lista similar a la siguiente:
[<Item title:"Title1" type:Feature Layer Collection owner:Username>, <Item title:"Title2" type:Feature Layer Collection owner:Username>, <Item title:"Title3" type:Feature Layer Collection owner:Username>, + about 100 more in my case...]
Por último, creamos una función que itera por la lista de Servicios de entidades (hay lógica en el script siguiente para evitar descargar vistas de capas de entidades alojadas, ya que esto crearía copias de seguridad duplicadas), genera títulos FGDB, exporta y descarga cada servicio de entidades como una FGDB y, por último, elimina los elementos FGDB de Mi contenido en ArcGIS Online:
def download_as_fgdb(item_list, backup_location):
for item in item_list:
try:
if 'View Service' in item.typeKeywords:
print(item.title + " is view, not downloading")
else:
print("Downloading " + item.title)
version = dt.datetime.now().strftime("%d_%b_%Y")
result = item.export(item.title + "_" + version, "File Geodatabase")
result.download(save_path=backup_location)
result.delete()
print("Successfully downloaded " + item.title)
except:
print("An error occurred downloading " + item.title)
print("The function has completed")
download_as_fgdb(items, folder_path)
Id. de artículo: 000022524
Obtener ayuda de expertos en ArcGIS
Empieza a chatear ahora