layer di-memory arcpy.MakeFeatureLayer masih ada ketika langkah berikutnya gagal selama pengujian

9

Ketika saya menggunakan arcgisscripting untuk membuat in-memory output layer dengan gp.makefeaturelayer, saya akan meletakkannya di blok try / kecuali dan menghapus objek gp di bagian kecuali ketika makefeaturelayer akan gagal. Sekarang ketika saya menggunakan arcpy, sepertinya saya harus menutup jendela siaga dan membuka lagi untuk mendapatkan lapisan output dalam memori untuk dihapus.

Bagaimana saya bisa memiliki lapisan output dari alat makefeaturelayer saya dihapus dalam blok coba / kecuali? Terima kasih.

Justin
sumber
Lapisan fitur adalah representasi ringan dari kelas fitur. Apakah ada alasan khusus itu harus dihapus?
blah238
ketika saya membuat lapisan fitur di dalam memori dan kemudian langkah berikutnya gagal..saya membuat penyesuaian dan menjalankan kembali skrip di idle tapi kemudian saya mendapatkan "lapisan fitur" sudah ada jadi saya harus menutup idle down dan restart..it butuh waktu ekstra.
Justin
Make Feature Layer tidak membuat data apa pun, hanya tampilan beberapa data yang ada. Mungkin Anda malah membuat kelas fitur di dalam memori? Jika demikian, saya akan menggunakan saran Dan untuk menimpa kelas fitur dalam memori. Ini juga merupakan ide yang baik untuk menghapus kelas fitur di memori ketika Anda tidak lagi membutuhkannya, karena itu akan terus mengambil memori hingga aplikasi keluar.
blah238
Lihat Bekerja dengan layer dan tampilan tabel dalam bantuan untuk penjelasan yang lebih baik tentang apa itu layer fitur.
blah238

Jawaban:

8

Termasuk

arcpy.env.overwriteOutput = True

dalam skrip Anda akan menimpa versi file sebelumnya tanpa harus menghapus versi "buruk" sama sekali.

Andy
sumber
2
seharusnyaarcpy.env.overwriteOutput = True
Josh Werts
7

Menghapus lapisan fitur di blok kode kecuali tidak akan berfungsi. Jika Anda berada di kecuali blok kode, lapisan fitur gagal dibuat.

Saya sarankan menambahkan blok kode akhirnya yang akan dieksekusi apakah blok coba berhasil atau tidak. Jika Anda melakukan ini, Anda harus memastikan lapisan fitur ada sebelum Anda dapat menghapusnya.

try:
    arcpy.MakeFeatureLayer_management(inFeatureClass, "outFeatureLayer", {whereClause})
except:
    print arcpy.GetMessages()
finally:
    if arcpy.Exists("outFeatureLayer"):
        arcpy.Delete_management("outFeatureLayer")
Roy
sumber