7 votos

Ordenar una tabla en múltiples campos con ArcPy

Estoy tratando de ordenar una tabla basada en tres campos con ArcPy (que debería ser sólo una línea de código), y tuve una "herramienta no es la licencia de error". Acabo de ver que la clasificación con múltiples campos de parámetros es un ArcInfo característica única. He ArcView (pronto ArcEditor).

Alguna idea de cómo podría este código para evitar esa limitación con ArcPy?

Gracias!

6voto

Aissen Puntos 131

Se podría crear una nueva tabla vacía y utilizar los cursores para ordenar los datos y inserte las filas de la tabla nueva (este código no ha sido probado):

import acrpy,os

inTable = r'c:\workspace\path\in_table.dbf'
outPath = r'c:\workspace\path'
sortedTableName = r'sorted_table.dbf'
arcpy.env.workspace = outPath
arcpy.overwriteOutput = True

#--check if output table exists, if not, create it
if not os.exists(os.path.join(outPath,sortedTableName)):
    arcpy.CreateTable_management(outPath,sortedTableName)

    #--make a list of all fields in input table
    flist = arcpy.ListFields(inTable)

    #--add fields to output table
    for f in flist:
        arcpy.AddField_management(sortedTableName,f.name,f.type,f.precision,f.scale,f.length,f.aliasName)

#--if the table does exist, delete all rows so we can start fresh
else:
    try:
        arcpy.DeleteRows_management(os.path.join(outPath,sortedTableName))
    except:
        #--no rows to delete
        pass

#--create an insert cursor that will append data to output table
irows= arcpy.InsertCursor(os.path.join(outPath,sortedTableName))

#--create a search cursor to sort and then read data from input table
rows = arcpy.SearchCursor(inTable,'#','#','#','SORT_FIELD1 A;
                            SORT_FIELD2 D;
                            SORT_FIELD3 A')
for row in rows:
    #--create a new row object in the output table
    newrow = irows.newRow()
    #--populate each field
    for f in flist:
        newrow.setValue(f.name,row.getValue(f.name))
    #--insert new row
    irows.inertRow(newrow)

del irows,rows

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