2016-01-26 4 views
1

Я хочу скопировать наборы данных с использованием ArcPy (Python) из базы геоданных файлов в SDE. Но почему-то я не могу получить доступ к своей SDE должным образом. Ошибки я получаю следующее:Доступ к SDB без ключа (Copy_management)

arcgisscripting.ExecuteError: ERROR 000110: C:\Users\me\AppData\Roaming\ESRI\Desktop10.2\ArcCatalog\Verbindung mit sde.sde does not exist. Failed to execute Copy

import arcpy 

CopyGDB = "C:\\Temp\\TempDB.gdb" 
PasteSDE = "C:\\Users\\me\\AppData\\Roaming\\ESRI\\Desktop10.2\\ArcCatalog\\Verbindung mit sde.sde" 

arcpy.env.workspace = CopyGDB 
CopyGDBdatasets = arcpy.ListDatasets() 

for fd in CopyGDBdatasets: 
     arcpy.Copy_management(fd, PasteSDE + "\\" + fd, "feature dataset") 

Я использую 32 битную версию Python с (версия 2.7.5) и 32 битная версия ArcGIS (версия 10.2).

Я проверил файл SDE Connection и верный путь. В ArcCatalog я могу получить доступ к своей SDE должным образом.

Database Properties

+0

ли 'arcpy.ListDatasets' также дать пустой список в базе данных SDE? – M4rtini

+0

Если вы запустите этот процесс для одного набора данных в приложении Desktop. Вы можете получить эквивалентный скрипт python, щелкнув правой кнопкой мыши элемент в окне результатов геообработки. – M4rtini

+0

ОК, извините, я дважды проверил его. arcpy.ListDatasets() работает корректно. Я удалю эту часть из вопроса. – Nino

ответ

1

Я думаю, что проблема в том, что SDE набора данных Имена начинаются с имени владельца схемы и разделены с «» , Файл геоданных не поддерживают эту конвенцию

  • Вам нужно будет разобрать FD, чтобы удалить это, используя что-то вроде fd.split («»)

Я предпочитаю использовать необработанный жала декоратора на пути так что я могу скопировать его непосредственно из окна адресной строки или ArcGIS

  • вместо "C: \\ Temp \\ TempDB.gdb" использовать г "C: \ Temp \ TempDB.gdb"
  • Кроме того, использование os.path.join для лучшей практики

Удалить необязательный параметр типа данных, ключевое слово используется неправильно

  • ключевое слово «FeatureDataset» согласно doc

попробовать:

import os 
... 
outFd = fd.split(".")[1] 
arcpy.Copy_management(fd, os.path.join(PasteSDE, outFd))