1 votos

Cómo determinar si una celda/campo contiene un valor en la tabla de atributos de ArcGIS

He investigado un poco sobre este tema pero no encuentro la respuesta. Me pregunto si hay una manera de identificar si una celda / campo en la tabla de atributos de ArcGIS contiene un valor utilizando el cursor de búsqueda. Inicialmente, pensé que sería tan simple como esto:

arcpy.MakeFeatureLayer_management(node110, "node_layer12")
arcpy.SelectLayerByAttribute_management ("node_layer12", "NEW_SELECTION", query1)

rows = arcpy.SearchCursor("node_layer12")
for row in rows:
        link_id2 = row.getValue("DRN_link")

if link_id2 == "E*":
    print "YES"

Por desgracia, esto no funcionó. Sabía que si el campo que buscaba tenía un valor, empezaría por "E", así que pensé que un comodín podría funcionar. Obviamente, no funcionó. ¿Alguna idea?

Tenga en cuenta lo siguiente. Sólo tengo acceso a arcgis 10 por lo que no puede utilizar el arcpy.da.searchcursor.

4voto

alasdairg Puntos 1518

Su script actualmente sólo comprueba el último valor que obtiene en link_id2 . Para comprobar cada valor de link_id2 (y presumiblemente hacer alguna operación si coincide con la condición) incrustar la condicional dentro del bucle.

Puede utilizar la función python .startswith() función para buscar cadenas que empiecen por la letra "E":

for row in rows:
    link_id2 = row.getValue("DRN_link")
    if link_id2.startswith("E"):
        print "YES"

Si está comprobando si muchas (docenas o más) filas cumplen una condición determinada, puede contarlas:

counter = 0
for row in rows:
    link_id2 = row.getValue("DRN_link")
    if link_id2.startswith("E"):
        counter += 1
print counter

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