Instrução

Faça uma cópia de segurança do conteúdo hospedado por meio de loop e download de serviços de feição hospedados no formato FGDB

Last Published: January 27, 2025

Descrição

Os fluxos de trabalho recomendados e suportados para cópia de segurança de conteúdo no ArcGIS Online são exportar e baixar serviços da feição hospedados ou copiar serviços da feição hospedados para ArcGIS Enterprise através da Colaboração Distribuída. Este artigo apresenta uma amostra de código mostrando como exportar e baixar Serviços da Feição Hospedados no formato de arquivo geodatabase.

O armazenamento em nuvem do ArcGIS Online é seguro e confiável. No entanto, erros acontecem ou cópias de segurança periódicos podem ser um requisito de negócios. Portanto, muitas organizações sem ArcGIS Enterprise exportam e baixam serviços da feição hospedados regularmente para ter uma cópia de segurança. A desvantagem deste fluxo de trabalho é que a cópia de segurança manual dos serviços da feição hospedados por meio de exportação e download é demorado e trabalhoso.

Solução ou Solução Provisória

Com a utilização do ArcGIS API for Python, é possível automatizar a exportação e download de serviços da feição hospedados como arquivos geodatabase para um local em uma unidade local. O exemplo de código abaixo mostra como executar isso em um Jupyter Notebook ou em um ambiente de script autônomo:

from arcgis.gis import GIS
import datetime as dt
username = input("Input your username: ")
gis = GIS("https://arcgis.com", username)

O retorno desse bloco de código solicita a inserção de uma senha. Após isto, procure por serviços da feição para baixar. Insira um valor alto para o parâmetro max_items para garantir que todos os Serviços da Feição sejam retornados na lista. Neste exemplo, a consulta pesquisa apenas os itens do usuário conectado. Conecte-se com privilégios administrativos e modifique a consulta para baixar serviços não compartilhados/não habilitados para exportação que outras pessoas na organização possuem. A célula abaixo também solicita um caminho de arquivo, que pode ser inserido regularmente, pois o Jupyter Notebook considera os caracteres de escape quando a cadeia de caracteres é usada como o local de saída na função de download.

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.
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

Uma lista semelhante à seguinte é retornada:

[<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 fim, criamos uma função que itera pela lista de Serviços da Feição (há lógica no script abaixo para evitar o download de visualizações da camada de feição hospedada, pois isso criaria cópias de segurança duplicadas), gera títulos FGDB, exporta e baixa cada Serviço da Feição como um FGDB e, finalmente, exclui os Itens FGDB do Meu Conteúdo no 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 do Artigo: 000022524

Obtenha suporte com IA

Resolva seu problema rapidamente com o chatbot de IA de suporte da Esri.

Comece a conversar agora

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Comece a conversar agora

Ir para as opções de download