O código abaixo criará, a partir de um shapefile, um arquivo de camada chamado test_A.lyr que possui uma Consulta de definição de "testField" = 'A' salva nele.
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
Se necessário, você também pode adicionar esse arquivo de camada, ou o objeto Layer (lyr), antes de ser salvo como um arquivo de camada, no seu mapa via arcpy.mapping.AddLayer.
Para ver se uma cláusula where em MakeFeatureLayer é passada como uma Consulta de Definição, que eu acho que é um comportamento não documentado, realizei um segundo teste abaixo para verificar a Resposta de @John, e ele está correto.
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()
foi substituído porarcpy.mp.LayerFile()
Sim, definitivamente deve ser possível para você, pois é para isso que serve o parâmetro opcional "where_clause" - consulte a documentação para obter detalhes e exemplos, mas basicamente você só precisa incluir a consulta de definição como o parâmetro where_clause e deve funcionar. É importante notar que, se você estiver usando uma camada que não possui um campo ObjectID / FID, o ArcGIS tem problemas ao executar expressões SQL, mas qualquer camada regular do ArcGIS terá.
fonte
Se você estiver carregando camadas no Arcmap usando a ferramenta de geoprocessamento MakeFeatureLayer, poderá definir o definitionQuery em camadas de arcmap existentes usando as camadas da classe arcpy.mapping - definitionQuery .
fonte