4 votos

Inserte el cursor para la primera fila en el conjunto de valores únicos arcpy

Realmente necesito algo de orientación sobre cómo crear una secuencia de comandos de python con arcpy a:

1) Buscar a través de una tabla de valores únicos en un campo.

2) Para la primera fila de cada una de las valueset, inserta la fila en una nueva tabla vacía.

He estado tratando de conseguir este trabajo con el da.SearchCursor y da.InsertCursor, pero realmente no puede conseguir 2) para trabajar..

La razón por la que quiero hacer esto es que tengo una tabla con dos campos; "wellbore_name" es el ID de pozos, "Unidades" se concatenan unidades geológicas específicas del bien. Hay varias filas para cada IDENTIFICADOR único, y quiero una salida de la tabla con tantas filas como Identificadores únicos. Dado que las unidades se concatenan sólo necesito una fila para cada ID.

enter image description here

Este es probablemente fácil para alguien con fluidez en los cursores, pero por desgracia no lo soy. Espero que hay alguien que me puede ayudar con esto :-)

5voto

Aaron Puntos 25882

Tomaría un enfoque diferente y usaría Eliminar idéntico (Gestión de datos) . La siguiente secuencia de comandos crea una copia de su tabla o FC y luego elimina las filas duplicadas en esa copia.

 import arcpy

table = r'C:\test\temp.gdb\table'
copy = r'C:\test\temp.gdb\table2'

# Create a copy of your table
arcpy.CopyFeatures_management(table, copy)

# Delete duplicate rows based on the field "test"
arcpy.DeleteIdentical_management(copy, "test")
 

3voto

jbchurchill Puntos 1637

Vamping en PolyGeo del comentario, creo que el Resumen de las Estadísticas herramienta de trabajo con facilidad. Si entiendo correctamente, usted sólo necesita una lista de valores únicos para las "Unidades" de campo. Puede configurar la herramienta como esta (ver la captura de pantalla) excepto que en lugar de utilizar el campo "Nombre", utilice "Unidades". [Asegúrese de agregar Wellbore_Name w/ stat tipo de "PRIMERA" como uno de sus estadísticas campos.] Obtendrá un error rojo círculo hasta que usted elija el tipo de estadística. Creo que la "PRIMERA" sería correcto aquí.

Aarón comentario es correcto así que he actualizado la captura de pantalla. Usted realmente necesita para utilizar las "Unidades", como el caso de campo y el uso de la Wellbore_Name con la estadística de tipo de Primera. Esto también es sólo va a dar una tabla no su característica de la clase (que es probablemente lo que usted quiere de todos modos).

enter image description here

2voto

RobW Puntos 121

Como se ha mencionado por otros varios usuarios de aquí. Utilizando la Búsqueda y la Inserción de los cursores puede no ser necesario, pero si por alguna razón te gustaría ver cómo se hace, la siguiente secuencia de comandos debe hacer todo lo que usted necesita. Usted necesitará los parámetros de configuración de la herramienta de secuencia de comandos. Voy a asumir ahora que ya sabes cómo hacerlo.

Parámetros:

  1. (0) Características De Entrada - Clase De Entidad
  2. (1) Ubicación De Salida - Área De Trabajo
  3. (2) Nombre De Salida De Cadena

Actualizado El Script:

import arcpy, os
from arcpy import env

arcpy.env.overwriteOutputs = True

inFC = arcpy.GetParameterAsText(0)
outLoc = arcpy.GetParameterAsText(1)
outName = arcpy.GetParameterAsText(2)

fieldList = ["WELLBORE_NAME", "Units"]

desc = arcpy.Describe(inFC)
geoType = desc.shapeType.upper()
spatRef = arcpy.Describe(inFC).spatialReference

arcpy.CreateTable_management(outLoc, str(outName), inFC)  

newFeature = os.path.join(outLoc, str(outName))

dataArray = []

insertCursor = arcpy.da.InsertCursor(newFeature, (fieldList))

with arcpy.da.SearchCursor(inFC, (fieldList)) as cursor:
    for row in cursor:
        if (row[0] not in dataArray):                          
            dataArray.append(row[0])
            insertCursor.insertRow((row[0], row[1]))


    del row
del cursor

Esto puede ser personalizado para satisfacer las necesidades de otros conjuntos de datos añadiendo los campos correspondientes y referencias de fila.

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