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.
Respuestas
¿Demasiados anuncios?
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))
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)