Más

¡Mostrando el progreso en la aplicación ArcGIS Engine!


Me gustaría agregar un indicador de progreso a nuestra aplicación ArcGIS Engine 10. Como una barra de progreso en la barra de estado para mostrar cuando MapControl está ocupado obteniendo o dibujando el mapa. He estado tratando de encontrar recursos en la documentación sobre cómo hacer esto, pero todos los recursos que encuentro apuntan a MxStatusBar que está solo en ArcGIS Desktop. ¿Alguien sabe qué eventos debería usar para crear mi propio indicador de progreso?

Actualización: es una aplicación ArcGIS Engine independiente. Construido en VB.Net usando WinForms. Hemos creado la animación gráfica para nuestro indicador de ocupado. Para que podamos iniciar y detener la animación cuando haya progreso. Esto fue creado usando un diálogo que se ejecuta en su propio hilo porque MapControl bloquea el rediseño del formulario durante su fase de dibujo. Hemos intentado conectar el indicador de ocupado a los eventos AxMapControl1_OnBeforeScreenDraw y AxMapControl1_OnAfterScreenDraw. Pero estos eventos se lanzan incluso cuando se vuelve a pintar el mapa, por ejemplo. cuando se arrastra un cuadro de diálogo sobre el mapa.

También hemos intentado usar manualmente IMapControlEvents2 y da el mismo resultado.

Hemos intentado agregar el IDisplayEvent, pero solo se activa al iniciar, no cuando hacemos una panorámica y hacemos zoom en el mapa. Aquí hay un código que usé para probar los eventos con:

'Declaraciones: Privada m_ActiveViewEventsAfterDraw Como ESRI.ArcGIS.Carto.IActiveViewEvents_AfterDrawEventHandler privada m_DisplayEventsDisplayStarted Como ESRI.ArcGIS.Display.IDisplayEvents_DisplayStartedEventHandler privada m_DisplayEventsDisplayFinished Como ESRI.ArcGIS.Display.IDisplayEvents_DisplayFinishedEventHandler privada m_MapControlEventsOnAfterScreenDraw Como ESRI.ArcGIS.Controls.IMapControlEvents2_OnAfterScreenDrawEventHandler privada m_MapControlEventsOnBeforeScreenDraw Como ESRI.ArcGIS. Controls.IMapControlEvents2_OnBeforeScreenDrawEventHandler 'Form_Load Dim MapControl Como IMapControl4 = DirectCast (axMapControl1.Object, IMapControl4) Dim mapa como IMap = DirectCast (axMapControl1.ActiveView, IMAP) m_ActiveViewEventsAfterDraw = Nueva ESRI.ArcGIS.Carto.IActiveViewEvents_AfterDrawEventHandler (AddressOf OnActiveViewEventsAfterDraw) AddHandler CType (mapa, ESRI.ArcGIS.Carto.IActiveViewEvents_Event) .AfterDraw, m_ActiveViewEventsAfterDraw m_DisplayEventsDisplayStarted = Nuevo ESRI.ArcGIS.Display.I DisplayEvents_DisplayStartedEventHandler (AddressOf OnDisplayStarted) AddHandler CType (axMapControl1.ActiveView.ScreenDisplay, ESRI.ArcGIS.Display.IDisplayEvents_Event) .DisplayStarted, m_DisplayEventsDisplayStarted m_DisplayEventsDisplayFinished = Nueva ESRI.ArcGIS.Display.IDisplayEvents_DisplayFinishedEventHandler (AddressOf OnDisplayFinished) AddHandler CType (axMapControl1.ActiveView.ScreenDisplay, ESRI .ArcGIS.Display.IDisplayEvents_Event) .DisplayFinished, m_DisplayEventsDisplayFinished m_MapControlEventsOnAfterScreenDraw = Nueva ESRI.ArcGIS.Controls.IMapControlEvents2_OnAfterScreenDrawEventHandler (AddressOf OnAfterScreenDraw) AddHandler CType (axMapControl1.Object, ESRI.ArcGIS.Controls.IMapControlEvents2_Event) .OnAfterScreenDraw, m_MapControlEventsOnAfterScreenDraw m_MapControlEventsOnBeforeScreenDraw = Nueva ESRI.ArcGIS .Controls.IMapControlEvents2_OnBeforeScreenDrawEventHandler (AddressOf OnBeforeScreenDraw) AddHandler CType (axMapControl1.Object, ESRI.ArcGIS.Controls.IMapControlEvents2_Event ) .OnBeforeScreenDraw, m_MapControlEventsOnBeforeScreenDraw 'Métodos Private Sub OnAfterScreenDraw (ByVal hDc As Integer) Console.WriteLine ("OnAfterScreenDraw") Fin Sub Private Sub OnBeforeScreenDraw (ByVal hDc Asset EndView) Consola. Mostrar como ESRI.ArcGIS.Display.IDisplay, ByVal fase Como ESRI.ArcGIS.Carto.esriViewDrawPhase) Console.WriteLine ("AfterDraw") Finalizar Sub Private IntDisplayStarted como Integer Private Sub OnDisplayStarted (ByVal Display como IDisplay) IntDisplayStarted = IntDisplayStarted = IntDisplayStarted = 1 .WriteLine ("OnDisplayStarted" & IntDisplayStarted) End Sub Private IntDisplayFinished As Integer Private Sub OnDisplayFinished (ByVal Display as IDisplay) IntDisplayFinished = IntDisplayFinished + 1 Console.WriteLine ("OnDisplayFinished" & IntDisplayFinished) End Sub

También intenté usar ILayerStatus implementando la devolución de llamada IStepProgressor en MapServerLayer, pero también fue una decepción, se activó después de que la imagen se haya obtenido del servidor.

¿Alguien sabe si hay un evento que podemos usar que solo se activa cuando el mapa obtiene datos de su fuente de datos?


El siguiente código me funciona. Si carga un mapa nuevo, deberá volver a cablear sus eventos. Tal vez intente comenzar a animar cuando IDisplayEvents.Start se active (y IViewRefresh.Drawing sea cierto). Luego, deje de animar cuando IActiveViewEvents.AfterDraw se active con drawPhase == esriViewDrawPhase.esriViewForeground.

privado IDisplayEvents_Event m_dispevt; IActiveViewEvents_Event privado m_avEvt; private int m_lastTick; WireEvents privados void (mapa IMap) {Debug.Print ("cableado"); m_dispevt = ((IActiveView) mapa) .ScreenDisplay como IDisplayEvents_Event; m_dispevt.DisplayStarted + = nuevo IDisplayEvents_DisplayStartedEventHandler (MainForm_DisplayStarted); m_dispevt.DisplayFinished + = nuevo IDisplayEvents_DisplayFinishedEventHandler (MainForm_DisplayFinished); m_dispevt.DisplayInvalidated + = nuevo IDisplayEvents_DisplayInvalidatedEventHandler (MainForm_DisplayInvalidated); m_dispevt.DisplayScrolled + = nuevo IDisplayEvents_DisplayScrolledEventHandler (MainForm_DisplayScrolled); m_avEvt = (IActiveViewEvents_Event) mapa; m_avEvt.AfterDraw + = nuevo IActiveViewEvents_AfterDrawEventHandler (m_avEvt_AfterDraw); m_avEvt.AfterItemDraw + = nuevo IActiveViewEvents_AfterItemDrawEventHandler (m_avEvt_AfterItemDraw); } void m_avEvt_AfterItemDraw (índice corto, pantalla IDisplay, fase esriDrawPhase) {Debug.Print ("afteritemdraw {0} {1}", índice, fase); } void m_avEvt_AfterDraw (IDisplay Display, fase esriViewDrawPhase) {if (fase == esriViewDrawPhase.esriViewForeground) Debug.Print ("primer plano terminado afterdraw {0} {1} msecs", fase, Environment.TickCount - m_lastTick); if (fase == esriViewDrawPhase.esriViewBackground) m_lastTick = Environment.TickCount; } void MainForm_DisplayScrolled (IDisplay Display, int deltaX, int deltaY) {Debug.Print ("scrolled"); } void MainForm_DisplayInvalidated (IDisplay Display, ESRI.ArcGIS.Geometry.IEnvelope rect, bool erase, short cacheID) {Debug.Print ("invalidado"); } void MainForm_DisplayFinished (IDisplay Display) {Debug.Print ("terminado"); } void MainForm_DisplayStarted (IDisplay Display) {Debug.Print ("iniciado {0}", ((IViewRefresh) axMapControl1.Map) .Drawing); }

Si su código de ArcEngine se ejecuta dentro de una aplicación de ArcGIS Desktop, entonces laMxStatusBar(o laIStatusBarinterfaz) parece apropiado. En ese caso, consulte IStatusBar.ProgressBar. (ArcEngine también ofrece cuadros de diálogo de progreso: IProgressDialog2 - pero esa es una ventana de diálogo completa y aparentemente no es lo que está buscando).

Si su código se ejecuta fuera de cualquier aplicación de ArcGIS, es decir. tiene su propia GUI, lo más probable es que tenga que verificar la funcionalidad correspondiente con el marco de GUI de su plataforma (Windows Forms o WPF para .NET; MFC, wxWidgets para C ++, Swing / AWT / lo que sea para Java, etc.).

Para las GUI de Windows Forms, eche un vistazo a la System.Windows.Forms.StatusBarclase.


Terminé con este código:

'El manejador de eventos Private m_ActiveViewEventsAfterDraw As ESRI.ArcGIS.Carto.IActiveViewEvents_AfterDrawEventHandler' Es necesario para evitar que el "objeto COM que se ha separado de su RCW subyacente no se puede usar" se produzca Private m_ActiveViewEvents As ESRI.ArcGIS Private.Caverto.IAEvent. Private Sub OnActiveViewEventsAfterDraw (ByVal Display as ESRI.ArcGIS.Display.IDisplay, ByVal phase As ESRI.ArcGIS.Carto.esriViewDrawPhase) 'Ocurre después de que se dibuja la capa If phase = esriViewDrawPhase.esriViewGeography Then Console.WriteLinedraw } {1} msecs ", fase, Environment.TickCount - m_lastTick) End If 'Ocurre antes de que se solicite la capa If phase = esriViewDrawPhase.esriViewBackground Then m_lastTick = Environment.TickCount Console.WriteLine (" segundo plano terminado ") End If End Sub' conectar el controlador de eventos Private Sub WireEventHandler () m_ActiveViewEvents = CType (CType (axMapControl1.Object, IMapControl2) .ActiveView.FocusMap, ESRI.Arc GIS.Carto.IActiveViewEvents_Event) m_ActiveViewEventsAfterDraw = Nuevo ESRI.ArcGIS.Carto.IActiveViewEvents_AfterDrawEventHandler (AddressOf OnActiveViewEventsAfterDraw) AddHandler m_ActiveViewEvents.AfterDraw End, m_ActiveViewEvents.AfterDrawEvents

Para iniciar el indicador de progreso en esriViewDrawPhase.esriViewBackground y detenerlo en esriViewDrawPhase.esriViewGeography parece funcionar. Referencia para el orden de dibujo y un problema de COM que obtuve al probar los controladores de eventos "El objeto COM que se ha separado de su RCW subyacente no se puede usar"


Cursos Living Lab

Muchas clases en la Universidad de Richmond incorporan un componente de laboratorio viviente. Estos cursos permiten a los estudiantes utilizar datos del mundo real para aprender sobre las muchas formas en que la sostenibilidad puede afectar a las personas y al medio ambiente en el campus y en el área metropolitana de Richmond. Al involucrar a los estudiantes en la investigación práctica, estas clases preparan a las arañas para abordar problemas complicados y desarrollar soluciones innovadoras una vez que abandonan el campus. A continuación se muestra una muestra de las clases de laboratorio en vivo realizadas recientemente.

¿Ha enseñado o participado en un curso relacionado con la sostenibilidad con un componente de laboratorio viviente que no figura aquí? Háganoslo saber en [email protected]

Los estudiantes en el otoño de 2016 y el otoño de 2017 del Dr. David Salisbury & # 8220Dimensiones globales del desarrollo sostenible & # 8221 crearon el Proyecto Riverfront UR: una propuesta para crear un espacio educativo, de investigación y recreativo en el río James dentro de 1 milla del campus. Este concluyó el viaje en bicicleta de aprendizaje experiencial por Gambles Mill Corridor y cruzando el río James.

Los estudiantes de la clase de Estadísticas para Negocios y Economía del Dr. Litteral trabajaron con la Oficina de Sostenibilidad y el desarrollador solar Secure Futures para analizar la eficiencia del panel solar de 205kW en la parte superior del Centro de Recreación Weinstein en el campus. Los estudiantes trabajaron para determinar la efectividad de las diferentes configuraciones de los paneles en la matriz y formularon recomendaciones basadas en sus hallazgos.

En el Dr. Salisbury & # 8217s spring 2017 Environmental Studies Senior Seminar y Geography Capstone, un grupo de estudiantes desarrolló una propuesta para un biodigestor de desechos como parte de su proyecto semestral.

Durante el Seminario Senior de Estudios Ambientales de la primavera de 2017 del Dr. Salisbury y Geografía Capstone, un grupo de estudiantes desarrolló una propuesta para incorporar el comedor sin bandeja en el comedor de la universidad # 8217 como resultado de su proyecto final de un semestre. Otro grupo enfocado produjo un documento que analiza la seguridad alimentaria.

En el curso de introducción a los estudios ambientales de otoño de 2017 de Emily Boone, los estudiantes tuvieron que completar un proyecto centrado en explorar un problema de sostenibilidad en la comunidad de Richmond que se conectaba con la Universidad. Un grupo de estudiantes decidió centrarse en el transporte en la ciudad de Richmond y, como resultado, creó un video que muestra a los estudiantes cómo usar el transporte público para ir del campus al centro de Richmond, así como un análisis de la facilidad de uso del sistema de transporte. Ver el vídeo.

Durante el curso de Elizabeth Ransom titulado "Desigualdades en el sistema alimentario global", los estudiantes analizaron la construcción socioeconómica, política y cultural de los sistemas alimentarios. Los temas incluyeron instituciones globales que impactan el flujo de alimentos en todo el mundo, las relaciones regionales relacionadas con el comercio de alimentos y las relaciones locales entre productores, minoristas y consumidores. Los miembros de la clase trabajaron con Shalom Farms, un defensor de la agricultura de la comunidad local y el personal de UR Dining Services para evaluar las opciones de comidas sostenibles en el campus.

Los estudiantes en el curso del Seminario Senior de Estudios Ambientales del Dr. Peter Smallwood apoyaron el desarrollo de una encuesta en todo el campus para solicitar información para el primer Plan de Sustentabilidad de UR, desarrollaron propuestas para su inclusión en el plan que promoverían la sustentabilidad en la universidad y mejorarían el puntaje STARS de UR, y proporcionó breves resúmenes de los programas de sostenibilidad de ocho de las diez universidades de artes liberales más sostenibles del país. Esto se hizo en conjunto con los esfuerzos de evaluación comparativa y participación de la Oficina para la Sostenibilidad. Los estudiantes también proporcionaron comentarios y consejos sobre los primeros borradores del plan.

En las clases de la primavera de 2018 y 2019 de las dimensiones geográficas del desarrollo humano del Dr. David Salisbury & # 8217, los estudiantes crearon ArcGIS Online Storymaps centrados en rastrear un producto del campus desde el punto de origen hasta el punto de consumo con todos los impactos ambientales y sociales durante el proceso y el transporte.

Como parte de un esfuerzo de conservación internacional para proteger a la población de monarcas en declive, los estudiantes de la Universidad de Richmond en el curso de Introducción a la Ecología de otoño de 2018 de Jennifer Sevin criaron, marcaron y liberaron mariposas monarca. Esta clase también trabajó con niños de escuelas primarias locales en educación sobre polinizadores. Lee mas.

Durante el curso de Sostenibilidad Global del Dr. David Salisbury, un grupo de estudiantes comprometió su proyecto de un semestre a explorar la viabilidad de agregar casas pequeñas como una opción de alojamiento en el campus para permitir que los estudiantes vivan un estilo de vida más sostenible. El producto final incluyó una presentación de una propuesta completamente investigada para incluir pequeñas casas en el campus. Un estudiante presentó los hallazgos en la reunión anual de la Asociación Estadounidense de Geógrafos en la primavera de 2019.

En el curso de Introducción a los estudios ambientales de la Dra. Mary Finley-Brook, los estudiantes analizaron la capacidad de la energía solar comunitaria para abordar el cambio climático y los problemas de justicia solar en Richmond y otras áreas de Virginia. La clase analizó las fortalezas, oportunidades, debilidades y amenazas planteadas por los proyectos solares a varias escalas (regional, nacional, local) en proyectos de investigación de clase y presentó los resultados a los miembros de la comunidad local. Más información. & # 160

Durante el curso de introducción a los estudios ambientales de otoño de 2018 de la Dra. Mary Finley-Brook, los estudiantes realizaron una investigación para completar un análisis del ciclo de vida y un análisis FODA de la reciente inversión de la Universidad en un proyecto de energía renovable a gran escala. El análisis incluye información sobre financiamiento y presupuestos, empleo generado por el proyecto y los impactos ambientales y sociales de: insumos / materias primas, procesamiento y fabricación, distribución de materiales, fases de construcción, disposición, las instituciones involucradas en el proyecto.

De acuerdo con el objetivo de la Universidad de fomentar el conocimiento y el bienestar personal, cada estudiante de pregrado completará una serie de bienestar de cuatro partes antes de graduarse. La clase de Sostenibilidad Personal ayuda a los estudiantes a desarrollar una comprensión de su impacto personal en el medio ambiente y cómo las decisiones que toman todos los días pueden reducir su impacto. Los estudiantes aprenden sobre la Universidad cómo la huella ambiental y su propio consumo de recursos afectan la salud planetaria y personal. Se exploran actividades para apoyar el bienestar de los estudiantes y los ecosistemas.

La Universidad de Richmond es parte de un proyecto nacional para comprender mejor los efectos de la urbanización en las tortugas. Desde 2012, estudiantes de biología impartidos por Peter Smallwood, Kristine Grayson y Jennifer Sevin se han adentrado en el lago Westhampton para rastrear la población de diferentes especies de tortugas que viven allí. En 2019, los estudiantes capturaron tortugas mordedoras, tortugas almizcleras, tortugas pintadas y deslizadores de orejas rojas. La actividad también les brinda a los estudiantes la oportunidad de aprender sobre los hábitats de las tortugas, los rasgos dimórficos sexuales y las historias de vida. & # 160Todas las tortugas son devueltas al lago después de ser contadas.

Durante su curso de verano, los estudiantes de Biología Marina de la Bahía de Chesapeake y la Costa de Virginia de Emily Boone pasan dos semanas aprendiendo en la Costa Este. Parte de la clase implica ser voluntario de The Nature Conservancy para apoyar el proyecto de restauración de pastos marinos más grande y exitoso del mundo. Los estudiantes recolectan brotes de pastos marinos para llevarlos a tanques de retención, donde sus semillas madurarán antes de ser plantadas en bahías costeras en el otoño. El pasto marino sirve como un hábitat importante para las vieiras. & # 160

En la primavera de 2016, la Universidad de Richmond comenzó a asociarse con J.R. Tucker High School y James River Association Leadership Academy para manejar especies invasoras a lo largo del río James en Huguenot Flatwater. Desde entonces, los cursos impartidos por Todd Lookingbill, Carrie Wu y Stephanie Spera han ayudado a gestionar y rastrear especies invasoras en el sitio. Más de 200 estudiantes han participado en la remoción de especies invasoras en el área, y varios estudiantes están participando actualmente en dos proyectos de investigación sobre remoción de especies invasoras que involucrarán a Huguenot Flatwater. Un enfoque principal en Huguenot Flatwater ha sido la eliminación de arbustos no nativos como el ligustro chino y la madreselva. Para realizar un mejor seguimiento del progreso, se ha utilizado ArcGIS Collector, una herramienta de mapeo geoespacial, para mapear la extensión del área tratada. Puede ver imágenes de estos esfuerzos al final de esta página. Aprende más.

Los estudiantes de varios cursos de Introducción a los estudios ambientales impartidos por Emily Boone y la Dra. Jennifer Stevens participan activamente en el proceso de auditoría de desechos de la universidad, clasificando el reciclaje y los contenedores de desechos para comprender mejor cómo las personas contribuyen a los desafíos más grandes de desechos y reciclaje y proporcionar datos de auditoría en curso para el seguimiento longitudinal de los esfuerzos de Rethink Waste de la Universidad.

Los cursos de Justicia y Sociedad Civil exploran el significado y la práctica de la justicia en la sociedad contemporánea y brindan a los estudiantes la oportunidad de aplicar lo que han aprendido en el campus y en la comunidad. Los estudiantes leen y debaten las teorías de la justicia y estudian la pobreza y otros problemas socioeconómicos y luego sirven a las poblaciones necesitadas como voluntarios en organizaciones sin fines de lucro en todo el área metropolitana de Richmond.


Voluntarios elegidos para automatizar la integración de datos para el alivio directo & # 8217s Global Midwives & # 8217 Hub

Direct Relief solicitó un voluntario de GISCorps para ayudar con la manipulación de datos y la automatización para apoyar su iniciativa Global Midwives & # 8217 Hub, un ESRI ArcGIS HUB en línea que se está construyendo en colaboración con la Confederación Internacional de Matronas. Direct Relief es una organización de ayuda humanitaria, activa en los 50 estados y más de 80 países, con la misión de mejorar la salud y la vida de las personas afectadas por la pobreza o las emergencias, sin importar la política, la religión o la capacidad de pago.

El Global Midwives 'Hub es un recurso en línea que proporciona a las parteras, asociaciones de parteras, académicos e investigadores información sobre el estado de la profesión de la partería, lo que permite la promoción de la continuidad de la atención y los servicios de salud materna y neonatal dirigidos por parteras en sus países y regiones. . Las matronas de todo el mundo utilizarán el Global Midwives ’Hub para acceder, consultar y mapear conjuntos de datos relevantes. También les permitirá comunicar al mundo sus historias desde el campo, llamando la atención sobre las cosas que importan dentro de sus geografías y moviendo la aguja sobre los resultados de salud materna y neonatal.

Contratación completa, proyecto en curso


Ver el vídeo: Operations Dashboard for ArcGIS: An Introduction (Septiembre 2021).