Más

¿Obteniendo la primera y la segunda fila con ArcPy searchcursor?

¿Obteniendo la primera y la segunda fila con ArcPy searchcursor?


Tengo un shapefile con solo 4 filas. Ya pude filtrarlo, así que solo me quedan 2. Necesito que estén ordenados por el campo 'longitud', luego tome la primera y la segunda fila para guardar en archivos individuales. Aquí está el código para ordenar:

import arcpy fc = 'C:  Users  test.shp' fields = ['length', 'FID'] expression = arcpy.AddFieldDelimiters (fc, "length") + "> 1000" para filas ordenadas (arcpy .da.SearchCursor (fc, fields,)): print ('{0}, {1}'. formato (fila [0], fila [1]))

Para guardar en el nuevo archivo:

arcpy.FeatureClassToFeatureClass_conversion (?, outLocation, outFeatureClass,)

¿Cómo puedo hacer que el cursor de búsqueda muestre primero solo la fila de valor más bajo y luego la más alta? (el orden no importa)

¿Cómo puedo seleccionar la fila número 1 y luego la fila número 2?


No indica cuál es su nivel de licencia; esto siempre es importante ya que dicta la solución. Dicho esto, considere usar la herramienta Ordenar (que requiere una licencia avanzada). Puede encontrar más información aquí.


Tendría el objetivo final de crear una consulta SQL con los OID de las dos funciones.

Cree una lista ordenada de tuplas de longitudes y oids a partir de sus características. Extraiga los dos primeros oids de su lista ordenada y cree un sql a partir de los oids. Luego puede aplicar el sql cuando copie sus características.

import arcpy fc = 'C:  Users  test.shp' expression = arcpy.AddFieldDelimiters (fc, "length") + "> 1000" # lista ordenada de tuplas de longitud y oid lis = sorted ([(length, oid) para longitud, oid en arcpy.da.SearchCursor (fc, ["longitud", "OID @"], expresión)]) #obtener los dos primeros oids twoOids = [str (oid) para longitud, oid en lis] [ : 2] #sql expresión oidStr = "," .join (twoOids) oidFld = arcpy.Describe (fc) .OIDFieldName delimOidFld = arcpy.AddFieldDelimiters (fc, oidFld) sql = "{0} IN ({1})". format (delimOidFld, oidStr) # exportar con sql arcpy.FeatureClassToFeatureClass_conversion (fc, outLocation, outFeatureClass, sql)

Creo que está preguntando cómo seleccionar solo el primer y segundo registro de un cursor de búsqueda.

Estuve investigando esta misma actividad recientemente y encontré varias opciones, todas usando variaciones de la función "siguiente", según el tipo de cursor (arcpy.SearchCursor vs. arcpy.da.SearchCursor).

Quizás las personas más conocedoras de ArcPy y Python podrán explicar más.

referencias:

  • http://forums.esri.com/Thread.asp?c=93&f=1729&t=129511

  • ¿Cómo obtener los valores de la última fila en la tabla con ArcPy / SearchCursor?

retazo:

para la fila en el cursorA: #row = next (cursorA) # obtener la primera opción de registro 1 #row = cursorA.next () # obtener la primera opción de registro 2 next (cursorA) # obtener la primera opción de registro 3