Processing math: 100%

3 votos

Llamada a una fila específica mediante los cursores de búsqueda/actualización de ArcPy

Al trabajar con cursores de búsqueda y actualización, ¿cómo puedo llamar a una fila concreta?

En este ejemplo:

import arcpy, os

# I want to find a row where the FID is 10
# print value field in the row where FID is 10

fc = 'c:\example.shp'
fields = ['Value']
with arcpy.da.SearchCursor(fc, fields) as cursor:
    for row in cursor:
        print(u'Row with FID = 10 has value {0}'.format(row[0])) 

Sin embargo, cuando se utiliza el código anterior, por supuesto que imprime todos los valores, pero no estoy muy seguro de cuál sería la forma más fácil de configurar el cursor para que sólo imprima la fila FID= 10.

En este ejemplo, estoy tratando de reemplazar el valor en la fila donde FID es 10 de donde Valor es 5 a Valor es 10

fc = 'example.shp'
fields = ['Value']
cursor= arcpy.da.UpdateCursor(fc,fields)
try:
    for fid120 in cursor:
        row[0] = '10'
        row[1] = row[1].title()
        cursor.updateRow(row)
        print 'Row with FID = {0} has been updated to 25: {1}'.format(row[0], row[1])

    del cursor
except:
    print 'help'
del cursor

Sin embargo, de nuevo, me quedo atascado con la forma de empezar en llamar a la fila específica para actualizarlo. Una cosa que he intentado en vano es el establecimiento de una variable igual a la FID que quiero llamar, y la creación de una sentencia if similar a x = 10 'si fila[0] = x', pero que no parece funcionar tan bien.

8voto

UnkwnTech Puntos 21942

En comentado por @hornbydd intente utilizar una cláusula where en su cursor.

Por ejemplo:

import arcpy

fc = 'c:\example.shp'
fields = ['Value']
where_clause = "FID = 10"
with arcpy.da.SearchCursor(fc, fields, where_clause) as cursor:
    for row in cursor:
        print(u'Row with {0} has value {1}'.format(where_clause,row[0]))

6voto

Anton8000 Puntos 165

La pregunta ha sido respondida, esto es sólo otra manera que es útil si necesita recuperar muchos valores. Cargue todos sus datos en un diccionario:

import arcpy
fields = ['FID','BK']
fc = r'C:\GIS\data\indexrutor\index_5km.shp'
datadict = {key:value for key, value in arcpy.da.SearchCursor(fc, fields)}

datadict[10]
u'743_47_00'
datadict[1]
u'743_42_05'
datadict[0]
u'743_42_00'

enter image description here

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