El siguiente código creará, a partir de un archivo de forma, un archivo de capa llamado test_A.lyr que tiene una consulta de definición de "testField" = 'A' guardada en él.
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
Si es necesario, también puede agregar este archivo de capa, o el objeto de capa (lyr) antes de que se guarde como un archivo de capa, en su mapa a través de arcpy.mapping.AddLayer.
Para ver si una cláusula where_clave en MakeFeatureLayer se pasa como una Consulta de definición, que creo que es un comportamiento indocumentado, realicé una segunda prueba a continuación para verificar la Respuesta de @John, y él es bastante correcto.
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()
se ha reemplazado conarcpy.mp.LayerFile()
Sí, definitivamente debería ser posible para usted, ya que para eso es el parámetro opcional "where_clause"; consulte su documentación para obtener detalles y ejemplos, pero básicamente solo necesita incluir la consulta de definición como el parámetro where_clause y debería funcionar. Lo único a tener en cuenta es que si está utilizando una capa que no tiene un campo ObjectID / FID, ArcGIS tiene problemas para ejecutar expresiones SQL en su contra, pero cualquier capa ArcGIS normal sí.
fuente
Si está cargando capas en Arcmap usando la herramienta de geoprocesamiento MakeFeatureLayer, puede establecer definitionQuery en las capas de mapa de arco existentes usando las capas de clase arcpy.mapping - definitionQuery .
fuente