Ciertamente he creado algo como esto; es un gran uso para la definición de las consultas. He aquí un copiar/pegar/modificación de una herramienta que yo he escrito. Usted tendrá que buscar cómo crear una herramienta de secuencia de comandos en una caja de herramientas. Cuando se hacen dos parámetros, uno para celebrar la entrada del shapefile/clase de entidad (tipo = Capa o Clase de entidad), y uno para entrar en la "capa" de campo (tipo = Cadena de caracteres). A continuación, utilice este código en el script que está asociada con la herramienta:
import arcpy
## get user input
datasource = arcpy.GetParameterAsText(0)
field = arcpy.GetParameterAsText(1)
## make the mxd and data frame objects
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
## make list of unique values in field
unique_values = set([row[0] for row in arcpy.da.SearchCursor(datasource,field)])
unique_values.sort()
## iterate through the values, and make layers for each one
fieldname = arcpy.AddFieldDelimiters(datasource, field)
for value in unique_values:
query = "{0} = '{1}'".format(fieldname,value)
layer = arcpy.mapping.Layer(datasource)
layer.name = value
layer.definitionQuery = query
arcpy.mapping.AddLayer(df, layer, "BOTTOM")
Esto es muy escueto, y usted puede añadir un montón de campanas y silbatos. Primero que yo haría es ir en la ToolValidator para la secuencia de comandos de la herramienta en sí y añadir estas líneas a la updateParameters función:
def updateParameters(self):
if self.params[0].value:
fieldnames = [f.name for f in arcpy.ListFields(self.params[0].value)]
self.params[1].filter.list = fieldnames
Ahora tendrás un menú desplegable de la herramienta de diálogo con los nombres de campo, por lo que no tiene que cuidadosamente escriba el nombre del campo (porque el script no funcionará con inadecuada caso!)
Con respecto a los casos de uso: este es el esqueleto de una herramienta que he usado para crear múltiples capas de archivos kml... automatizar la creación de un montón de capas como este, aplicar una simbología estándar para cada capa, y el uso de la herramienta de mapa a KML en el documento de mapa para crear la salida. Maravillosamente útil para el intercambio de datos con los no-usuarios de SIG.