Un requisito en los mapas a menudo es que las características de una capa deben representarse con diferentes símbolos para poder distinguirlas visualmente. Por ejemplo, en una capa con características de árboles. Si no se configura nada más, los árboles en el mapa siempre tienen el mismo símbolo. Sin embargo, con la Simbología de Valor Único, la capa puede ajustarse para que, por ejemplo, se muestre un símbolo diferente para cada tipo de árbol, como se muestra en la siguiente imagen:<\/P>
<\/P>
Simbología de Valor Único<\/span><\/P>Esta es la solución recomendada cuando no hay demasiadas distinciones (permutaciones). Pero, ¿qué pasa si la cantidad llega a cientos/miles y posiblemente se requieren símbolos complejos? <\/P>A partir de este punto, debería considerarse el uso de Simbología de Diccionario. El ejemplo más destacado aquí son los Estilos de Simbología Militar con miles de símbolos diferentes y a veces muy complejos, que se necesitan en el ámbito militar para mapas tácticos.<\/P> <\/P>
Simbología de Diccionario – Estilos de Simbología Militar<\/span><\/P>Para aclarar desde el principio, las capas con Simbología de Diccionario no pueden mostrarse en la leyenda del mapa, como por ejemplo en la captura de pantalla de la Simbología de Valor Único arriba. Una leyenda con cientos de símbolos tampoco sería muy útil.<\/P> <\/H4>El Estilo de Simbología de Diccionario<\/H4>Con los Estilos de Simbología de Diccionario, los símbolos se generan dinámicamente en tiempo real basándose en valores de entrada. Hay varios tipos de estilo, en este blog todo lo siguiente se refiere a Mobile Styles y Web Styles. Un estilo puede contener símbolos para diferentes geometrías (punto, línea, polígono). Los valores de entrada suelen ser información atributiva de las características que deben recibir el símbolo correspondiente en el mapa. Esto significa que un estilo debe crearse previamente con todos los componentes necesarios, lógica de aplicación y opciones de configuración. Cómo hacerlo está muy bien descrito en este Blog de ArcGIS.<\/P>El resultado es un Mobile Style, que es una base de datos SQLite con la extensión de archivo .stylx. Este puede usarse tal cual directamente en ArcGIS Pro y en los ArcGIS Maps SDKs for native (también conocido como ArcGIS Runtime) sin conexión, pero también puede publicarse como Web Style Service y usarse tanto en aplicaciones de escritorio como web.<\/P>Esto es teoría. Para entender mejor la Simbología de Diccionario es útil probar todo en la práctica. Para ello he modificado un poco el Mobile Style para restaurantes del autor del blog mencionado arriba y lo he puesto a disposición:<\/P>para descargar como Mobile Style (archivo Stylx)<\/LI>publicado como Web Style Service en ArcGIS Online<\/LI>y un Restaurant FeatureService correspondiente para probar el estilo en aplicaciones.<\/LI><\/UL>Nuestro Mobile Style para restaurantes genera símbolos complejos basados en atributos, con los cuales se puede ver a simple vista el nombre, tipo de restaurante (aquí pizzería), la calificación, horarios y mucho más sin necesidad de abrir un popup.<\/P> <\/P>
Componentes de un símbolo de restaurante<\/span><\/P> <\/H4>Crear o modificar un Mobile Style<\/H4>Los Mobile Styles se crean nuevos en ArcGIS Pro. También se pueden usar estilos existentes como plantilla para nuevos estilos porque tienen la misma estructura. Los Mobile Styles pueden modificarse. Para ello se necesita ArcGIS Pro para crear o ajustar los componentes gráficos y textuales del símbolo, así como un editor SQLite DB (por ejemplo, el DB Browser for SQLite) para la lógica y configuraciones del estilo.<\/P>En ArcGIS Pro solo hay que arrastrar y soltar el Mobile Style para restaurantes al catálogo; entonces aparecerá listado bajo Styles. Con clic derecho sobre él aparece la opción para administrar estilos. Al hacer doble clic sobre el estilo en la ventana administrativa se pueden ajustar componentes existentes o crear nuevos.<\/P>Al abrir el estilo en un editor SQLite DB las opciones están en la tabla meta. Allí bajo dictionary_configuration están las configuraciones; en nuestro estilo solo la opción para mostrar u ocultar el nombre del restaurante en el símbolo. Y bajo dictionary_script está la lógica aplicada como script ArcGIS Arcade, que incluye por ejemplo el cálculo del componente estrellas basado en los valores del rating.<\/P> <\/H4>Publicar un Web Style Service<\/H4>Los Mobile Styles pueden publicarse desde ArcGIS Pro a ArcGIS Online y ArcGIS Enterprise. Simplemente hay que hacer clic derecho sobre el estilo deseado en el catálogo y seleccionar Share as Web Style. Ya he preparado esto, pero cualquiera puede publicar su propio Web Style Service desde el Mobile Style para restaurantes. Al publicar se genera una estructura con varios archivos JSON que contienen toda la información del estilo y a los cuales se accede mediante URL. Un Web Style no utiliza internamente el Mobile Style.<\/P>Aquí un consejo: Los Web Styles también pueden alojarse en un servidor web propio. Para ello simplemente descargue todos los archivos JSON con el AGOL Assistant usando Download All (haga clic en los tres puntos del ítem del estilo y seleccione View Item Resources) y publique la estructura descomprimida tal cual está. Probablemente serán necesarias algunas configuraciones adicionales del lado del servidor web para acceder correctamente.<\/P> <\/H4>Uso de Simbología de Diccionario en ArcGIS Pro<\/H4>En ArcGIS Pro las capas pueden usar tanto Mobile Styles como Web Styles para su simbología. Para nuestros restaurantes serían los siguientes pasos:<\/P>Añadir un mapa<\/LI>El Restaurant-FeatureService en el elemento Ribbon Añadir datos con Datos desde ruta para agregar como capaHacer clic derecho en la capa y seleccionar SimbologíaEn el menú de Simbología, bajo Simbología primaria, seleccionar DictionaryEn el menú desplegable More, hacer clic en la opción Add dictionaryAquí se puede seleccionar ya sea el estilo móvil Restaurant desde el sistema de archivos o el Web Style (buscar por nombre o ID del Web Style en Portal/ArcGIS Online)Bajo Symbology Fields y Text Fields se pueden especificar los nombres de campo adecuados de los atributos de la entidad, si son diferentes a los valores de entrada definidos en el estilo. En nuestro caso, todo puede permanecer como está.Cambiar la configuración si se desea (texto encendido/apagado)Listo
Dictionary Symbology in ArcGIS Pro
Uso de Dictionary Symbology en ArcGIS Maps SDKs for native
En todos los ArcGIS Maps SDKs for native, al igual que en ArcGIS Pro, se pueden usar tanto Mobile Styles como Web Styles para la simbología de capas. Para nuestros restaurantes hay ejemplos adecuados en la documentación, aquí por ejemplo para .NET. El código puede ser reutilizado completamente, solo las rutas/IDs a nuestros propios estilos podrían necesitar ser reemplazadas. En los Sample Viewers de cada SDK también pueden probarlo en vivo. Este visor está disponible en las tiendas de aplicaciones correspondientes (Microsoft, Apple, Google, buscar ArcGIS Samples) y para Java y Qt para descargar. Nuestro ejemplo se llama siempre Custom dictionary style.
Dictionary Symbology in ArcGIS Maps SDKs for native
Los métodos para sobrescribir los nombres de campo de atributos de entidad si no coinciden, o para establecer la configuración (texto encendido/apagado) están descritos en la documentación del SDK correspondiente, aquí por ejemplo nuevamente para .NET.
También es interesante la posibilidad de consultar los símbolos del estilo directamente sin un mapa. Esta sería la solución para por ejemplo símbolos para "Gráficos individuales" en GraphicsOverlays sin renderer, selectores de símbolos propios para editar o para usar las imágenes de símbolos fuera del control del mapa en tablas o botones. Cómo hacerlo también está descrito en la documentación, aquí para .NET. Las imágenes para uso fuera del control del mapa pueden luego generarse con los métodos Symbol.CreateSwatchAsync() y RuntimeImageExtensions.ToImageSourceAsync().
Uso de Dictionary Symbology en ArcGIS Maps SDKs for JavaScript
Para Dictionary Symbology en aplicaciones web solo se pueden usar Web Styles. Con el ArcGIS Maps SDKs for JavaScript básicamente se puede hacer lo mismo que en los SDKs nativos. Por simplicidad he publicado el código JS para nuestro ejemplo de restaurante en CodePen.
Dictionary Symbology in ArcGIS Maps SDKs for JavaScript
También con el ArcGIS Maps SDKs for JavaScript se pueden consultar símbolos del estilo para "uso individual" en GraphicsLayer o para usar como imágenes fuera del mapa en otros controles. Para esto también he preparado un pequeño ejemplo en CodePen. El truco aquí es darle al DictionaryRenderer, mediante el método GetSymbolAsync(), una Graphic solo con una tabla de atributos. Esto devuelve el símbolo correspondiente, que puede usarse como símbolo de una nueva Graphic en GraphicsLayer o también como imagen fuera del mapa usando métodos del objeto symbolUtils.
Si tienen preguntas o sugerencias sobre este tema, simplemente usen la función de comentarios. ¡De lo contrario les deseamos mucha diversión y éxito probando!