¿Ejemplo de un servicio de mapas dinámicos que cambia con frecuencia?

8

Un requisito de nuestra aplicación web es actualizar automáticamente un servicio de mapa dinámico particular en un temporizador.

El requisito se refiere a un cliente que tiene una MS dinámica que constantemente recibe actualizaciones de los sensores GPS.

Olvidemos los Servicios de funciones por ahora, y los servicios WMS o de imagen que podrían cambiar con frecuencia.

En cuanto a la codificación, fue bastante sencillo lograr esto.

Nuestros evaluadores ahora quieren un servicio de mapas dinámicos que cambie con frecuencia (idealmente al menos cada 15 segundos) para que puedan ver cómo se ve esto en la parte frontal. También nos ayudará a demostrar la nueva capacidad a nuestro cliente.

He estado rastreando los servidores de muestra de Esri pero no puedo encontrar uno.

¿Alguien sabe de un servicio público que podríamos usar para algunas pruebas rápidas?

Si la respuesta es no, debe haber secuencias de comandos para emular el movimiento de rastreo GPS, tal vez para seguir cambiando la ubicación de algunos puntos. Entonces podemos configurar mi propio servicio.

Simón
fuente
1
¿Dónde se almacenan sus datos detrás del servicio de mapas? ¿Estamos hablando de ArcSDE sobre SQL Server / Oracle, geodatabase de archivos, etc.?
Chad Cooper el
Puede ser cualquiera de los anteriores. Tenga todo listo en nuestro entorno de prueba. La nueva funcionalidad debe probarse en todos esos entornos, pero tengo poco miedo de que haya un problema en el backend.
Simon
¿Quizás i2maps ncg.nuim.ie/i2maps/docs/index.php?page=examples podría ayudarlo?
radek
¿Tiene que funcionar con 10.1, una vez que se lance?
Kirk Kuykendall
¿No necesita el Servidor de seguimiento para ArcGIS Server? esri.com/software/arcgis/tracking-server/index.html para hacer esto?
Mapperz

Respuestas:

2

Si está utilizando la API REST, me parece que podría hacerlo sin el servidor arcgis. Cuando llega una solicitud de un mapa, devuelve una cadena json que cumpla con la especificación REST API , que representa nuevas ubicaciones.

Con Windows, esto podría hacerse implementando un servicio WCF Rest . El servicio mantendría una gran variedad de vehículos en la memoria. Cada vehículo tendría ubicación, rumbo, velocidad y marca de tiempo. Cuando llega una solicitud, la ubicación se actualizará en función del tiempo transcurrido desde la última marca de tiempo, compensando cierta distancia en función de la velocidad y el rumbo.

Si sus vehículos necesitan seguir caminos, puede volcar un camino para cada vehículo en un archivo (x, y y tiempo). El servicio REST podría usar el archivo para devolver actualizaciones de posición que siguen a lo largo de esas rutas.

Su cliente necesitaría un temporizador para realizar una solicitud cada 15 segundos. Incluya una marca de tiempo en la URL para evitar el almacenamiento en caché.

Editar

Otra alternativa sería utilizar una extensión en capas. Cree un mxd que apunte a una capa ficticia. La primera vez que se llame a ILayerExtensionDraw.BeforeLayerDraw , haga que reemplace IFeatureLayer.Featureclass con una clase de características en memoria (creada usando inmemoryworkspacefactory ). La clase de entidad de puntos representaría ubicaciones de vehículos, con campos para Encabezado, Velocidad y Marca de tiempo. Cada vez que se llama BeforeLayerDraw, las ubicaciones se actualizan en función de la velocidad, la dirección y el tiempo desde la última marca de tiempo. No olvide hacer que su extensión laye implemente IPersistStream .

Kirk Kuykendall
fuente
Muy buen ejemplo; Lo hice en los últimos dos años pero sin REST. Teníamos una capa ArcSDE que se actualizaría con la telemetría del vehículo que sondeaba desde cada automóvil cada 30 segundos, esos datos se insertaban en una capa de puntos con todos los valores sellados en el tiempo. Acabamos de tener un método que actualizaría el control de mapa (basado en ADF sí, yuck) en una ventana configurable y que extraería los 5 puntos de información del vehículo más recientes para que pueda ver el movimiento y el tiempo. Funcionó bien para PD / EMS ...
DEWright
Bonito, pero no lo que busco después. Necesito un D-MS al que pueda llamar a través de una API de Esri, y luego en otra parte de mi código lo tengo para volver a solicitar este servicio. ¿Su respuesta parece exagerada para mis necesidades de prueba?
Simon
-1

La naturaleza de un servicio de mapas dinámicos es que se presta sobre la marcha, por solicitud. Para ver cualquier cambio en el lado del cliente, se debe emitir una nueva solicitud de mapa.

De forma predeterminada, un servicio de mapas dinámicos alojado a través de ArcGIS Server colocará un "Bloqueo de esquema" en los datos, lo que no permitirá las ediciones en los datos de origen mientras se ejecuta el servicio.

Esto se puede superar editando propiedades en el archivo de configuración de servicios de mapas (.cfg). Una <SchemaLockingEnabled>false</SchemaLockingEnabled>entrada permitirá cambios en los datos de origen mientras se ejecuta el servicio.

Ver http://help.arcgis.com/en/arcgisserver/10.0/help/arcgis_server_dotnet_help/index.html#//0093000000mr000000

Allan Adair
fuente
NOTA: si las actualizaciones de funciones se realizan a través de un servicio de funciones, no tendrá que preocuparse por el Bloqueo de esquema. Además, el envío de ediciones de características a través de un servicio de características sería una excelente manera de probar el rediseño dinámico de un servicio de mapas.
Allan Adair
Allan, la mejor manera de superar este problema es una vista espacial desde una fuente SDE / DB. Actualiza dicha tabla en vivo y a medida que la nueva consulta se dispara golpea la vista y se golpea la capa fuente.
DEWright
Es un buen consejo desde el punto de vista arquitectónico, y si Simon está usando SDE para almacenar / recuperar datos, esa sería otra forma de probar si un servicio de mapas dinámicos se está ejecutando correctamente en la aplicación del lado del cliente.
Allan Adair
Otro cliente acaba de tener un valor X / Y que usaríamos para crear puntos sobre la marcha en función de la extensión visible actual y que también funcionó bien. Por lo tanto, hay potencial, desearía tener un servicio público para demostrarlo; pero porque estos son servicios del gobierno, todos están asegurados.
DEWright
Este ejemplo debería funcionar: sampleserver3.arcgisonline.com/ArcGIS/rest/services/Fire/Sheep/… Es el servicio de muestra que se puede editar utilizando el SDK interactivo de Silverlight. Estoy seguro de que hay más por ahí. help.arcgis.com/en/webapi/silverlight/samples/…
Allan Adair