Kode di bawah ini akan membuat, dari shapefile, file layer yang disebut test_A.lyr yang memiliki Query Definisi "testField" = 'A' yang disimpan di dalamnya.
import arcpy
arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr")
lyr = arcpy.mapping.Layer("test_lyr")
lyr.name = "test"
lyr.definitionQuery = '"testField" = ' + "'A'"
lyr.saveACopy(r"C:\temp\test_A.lyr")
del lyr
Jika diperlukan, Anda juga bisa menambahkan file layer ini, atau objek Layer (lyr) dari sebelum disimpan sebagai file layer, ke dalam peta Anda melalui arcpy.mapping.AddLayer.
Untuk melihat apakah where_clause di MakeFeatureLayer dilewati sebagai Definisi Kueri, yang menurut saya merupakan perilaku tidak berdokumen, saya melakukan tes kedua di bawah ini untuk memverifikasi Jawaban @John, dan dia cukup benar.
arcpy.MakeFeatureLayer_management(r"C:\temp\testLines.shp","test_lyr2",'"testField" = ' + "'A'")
lyr2 = arcpy.mapping.Layer("test_lyr2")
lyr2.name = "test2"
lyr2.saveACopy(r"C:\temp\test_2.lyr")
del lyr2
arcpy.mapping.layer()
telah diganti denganarcpy.mp.LayerFile()
Ya, itu pasti mungkin bagi Anda karena itulah yang menjadi parameter opsional "where_clause" - lihat dokumentasi untuk detail dan contoh, tetapi pada dasarnya Anda hanya perlu memasukkan kueri definisi sebagai param where_clause dan harusnya berfungsi. Satu-satunya hal yang perlu diperhatikan, jika Anda menggunakan lapisan yang tidak memiliki bidang ObjectID / FID, ArcGIS memiliki masalah menjalankan ekspresi SQL terhadapnya, tetapi lapisan ArcGIS biasa akan.
sumber
Jika Anda memuat lapisan ke dalam Arcmap menggunakan alat geoprosesing MakeFeatureLayer, Anda dapat mengatur definitionQuery pada lapisan arcmap yang ada menggunakan lapisan kelas arcpy.mapping - definitionQuery .
sumber