<\/HEAD>
Los requisitos están cambiando. Antes, el procesamiento digital de datos se limitaba exclusivamente a la oficina, pero hoy en día cada vez más es posible realizar este trabajo también en movimiento.<\/SPAN><\/P><\/P>En muchos escenarios esto también es necesario: por ejemplo, la inspección de daños en carreteras por parte del departamento de mantenimiento vial – ya no hay procesamiento posterior de información capturada en papel. En su lugar, una captura de datos basada en la ubicación, enriquecida con imágenes de daños y un flujo inmediato de información al que un despachador puede reaccionar instantáneamente.<\/SPAN><\/P><\/P>O en el caso de una administración forestal: donde no hay datos de dirección disponibles, se necesitan datos GPS para gestionar y localizar los lugares de almacenamiento de madera. Esto también permite ofrecer a conductores de camiones que no conocen la zona una descripción del lugar o incluso una guía de ruta.<\/SPAN><\/P><\/P>La tecnología para ello existe desde hace algunos años y Esri la ofrece en varios productos que se adaptan idealmente según el requisito. Uno de los miembros más recientes de esta familia de productos es el ArcGIS Runtime SDK for .NET<\/A>. Se trata de una herramienta para desarrolladores para la plataforma Microsoft, con la que se pueden crear aplicaciones para Windows Desktop, Windows Store y Windows Phone – es decir, para todo el espectro desde teléfono hasta tablet y escritorio clásico. Y todo con un solo framework.<\/SPAN><\/P><\/P>
Todos los SDKs "ArcGIS Runtime" comparten la funcionalidad offline. Esta funcionalidad central introducida con la versión 10.2.3 incluye todas las herramientas para gestionar datos localmente y sin conexión a red y luego sincronizarlos con un repositorio central (como
ArcGIS Online Cloud<\/A>). Son posibles arquitecturas que combinan diferentes productos ArcGIS entre sí: en una Collector Light Demo<\/A><\/STRONG> realizada por Esri Alemania se muestra que un cliente .Net y un cliente Java – ambos basados en un ArcGIS Runtime SDK – pueden gestionar datos offline. Esta demo llega incluso al punto de que el caché offline está estructurado uniformemente y por lo tanto es utilizable por ambos clientes por igual.<\/SPAN><\/P><\/P>
Con el ejemplo de la demo .NET se explicarán algunos procesos y se darán algunos consejos que pueden ayudar a realizar una aplicación propia. Todas las partes del código mostradas y capturas de pantalla las encontrará usted igual o similar en el proyecto demo.<\/SPAN><\/P><\/P>El proyecto demo está construido según el concepto MVVM y utiliza un toolkit 3rd Party llamado
MVVM Light<\/A>. El concepto prevé desacoplar la UI de la lógica de negocio, lo que hace que las interfaces sean intercambiables y permite reutilizar la capa lógica en diferentes aplicaciones sobre distintas plataformas.<\/SPAN><\/P><\/P>
Brevemente sobre la idea de la aplicación demo: uno puede iniciar sesión en Esri Cloud mediante una cuenta ArcGIS Online y luego buscar mapas configurados para uso offline. Si uno se mueve con la cuenta dentro de una organización, no solo verá sus propios mapas sino todos los que han sido compartidos para uso común con colegas. Se puede seleccionar cualquier mapa arbitrariamente y hacer disponible una versión offline, que luego puede usarse sin conexión a red. También es posible editar datos con ello.<\/SPAN><\/P><\/P>
¿Alguien tiene un mapa?<\/SPAN>
Esta fue la primera parte de los preparativos, ahora tenemos una cuenta de usuario y un Client ID para nuestra aplicación. Pero aún faltan mapas que luego podamos usar offline. Porque si ahora trabajáramos con la demo podríamos iniciar sesión exitosamente pero luego no tendríamos resultados al buscar.<\/SPAN>
Así que ahora crearemos un mapa, más precisamente, un Web Map. Vaya a "Mis Contenidos". Aquí ya verá su aplicación registrada.<\/SPAN>

Cree un nuevo mapa ahora con "Crear->Mapa". En la ventana siguiente damos al mapa un título (para mantener un esquema uniforme: "My cool Map") y definimos etiquetas. Las etiquetas son necesarias aquí también porque permiten encontrar mapas más tarde mediante palabras clave. Se recomiendan palabras clave temáticas y locales como "offline" y "Múnich".<\/SPAN>
Cuando finalmente cree el mapa con "Ok", verá a continuación un mapa mundial vacío. Aquí puede cambiar el mapa base a voluntad, pero sobre todo añadir capas de mapas con datos. Estos pueden ser sus propios datos o datos disponibles públicamente.<\\/span> <\\/p> <\\/body> <\\/html> busque "Schadensmeldung Freising" y en lugar "ArcGIS Online". Quite la marca de "Dentro de la extensión del mapa" si no obtiene ningún resultado. Agregue estos datos a su mapa con "Agregar". Seleccione la capa de daños y haga clic en "Zoom a", esto cambiará el recorte del mapa de inicio actual y futuro. Guarde el mapa y regrese a la vista "Contenido propio".<\/SPAN><\/P><\/P>Ahora verá otra entrada del tipo Web Map, el mapa recién creado. Haga clic en el nombre del mapa para acceder a la vista de propiedades. Una de estas propiedades se llama "Modo offline", que ya está marcado como "Activado". Para poder usar el mapa sin conexión, esta configuración es necesaria. Si aparece como "Desactivado", haga clic en "Editar" y marque "Activar modo offline".<\/SPAN><\/P><\/P>¿Quién soy yo?<\/SPAN><\/H1>Con los preparativos necesarios completados, ahora podemos dedicarnos a la aplicación demo. La primera vez que se inicia, solicita la entrada de una App ID. Ingrese aquí la Client ID que obtuvimos al registrar la aplicación.<\/SPAN><\/P>
<\/SPAN><\/P>Después de guardar la App ID, llegará a la pantalla de inicio.<\/SPAN><\/P><\/P>El primer camino conduce al inicio de sesión, donde se pone interesante por primera vez. Aquí aparece una página de inicio de sesión:<\/SPAN><\/P>
<\/SPAN><\/P>¿Qué es interesante aquí? Pues bien, la página de inicio de sesión es contenido web cargado dinámicamente que se muestra en un control navegador. Según la URL solicitada, el contenido puede diferir un poco del screenshot mostrado, por ejemplo en cuanto al título de la aplicación, autor o idioma. Pero esencialmente la estructura es igual.<\/SPAN><\/P><\/P>Se utiliza un procedimiento estándar para el inicio de sesión, que está descrito con más detalle en las páginas para desarrolladores de ArcGIS<\/A>. Solo se solicita una URL de ArcGIS:<\/SPAN><\/P>
https:\/\/www.arcgis.com\/sharing\/oauth2\/authorize?client_id=P61TE38ydg2L7y30&response_type=code&redirect_uri=urn:ietf:wg:o#8230;<\/A><\/SPAN><\/P><\/P>
Se trata de un Rest Endpoint que autoriza al usuario contra ArcGIS. Este requiere una Client ID que registramos inicialmente bajo nuestra cuenta y que se pasa como parte del URI. El resto de la URL está definido y explicado en el sitio web para desarrolladores.<\/SPAN><\/P><\/P>Esto tiene varias ventajas: este procedimiento ahorra mucho trabajo de desarrollo porque la página se genera automáticamente del lado servidor y se adapta a la configuración. También incluye el área de inicio de sesión, como desarrollador no tengo que manejar errores por intentos fallidos y no importa si autorizo contra ArcGIS Cloud o una solución Portal.<\/SPAN><\/P><\/P>Una vez realizada la autorización, el token que responde la plataforma ArcGIS se almacena en un objeto centralizado y global (=singleton estático) llamado IdentityManager:<\/SPAN><\/P>
<\/SPAN><\/P>Actúa —como indica su nombre— como gestión centralizada de identidad. Cuando se solicita un servicio ArcGIS, automáticamente verifica si hay permisos almacenados para ese servicio. Si no hay o si han expirado, no se permite acceso al servicio.<\/SPAN><\/P><\/P>
Muéstrame lo que tienes<\/SPAN><\/H1>Ahora podemos iniciar sesión con la aplicación. Ahora queremos ir al propósito real de la aplicación: la posibilidad de usar mapas sin conexión.<\/SPAN><\/P><\/P>Primero debemos buscar objetos disponibles que nuestra aplicación pueda usar. Esto ocurre en el método SearchArcgisOnline()<\/SPAN> de la clase ArcGisPortalWebMapItemsViewModel<\/SPAN>. Primero se crea una instancia del Portal ArcGIS, que está disponible para solicitudes generales contra la plataforma ArcGIS (es decir, ArcGIS Online o Portal for ArcGIS):<\/SPAN><\/P>
Al observar el objeto _arcGisPortal después de ejecutar esta instrucción, notamos que el inicio de sesión ocurrió con las credenciales usadas anteriormente:<\span> <\p>
<\span> <\p> La asignación fue realizada por IdentityManager, que encontró las credenciales adecuadas para solicitar ArcGIS Online.<\span> <\p> Luego queremos ver todas las mapas en la aplicación que pueden guardarse offline. La siguiente consulta busca todos los mapas (=Web Maps) destinados a almacenamiento offline. Para demostrar cómo restringir aún más la búsqueda, también solo buscamos dentro de la organización tales mapas. El "SearchText" es un texto buscado desde la interfaz de usuario para filtrar aún más:<\span> <\p>
<\span> <\p> Finalmente proporcionamos algunas configuraciones adicionales para búsqueda y enviamos la consulta:<\span> <\p>
<\span> <\p> Como inicialmente creamos un Web Map llamado "My cool Map", busquemos por palabra clave "cool". La búsqueda nos da exactamente un resultado:<\span> <\p>
<\span> <\p> ¿Por qué exactamente un resultado? Naturalmente vemos nuestro propio mapa creado antes. Seguramente muchas otras personas también encuentran trabajar con ArcGIS "cool", así que probablemente habría varios mapas "cool" más. Sin embargo, no aparecen en esta búsqueda porque uno de nuestros criterios limita los resultados a objetos dentro de nuestra propia organización. Aunque no formemos parte de una gran empresa sino solo una empresa "de una persona", somos considerados como nuestra propia organización.<\span> <\p> ¡Dámelo!<\span>
Bien — vamos allá. Ahora descargaremos este Web Map localmente. Para ello hacemos clic en el botón "Get the map offline" dentro del objeto del mapa y cambiamos a una nueva página donde inmediatamente se muestra el contenido del Web Map. En tres pasos llegamos a nuestro mapa offline: Primero damos a nuestro futuro Cache un nombre único, luego marcamos un área (parcial) que debe estar disponible sin conexión y comenzamos la descarga con el botón "Export Map":<\/SPAN><\/P>
<\/SPAN><\/P>Un cambio de página adicional nos lleva automáticamente a la vista de todos los Caches disponibles sin conexión. Esta colección es – dependiendo de cuánto haya trabajado ya con la aplicación – más o menos extensa, en mi caso ya hay varios Caches. Los Caches se muestran agrupados por Web Maps, ya que es perfectamente posible cargar diferentes Caches para el mismo Web Map (por ejemplo, con diferentes recortes de mapa). El grupo se puede minimizar, de modo que solo se reconozcan algunos datos sobre el Web Map.<\/SPAN><\/P><\/P>El nuevo Cache, que está actualmente en descarga, se marca como activo mediante una barra de progreso, además una barra de estado en el objeto Cache informa sobre el proceso actual. Cada objeto Cache también dispone de botones para eliminar, sincronizar y cargar el Cache.<\/SPAN><\/P>
<\/SPAN><\/P>Mientras esperamos el Cache, echamos un vistazo rápido al código para ver qué está pasando realmente.<\/SPAN><\/P><\/P>La acción principal ocurre especialmente en la clase CreateOfflineMapViewModel<\/SPAN>. Esta es responsable de la creación de los Caches. El punto de entrada central es el método ExportMap()<\/SPAN>, que se activó al hacer clic en "Export Map". Por supuesto, aquí se encuentran las funciones centrales que guardan lo más importante del Web Map:#_msocom_1<\/A> <\/SPAN>los datos geográficos, es decir, el mapa base y los datos de características.<\/SPAN><\/P>
<\/SPAN><\/P>Quien ya haya trabajado con Esri Offline Data (por ejemplo, con ArcGIS for Windows MobileSDK o la App Collector for ArcGIS), conoce este proceso básicamente. El mapa base y los datos vectoriales se almacenan por separado. Esto se debe por un lado al procesamiento diferente de datos raster y de características, pero por supuesto también a la estructura diferente de los datos: El mapa base está presente como un llamado Tiled Package, una carpeta comprimida con una estructura de imágenes en mosaico. Los datos vectoriales, en cambio, están en una estructura de base de datos, concretamente en formato SQLite. En nuestro caso, la base de datos SQLite termina en el sistema de archivos como "geodatabase", pero esto es libremente seleccionable.<\/SPAN><\/P>
<\/SPAN><\/P>Pero antes de que comience la exportación real de los datos geográficos sucede algo más:<\/SPAN><\/P>
<\/SPAN><\/P>Aquí se almacenan localmente informaciones del Web Map. Para ello hay que saber que un Web Map es básicamente
un archivo de configuración en formato JSON<\/A>, que no contiene datos en sí mismo sino más bien información sobre dónde están los datos. También se almacenan informaciones sobre la definición del mapa como Id, título, propietario, fecha de creación etc. Estas dos informaciones se obtienen del Web Map, un objeto definido online al que no se tiene acceso cuando se trabaja offline. Para tener estas informaciones disponibles también offline, en la demo se ha incorporado un mecanismo que guarda localmente las definiciones del Web Map durante la exportación y así las hace disponibles en cualquier situación.<\/SPAN><\/P><\/P>
Todo nuevo lo hace la App<\/SPAN><\/H1>Bueno, mientras tanto el Cache está completamente cargado. Ahora podemos hacer tres cosas con él: Podemos mostrarlo en un mapa, sincronizarlo y eliminarlo.<\/SPAN><\/P><\/P>Nos concentramos primero en mostrar el Cache cargado y por eso hacemos clic en "Load map".<\/SPAN><\/P>
<\/SPAN><\/P>Se abre una nueva pestaña llamada "Map" y en la vista vemos un mapa y una lista de todas las capas editables. Si seleccionas una capa puedes hacer clic en un punto del mapa y así crear nuevos objetos en esa capa. Para simplificar, la demo prescinde de ingresar atributos, solo se crea una geometría, pero este sería el siguiente paso en una aplicación completa.<\/SPAN><\/P><\/P>Que se hayan hecho cambios en la capa se indica porque detrás de las capas afectadas aparece un número con las ediciones realizadas. Tan pronto como hay cambios en un Cache tiene sentido sincronizarlo, lo cual es también el último paso que quiere mostrar la demo.<\/SPAN><\/P><\/P>Para hacerlo volvemos a cambiar a la pestaña "Config" y seleccionamos la función "Sync" para nuestro Cache. Nuevamente aparece la barra de carga, esta vez no con una descripción de exportación sino con un título de sincronización. A diferencia de la exportación, durante la sincronización se compara qué cambios han ocurrido y estos se aplican centralmente. Los cambios locales se suben y los cambios de otros clientes se descargan.<\/SPAN><\/P>
Finale, oh oh
¿Qué quería lograr este artículo? Por un lado deberían ilustrarse algunas preguntas típicas y procesos de una aplicación offline. Unido a la referencia a la aplicación demo Collector Light usted puede revisar los pasos individualmente y también entenderlos. Esto puede ayudarle a resolver sus preguntas pero al menos le da algunas ideas sobre cómo podría abordar ciertas cosas.
Sobre la demo cabe señalar lo siguiente: El desarrollo comenzó ya basado en una versión Beta de ArcGIS Runtime for .NET. Así Esri Deutschland tuvo acceso temprano al desarrollo y pudo acumular experiencia desde entonces. Desde las primeras versiones beta han salido varias nuevas versiones que trajeron numerosos cambios valiosos. Además ahora existen adicionales Toolkits y Ejemplos que muestran numerosas soluciones posibles. Por eso no se sorprenda si encuentra diferentes soluciones para un mismo problema. A veces son equivalentes y otras tienen ventajas distintas.
Si tiene más preguntas además de esta información y desea asesoramiento individualizado no dude en contactar con Esri Deutschland, nuestro equipo Consulting le apoyará competentemente.
<\BODY>\<\HTML>