フィーチャクラスをジオデータベースにコピーしようとしています。私はフォルダ内のすべてのフィーチャクラスをループし、ポリゴンフィーチャクラスのみをコピーしています。私の問題は、最初のポリゴンフィーチャクラスをコピーすると、それが 'shp'という名前に変更され、2番目の 'shp'も同様に名前を付けることになります。変数fcname
は、コピー機能の外で完全なフィーチャクラス名( 'counties.shp'と 'new_mexico.shp')を返しますが、関数内では正しく機能しません。Pyrhon変数が関数の外で動作していますが、内部にはありません
fcname
変数をテストするために、以下のコードにコメントアウトして実行したい機能があります。フォルダには5つのフィーチャクラスがあり、そのうちの2つはポリゴンフィーチャクラスです。コメントを外すと、コードは最初のポリゴンフィーチャクラスを通過し、fcname
は 'counties.shp'ではなく 'shp'になります。これは、 'shp'が既にgdb
に存在するため、エラーになる2番目のフィーチャクラスに対しても同じことを行います。
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に切り捨てられていました。 –