Saya memiliki skrip berbasis ArcPy di mana saya mencoba untuk memotong dua lapisan di mana satu lapisan harus memiliki centroid di lapisan lain.
Karena saya perlu tahu bahwa satu layer (feature_layer di bawah) termasuk centroid yang lain, saya menggunakan alat arcpy.SelectLayerByLocation_management ().
Saya tidak memiliki Dokumen Peta (* .mxd) terbuka sehingga untuk melakukan ini, saya harus menggunakan Make Feature Layer untuk memasukkannya.
Dokumentasi mencatat bahwa lapisan fitur akan hilang ketika program keluar, tetapi saya membutuhkannya untuk menghilang lebih cepat karena saya memilikinya dalam satu lingkaran yang mirip dengan di bawah ini
for feature_class in large_list_of_feature_classes:
some_function(feature_class)
def some_function():
feature = "{path to feature class}"
feature_layer = "feature_layer"
HUCs_layer = "all_HUCs" #HUCs being Hydrologic Unit Codes
arcpy.MakeFeatureLayer_management(feature, feature_layer)
arcpy.MakeFeatureLayer_management(feature, HUCs_layer)
arcpy.SelectLayerByLocation_management(HUCs_layer, "HAVE_THEIR_CENTER_IN", feature_layer, selection_type="NEW_SELECTION")
arcpy.CopyFeatures_management(HUCs_layer, selection_name)
Saya mencari fungsi untuk menghapus lapisan fitur dan saya belum dapat menemukannya.
Saya menyadari bahwa saya dapat menaruh semacam hitungan di sana atau sesuatu untuk membuat masing-masing unik dalam lingkup program, tetapi itu tidak ideal kecuali tidak ada cara untuk menghapus lapisan fitur.
sumber
Anda dapat memanggil arcpy.mapping.RemoveLayer untuk menghapus layer dari TOC.
sumber
Ini yang saya gunakan untuk menghapus layer.
arcpy.mapping.RemoveLayer ("DataFrame", "Layer Name")
Atau perulangan:
sumber
Gunakan
mxd.save()
jika Anda menggunakan dokumen peta yang bukanCURRENT
untuk memastikan lapisan tetap hilang. Juga, tambahkan pernyataan cetak dalam skrip Anda:Hanya untuk memastikan itu menemukan lapisan untuk dihapus sama sekali.
sumber
coba ini:
sumber