18 votos

Seleccionar valores distintos de una sola columna de una tabla de atributos (o capa)

¿Hay una manera para seleccionar valores distintos de una columna en ArcMap? Tengo los datos en formatos GDB y SHP. Yo he buscado maneras de seleccionar usando SQL, QueryLayers, ModelBuilder y cajas de herramientas individuales y aparece como siempre Seleccione todas las opciones de selección * de tableName donde...

En SQL escribo SELECT DISTINCT columnName de tableName.

Gracias por tu ayuda.

18voto

geni Puntos 91

O puede ejecutar la herramienta de ArcToolBox frecuencia (herramientas de análisis >> Estadísticas >> frecuencia) que generará una tabla con valores únicos y un recuento de cuántas veces aparecen.

O podría escribir python script que obtiene un SearchCursor en un campo y crear una lista de todos los valores de la forma

if value not in myList:
    myList.append(value)

14voto

grenade Puntos 227

Uso de una comprensión de lista de Python.

import arcpy
fldName = 'val_fld'
fcName = 'feature_class.shp'
#set creates a unique value iterator from the value field
myList = set([row.getValue(fldName) for row in arcpy.SearchCursor(fcName)]) 

Para grandes conjuntos de datos un método eficiente de memoria sería una expresión de generador.

myList = set((row.getValue(fldName) for row in arcpy.SearchCursor(fcName,fields=fldName))

4voto

Chris Upchurch Puntos 10484

Si sus datos están en formato PGDB, usted puede hacer lo siguiente dentro de la consulta diálogos builder (consulta de la definición, selección por atributos, expresiones de la caja de herramientas etc.) utilizando una subconsulta:

Seleccione * de tableName donde...

column_to_test_for_unique_values IN 
(SELECT column_to_test_for_unique_values
FROM table_name
GROUP BY column_to_test_for_unique_values HAVING
Count(column_to_test_for_unique_values)=1)

Devolverá los registros para que los valores de la column_to_test_for_unique_values son únicos.

0voto

Arda Xi Puntos 1099

Por qué usar un distinct en una subconsulta (siguiente está en un featureclass FGDB):

"STATE_NAME" = (select distinct "STATE_NAME" from EsriUsaCountiesDetailed)

Nota de la ayuda (10.0) que esto tiene limitaciones:

Coberturas, archivos y otras fuentes de datos basada en archivos de nongeodatabase no admiten subconsultas.

0voto

Niall C. Puntos 1234

Como Justin. Normalmente hacer un resumen en el campo que quiero entonces hacer una selección distinta en la dbf ejecutar un pequeño cálculo para categorizar cada valor distinto entonces unirse a lo que a la original.
Es la manera larga alrededor, y tienes que fenagel con sus métodos favoritos caclulation. pero...
Lo que hace el trabajo.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X