Mais

Copiar classes de recursos do Geodatabase pessoal para o Geodatabase do Arquivo usando ArcPy?

Copiar classes de recursos do Geodatabase pessoal para o Geodatabase do Arquivo usando ArcPy?


Eu tenho uma grande quantidade de bancos de dados geográficos pessoais que contêm conjuntos de dados e classes de recursos (um conjunto de dados com quatro classes de recursos e uma classe de recursos fora do conjunto de dados em cada mdb).

Desejo criar um arquivo geodatabase para cada um dos mdb e copiar o conjunto de dados e classes de recursos no arquivo geodatabase.

Para criar um arquivo de banco de dados geográfico, eu uso o código abaixo, mas não sei como copiar os conjuntos de dados e classes de recursos para o arquivo de banco de dados geográfico programaticamente.

import arcpy, os para o arquivo em os.listdir (r "X:  test  2"): if file.endswith (". mdb"): arcpy.CreateFileGDB_management (r "X:  test  2", arquivo [: -4], "ATUAL")

O script a seguir converte todos os conjuntos de dados de recursos e classes de recursos de um geodatabase pessoal em um novo arquivo de geodatabase.


import arcpy, os # Definir os espaços de trabalho de entrada e saída inws = r'C:  temp 'outws = r'C:  temp  outws' # Listar os Bancos de Dados de Acesso arcpy.env.workspace = inws mdbs = arcpy.ListWorkspaces (workspace_type = "Access") count = 1 para m em mdbs: # Defina o nome FGDB de saída fgdb_name = os.path.basename (m) .split (".") [0] + ".gdb" # Crie um novo arcpy FGDB. CreateFileGDB_management (outws, fgdb_name) # Copie quaisquer FCs que estejam diretamente no geodatabase pessoal arcpy.env.workspace = os.path.join (inws, m) fcs = arcpy.ListFeatureClasses () para fc em fcs: arcpy.CopyFeatures_management (fc, os.path.join (outws, fgdb_name, fc)) # Relatório sobre o status de processamento print "% s de% s bancos de dados pessoais convertidos em FGDB"% (count, len (mdbs)) count + = 1 # Listar o conjunto de dados de recursos arcpy .env.workspace = os.path.join (inws, m) fds = arcpy.ListDatasets () para f em fds: # Determine a referência espacial FDS desc = arcpy.Describe (f) sr = desc.spatialReference # Copiar FDS para FGDB arcpy.CreateFeatureDataset_management (os.path.join (outws, fgdb_name), f , spatial_reference = sr) # Copie os FCs para o novo FDS arcpy.env.workspace = os.path.join (inws, m, f) fcs = arcpy.ListFeatureClasses () para fc em fcs: arcpy.CopyFeatures_management (fc, os os. path.join (outws, fgdb_name, f, fc))

Supondo que seu código esteja funcionando bem para criar bancos de dados geográficos de arquivos com os mesmos nomes de seus bancos de dados geográficos pessoais, acho que suas próximas etapas devem ser:

  • use ListDatasets para produzir uma lista de conjuntos de dados de recursos em seu Geodatabase pessoal, e então
  • use Criar Conjunto de Dados de Recurso para criar novos com os mesmos nomes em seu Geodatabase de Arquivo.

Pela resposta acima, você precisa substituir onde diz:

desc = arcpy.Describe (f)

por este:

f_path = os.path.join (inws, m, f) desc = arcpy.Describe (f_path)

Caso contrário, após copiar o primeiro conjunto de dados encontrado e enfrentar o segundo conjunto de dados da lista, a função Descrever não pode encontrar o conjunto de dados e exibirá um erro pop-up.


Assista o vídeo: How to export shapefile to Geodatabase ArcGIS