4 votos

Cómo crear una lista de unión espacial de la tabla de uso de ArcGIS Desktop y ArcPy?

He realizado una unión espacial en algunos datos y ahora me gustaría tomar los datos y crear una lista. Estoy tratando de hacer esto de forma dinámica, de modo que pueda ser fácilmente repetible a través de una secuencia de comandos o modelo.

Tengo dos campos en los datos de mi que me importa: Nombre de la Estación y el Número de Página. El objetivo de mi proyecto es llevar una 632 página mapbook y se divide en pequeños libros basados en el Nombre de la Estación de Límite. Exportar a pdf sólo que las páginas que son relevantes para cada estación.

Mi espacial de unirse a la mesa me ha dado One_To_Many lista de cada página y en qué estación de límite se cae dentro.

Ahora me gustaría crear una lista que es algo así como:

Station1
Pages: 1,2,3,4,5,6...

Station2
Pages: 8,9,10,11,12...

y así sucesivamente.

Por lo que vale la pena estoy usando 9.3.1 y la maplogic extensión para el mapbooks.

2voto

Cocoro Cara Puntos 21

Terminé la creación de una secuencia de comandos de python con la importante ayuda de la ESRI en el Foro de Python. Se utiliza SearchCursor y InsertCursor a exploración a través de la mesa y colocar los resultados en una tabla nueva, uniéndose a ellos como se describe. La nueva tabla tiene que ser creado manualmente antes de ejecutar la secuencia de comandos.

# Import the system modules
import os
import arcpy

# Set the parameters
table = r"path\to\source\table" # source_table
new_table = r"table.dbf" # new table name + extension only
tempTable = r"\\in_memory\temp_table"
outPath = r"path\to\output\location" # path to output location on disk
keyField = 'NAME'
valField = 'Pg_Number'

# Create a table dictionary of the keyfields outlined in the parameters
tableDict = {}
arcpy.MakeTableView_management(table, tempTable)
with arcpy.da.SearchCursor(table, [keyField, valField]) as cursor:
    for row in cursor:
        tableDict.setdefault(row[0], []).append(row[1])

# Export fields retrieved with SearchCursor into new table and join
insertCursor = arcpy.da.InsertCursor(os.path.join(outPath, new_table), [keyField, valField])
for key, val in tableDict.iteritems():
    insertCursor.insertRow((key, ', '.join(str(item) for item in val)))

# Delete the tempTable
arcpy.Delete_management(r"\\in_memory\temp_table")
print 'The index has been created'

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