1 votos

Error de selección por atributo - ArcPy

Tengo una tabla de puntos que se parece a esto:

year,   latitude, longitude
2018,   42.02,    -87.68
2018,   41.91,    -87.78
2018,   41.64,    -87.68
2017,   41.63,    -87.56
2017,   41.89,    -87.67
2017,   41.67,    -87.80

Que he utilizado Import XY para importar desde CSV como un conjunto de puntos.

Ahora quiero realizar alguna operación sobre él, pero haciendo un bucle sobre el year atributo.

Hasta ahora tengo algo como esto:

import arcpy
imported_points = "imported_points.shp"

for yr in (2017, 2018):
  new_file = "poly_" + yr + ".shp"
  arcpy.SelectLayerByAttribute_management(imported_points , 
                                          "NEW_SELECTION",
                                          "[year] = " + yr)
  # Some operation, using this as an example          
  arcpy.DirectionalDistribution_stats(imported_points , new_file, "2_STANDARD_DEVIATIONS", "#", "#")

Sin embargo, cuando lo intento obtengo el siguiente error:

ExecuteError: Failed to execute. Parameters are not valid.
The value cannot be a feature class
ERROR 000840: The value is not a Raster Layer.
ERROR 000840: The value is not a Mosaic Layer.
Failed to execute (SelectLayerByAttribute).

¿Qué significa esto? ¿Cuál es la mejor manera de realizar una operación de este tipo?

-2voto

Tom Puntos 1

En ArcGIS no se puede utilizar directamente el archivo ".shp" para SelectLayerByAttribute_management análisis. Primero debes hacerlo capa. Trate de ejecutar el código después de modificar como a continuación.

import arcpy

path = "imported_points.shp"
mxd = arcpy.mapping.MapDocument("CURRENT")
df = mxd.activeDataFrame
layer = arcpy.mapping.Layer(path)
arcpy.mapping.AddLayer(df, layer)
arcpy.RefreshActiveView()
arcpy.RefreshTOC()
years = (2017,2018)
arcpy.SelectLayerByAttribute_management(layer.name,"NEW_SELECTION",""" \"year\" IN {} """.format(str(years)))

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