У меня проблема, когда я пытаюсь скопировать классы объектов в базу геоданных. Я просматриваю все классы объектов в папке и копирую только классы объектов многоугольника. Моя проблема в том, что когда я копирую первый класс объектов многоугольника, он переименовывает его «shp», а затем пытается также называть второй «shp». Переменная fcname
возвращает полные имена классов объектов ('counties.shp' и 'new_mexico.shp') вне функции копирования, но она не работает должным образом внутри функции.Pyrhon переменная, работающая вне функции, но не внутри
В приведенном ниже коде есть функция, которую я хочу запустить, для проверки переменной fcname
. В папке есть пять классов объектов, причем два из них являются классами многоугольников. При раскомментировании код проходит весь путь через первый класс объектов многоугольника, где fcname
приводит к «shp» вместо «counties.shp». Он делает то же самое для второго класса объектов, что приводит к ошибке, поскольку «shp» уже существует в gdb
.
import arcpy
# Set initial variables with different pathnames available
# whether I am working on my home or work computer
pathhome = "G:/ESRIScriptArcGIS/Python/Data/Exercise06"
pathwork = "C:/ESRIPress/Python/Data/Exercise06"
arcpy.env.workspace = pathwork
gdbname ="NewDatabase.gdb"
fclist = arcpy.ListFeatureClasses()
# Create new gdb
##arcpy.management.CreateFileGDB(path, gdbname)
newgdb = path + "/" + gdbname
# Loop through list
for fc in fclist:
desc = arcpy.Describe(fc)
fcname = desc.name
outpath = newgdb + "/" + fcname
# Check for polygon then copy
if desc.shapeType == "Polygon":
##arcpy.management.CopyFeatures(fcname,outpath)
##print fcname + "copied."
print fcname
else:
print "Not a polygon feature class"
Спасибо всем, кто может помочь!
Просто убедитесь, что я понял - 'fcname' является идеальным файлом в коде, который вы отправили, но как только он переходит в' CopyFeatures', он усекается? Или что-то другое? –
Он был усечен до просто shp. –