4 votos

No se puede guardar la capa seleccionada por atributo para ArcGIS Geoprocessing

Estoy en problemas usando el SelectLayerByAttribute() función para el geoprocesamiento de arcgis.

Tengo una capa y quiero seleccionar todo lo que coincida con un determinado atributo. Yo llame MakeFeatureLayer() para crear una capa, corro SelectLayerByAttribute() para seleccionar lo que desea y, a continuación, ejecutar CopyFeatures() para guardar la capa en la base de datos.

Sin embargo, después de la copyfeatures (), no se almacena nada y tengo las capas vacías.

Hay algo que me falta?

Estoy usando python y arcgisscripting módulo para el geoprocesamiento. Mi código de abajo:

 gp.MakeFeatureLayer_management(target_layer, "lyr") 
 gp.SelectLayerByAttribute_management("lyr", "NEW_SELECTION", "\"my_attribute\" = 5 " )

 # Write the selected features to a new featureclass
 gp.CopyFeatures_management("lyr", output)

2voto

mleykamp Puntos 491

Lo hice de esta manera:

Y funciona bien

1voto

Toby Allen Puntos 260

Parece que mi script funciona según lo previsto. No me di cuenta de que los campos en las consultas son minúsculas... Utilicé la caja incorrecta para el nombre del campo y ArcGIS no tira un error sobre ella.

Hice este supuesto pobres porque nuestros datos se sienta las bases de datos Oracle, que se configuran para ser entre mayúsculas y minúsculas.

1voto

null Puntos 183

Usted podría utilizar el gp.FeatureClasstoFeatureClass_conversion método. Le ahorrará a partir de la creación de una capa y seleccionando en él - usted acaba de establecer una cláusula where en la llamada al método.

Como para que dilema actual, comprobar su cláusula where - recuerde que el campo 'identificadores' puede ser diferente, si su una geodatabase personal - entre corchetes [] en lugar de comillas. Y si su campo es un campo de cadena de caracteres con un número en él, tendrás que poner comillas alrededor.

Usted también podría usar comillas simples para sus cadenas de python así que usted no tiene que salir de su comillas - que hace que se vea más bonito, pero no va a resolver su problema.

1voto

Michael Gorsuch Puntos 1760

lo tienes todo correcto, debería funcionar.

Si esto se ejecuta como una herramienta de secuencia de comandos, yo diría que revise su entorno de "medida"... pero ya que este es un script, sería virar estas 2 líneas al final de la secuencia de comandos para intentar determinar dónde empiezan 0 registros

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