Instrução

Faça uma cópia de segurança de itens do ArcGIS Online para uma conexão de banco de dados com ArcGIS API for Python

Last Published: January 5, 2021

Resumo

Os itens em um arquivo geodatabase compactado (FGDB) podem ter funcionalidade limitada para cópia de segurança de dados. Ter os dados em um banco de dados permite um acesso mais fácil para visualizar os dados. Criar cópia de segurança de itens do ArcGIS Online para uma conexão de banco de dados com ArcGIS API for Python permite que vários itens sejam baixados, extraídos e copiados simultaneamente.

Procedimento

  1. Importe os módulos necessários e defina a opção de saída de substituição para True.
from arcgis.gis import GIS import arcpy import os import zipfile import glob import shutil arcpy.env.overwriteOutput = True
  1. Especifique o caminho para o projeto e as credenciais de login.
gis=GIS("https://arcgis.com","username","password") folders = [] root = r"Path To Location Where AGOL Items are Downloaded" items = ['ItemID1', 'ID2', 'ID3', 'ID4'] destination = r"Path To Location Where Downloaded zipped folders are extracted" outputPath = r"Full File Path to SDE Connection\<connectionname>.sde"
  1. Baixe os itens desejados, que são armazenados como FGDBs compactados, e crie uma lista dos itens baixados.
#a variável 'itens' pode ser substituída para obter todos os itens no ArcGIS Online se a necessidade for criar cópia de segurança de todos os itens for item in items: test = gis.content.get(item) fgdb_title = test.title fgdb_title=fgdb_title.replace('_', '') result = test.export(fgdb, "File Geodatabase") result.download(root) result.delete() folders.append(root +'\\' +fgdb_title + '.zip') print(folders)
  1. Extraia os FGDBs compactados baixados para uma nova pasta.
para pasta em pastas: with zipfile.ZipFile(folder) as zf: folder.replace('_','') zf.extractall(destination)
  1. Remova os arquivos locais (opcional).
Nota: A etapa 5 para remover os arquivos locais só é necessária se ocorrer um erro durante a execução do script devido a arquivos existentes.
para FGDB no FGDBlist: item_delete = (destination+FGDB+'\\') #Removes FGDBs in Destination folder(optional) shutil.rmtree(item_delete)
  1. Recupere os FGDBs extraídos e crie um loop através deles. Renomeie as classes de feição, se necessário, e copie a classe de feição para a conexão SDE.
FGDBlist=os.listdir(destination) for FGDB in FGDBlist: gdb_var=(destination+FGDB+'\\') arcpy.env.workspace=(gdb_var) featureclasses = arcpy.ListFeatureClasses() print(featureclasses) for FC in featureclasses: rename = arcpy.Rename_management(FC, FC + "_copy", "FeatureClass") print(rename) arcpy.FeatureClassToFeatureClass_conversion(gdb_var + FC + "_copy", outputPath, FC + "_copy")

ID do Artigo: 000024135

Receba notificações e encontre soluções para problemas novos ou comuns

Obtenha respostas resumidas e soluções de vídeo do nosso novo chatbot de IA.

Baixe o Aplicativo de Suporte da Esri

Informações Relacionadas

Descubra mais sobre este tema

Obtenha ajuda de especialistas do ArcGIS

Entre em contato com Suporte Técnico

Baixe o Aplicativo de Suporte da Esri

Ir para as opções de download