2 votos

Reclasificación de características antes de exportar la página con datos

Necesito encontrar una forma de reclasificar/reactualizar la simbología de colores graduados entre la exportación de páginas con datos.

Antecedentes: He unido espacialmente Grupos de Bloques (BGs) a 1000 instalaciones (e ID de instalaciones) en un radio de 10 millas. Hay múltiples instancias de los mismos BGs porque están ubicados muy cerca de múltiples instalaciones.

Prefiero utilizar el método de clasificación de la desviación estándar. Actualmente, cuando las Data Driven Pages están activadas y clasifico los datos, los rangos de valores que se aplican son relevantes para lo que se muestra (esto es bueno). El problema surge cuando paso a la siguiente página y ésta no se recalcula, sino que sigue utilizando los rangos de valores de las BGs mostradas anteriormente.No puedo mostrarlas todas a la vez, porque las múltiples ocurrencias se solapan. Además, para una instalación concreta un BG puede representar un valor inferior mientras que para otra el mismo BG puede representar un valor mayor.

Exporto páginas con datos en un script de python muy básico. Una respuesta sería insertar un código que aplique la simbología de una capa diferente antes de exportar la página. Este proceso funciona manualmente en Arcmap: Aplicar simbología > refrescar > exportar página...etc. Tengo poca experiencia con python, y la penúltima línea que he añadido a continuación no lo hace (pero funciona en un script aparte).

Este es el python con el que estoy trabajando actualmente:

import arcpy
mxd = arcpy.mapping.MapDocument(r"E:\Templates_MXD\BU_5Mile.mxd")
export_path = r"C:\Users\sder\Desktop\Test\\"
field_name = "ID"
df = arcpy.mapping.ListDataFrames(mxd, "Business Analyst Map")[0]
updateLayer = arcpy.mapping.ListLayers(mxd, "BKtoBG", df)[0]
sourceLayer = arcpy.mapping.Layer(r"E:\Templates_Layer\BKtoBG.lyr")

for i in range(1, mxd.dataDrivenPages.pageCount + 1):
    mxd.dataDrivenPages.currentPageID = i
    row = mxd.dataDrivenPages.pageRow
    print row.getValue(field_name)
    arcpy.mapping.ExportToPDF(mxd, export_path + row.getValue(field_name) + ".pdf", resolution=200, image_quality="BETTER")
    arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer,True)
del mxd

1voto

Joan Puntos 6

Pude conseguir que esto funcionara con el python original en parte usando la reccomendación de Geobug sobre arcpy.mapping.UpdateLayer seguido de la inserción:

updateLayer.symbology.reclassify()

&

arcpy.RefreshActiveView()

Todavía no he vuelto a probar cuál de estos componentes es el que realmente hace el truco, pero colectivamente funciona. Existe la posibilidad de que la función de reclasificación por sí sola haya hecho el truco, pero hay muy poca documentación disponible que explique esto. Gracias por la ayuda, estoy muy contento de haber encontrado una forma de solucionar esto.

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