2 votos

Dividir la clase de características en función del número de registros arcpy

Estoy buscando una manera de dividir una clase de características en múltiples clases de características basadas en el número de registros, probablemente usando python. Por ejemplo, los primeros 100, los siguientes 100, etc. Hasta ahora sólo he visto opciones para dividir por atributos.

6voto

Gavin Schulz Puntos 592

El siguiente código dividirá las características en grupos de 100 (o el valor establecido en outputNum ) y luego copiarlos en clases de características individuales.

import arcpy

outputNum = 100
outputFCName = "OutputFC"

def listSplit(myList, n):
    for i in xrange(0, len(myList), n):
        yield myList[i:i + n]

arcpy.env.workspace = r"c:\gis\se\gisse.gdb"
lyr = arcpy.mapping.Layer("RandomPoints")
arcpy.SelectLayerByAttribute_management(lyr, "CLEAR_SELECTION")
fList = list()

with arcpy.da.SearchCursor(lyr, "OID@") as cursor:
    for row in cursor:
        fList.append(row[0])

listGroup = listSplit(fList, outputNum)

for x in listGroup:
    lyr.setSelectionSet("NEW", x)
    arcpy.CopyFeatures_management(lyr, arcpy.CreateUniqueName(outputFCName))

4voto

Frank Lowney Puntos 11

Como mencionó @klewis, puede utilizar la función de división por atributos:

Esri proporciona el siguiente código de ejemplo que podría utilizar como se menciona:

# Name: SplitByAttributes.py  
# Description: Use the SplitByAttributes tool to split a feature class by 
# unique values.

# Import required modules
import arcpy

#Set local variables  
in_feature_class = 'c:/data/base.gdb/ecology'  
target_workspace = 'c:/data/output.gdb'  
fields = ['REGION', 'ECO_CODE']  

arcpy.SplitByAttributes_analysis(in_feature_class, target_workspace, fields)

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