Answers:
下面的代码将从shapefile创建一个名为test_A.lyr的图层文件,其中将定义查询“ testField” ='A'保存到其中。
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
如果需要,还可以通过arcpy.mapping.AddLayer将此图层文件或图层对象(lyr)保存为图层文件之前,将其添加到地图中。
为了查看MakeFeatureLayer上的where_clause是否作为定义查询通过,我认为这没有记录,我在下面进行了第二次测试以验证@John的答案,他是正确的。
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
如果要使用MakeFeatureLayer地理处理工具将图层加载到Arcmap中,则可以使用arcpy.mapping类layers-definitionQuery在现有的arcmap图层上设置definitionQuery。
arcpy.mapping.layer()
已由arcpy.mp.LayerFile()