6 votos

¿Cómo refrescar la pantalla de ArcMap usando ArcPy?

Estaba tratando de replicar un Agente analista de RePast simulación usando sólo Python y Arcpy. El guión era sobre la expansión urbana. El guión sólo cambia los valores de una columna en un archivo de forma. La simbología de ArcMap sólo codifica con colores las parcelas del mapa en base a los valores de la mencionada columna. El guión sólo necesita una forma de refrescar/recargar la pantalla para cada paso (cuando los valores de la columna son cambiados) de la simulación para mostrar al usuario los cambios.

Probé el RefreshActiveView de Arcpy pero no funciona. ¿Hay alguna forma de hacerlo usando Arcpy? ¿O tengo que usar ArcObjects para esto? Gracias de antemano.

7voto

JoelB Puntos 84

El comando RefreshActiveView debería funcionar para esto, hasta donde yo sé. Unas cuantas preguntas rápidas que podrían ayudar a solucionar el problema:

¿Podría publicar un fragmento de su .py para ver qué funciones se están ejecutando para que sepamos qué tipo de trabajo se está realizando que está cambiando los valores; esto podría tener un efecto sobre por qué no se está actualizando. ¿Está buscando que la simbología se actualice debido a los nuevos valores en la tabla?

ArcObjects también podría ser utilizado en este escenario, pero prefiero no mezclar Objetos y Python si es posible porque me ha causado algunos problemas en el pasado llamando a uno desde el otro.

0 votos

Todavía estoy buscando mi antiguo código. Usé UpdateCursor y SearchCursor para editar los valores de la columna. Cuando cargo el script desde la consola de Python, se bloquea. Terminé usando arcgisscripting y ArcGIS 9.3. Cuando lo ejecuto por separado pero con ArcMap abierto, se ejecuta pero la visualización en ArcMap no se actualiza/recarga.

4voto

user2013 Puntos 2301

Nunca he ejecutado un cursor a través de arcpy en una instancia de ArcMap en ejecución como mencionas en el comentario a la respuesta de MLowry, pero me atrevería a decir que si simplemente quieres refrescar la pantalla, podrías realizar una acción utilizando el comando módulo de mapeo . Por ejemplo, una vez creada una referencia al marco de datos en cuestión, podría cambiar la escala a un valor determinado, lo que debería desencadenar un redibujado de lo que esté en esa vista activa (marco de datos). Alternativamente, usar el código para cambiar a Diseño de Página y volver a la Vista de Datos también podría servir. Es un poco complicado, pero podría funcionar para usted.

0 votos

No he utilizado el módulo de mapeo. Gracias :D Lo probaré en cuanto llegue al laboratorio.

1 votos

Te va a encantar el módulo de mapeo.

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