ArcGIS API for JavaScript
Exploración de registros relacionados con ArcGIS API for JavaScript
Por Lauren Boyd
Las relaciones son esenciales en la vida, ya sean personales con familiares o amigos, relacionadas con el trabajo con colegas, etc. Lo mismo ocurre con las relaciones dentro de sus datos geográficos. La versión 4.25 de la API de ArcGIS para JavaScript (API de ArcGIS JS) introdujo una forma de explorar las relaciones de sus datos a través de la ventana emergente de una función. Esto se hace a través del elemento RelationshipContent. El torneo de la Copa Mundial de la FIFA Qatar 2022 ha comenzado, ¡así que exploremos una aplicación que explora las relaciones de la Copa Mundial de la FIFA!
Antes de profundizar en este artículo, recomiendo leer el siguiente artículo que muestra cómo se pueden crear registros relacionados en ventanas emergentes utilizando ArcGIS Online MapViewer y presenta la interfaz de usuario (UI) de registros relacionados:
¿Qué son las relaciones dentro de ArcGIS?
Comencemos definiendo qué relaciones hay dentro del Sistema ArcGIS. Las relaciones proporcionan una manera de asociar entidades y registros entre sí sin estar en la misma capa o tabla, al mismo tiempo que ayudan a reforzar la integridad de los datos. La principal motivación para modelar datos geográficos (o cualquier dato) con relaciones es admitir la cardinalidad. La cardinalidad de una relación especifica la cantidad de objetos en la clase de origen que pueden relacionarse con una cantidad de objetos en la clase de destino. Por ejemplo, un país puede tener uno, ninguno o muchos estadios FIFA pasados o presentes.
Se pueden crear relaciones entre diferentes fuentes de datos, tales como:
Una capa puede relacionarse con otra capa. Por ejemplo, un estadio puede relacionarse con el país en el que reside.
Una capa puede relacionarse con una tabla no espacial. Por ejemplo, un país puede relacionarse con sus estadísticas de la Copa del Mundo.
Una tabla no espacial puede relacionarse con otra tabla no espacial. Por ejemplo, la información sobre un jugador de fútbol puede relacionarse con sus estadísticas y clasificación.
Para obtener más información sobre las relaciones y por qué son importantes, consulte la documentación de ArcGIS Pro.
Creando relaciones
Para buscar registros relacionados en aplicaciones web, las relaciones deben crearse antes de publicar sus datos mediante la herramienta Crear clase de relación en ArcGIS Pro.
Para la aplicación de la Copa Mundial, utilicé la capa de países* de ArcGIS Living Atlas y creé:
Una capa de entidades que contiene los estadios más grandes (de mayor capacidad) de cada año.
Una tabla con estadísticas de los torneos de la Copa Mundial de la FIFA de 1930 a 2018.
A continuación se muestra una tabla que muestra los detalles de las relaciones creadas con la herramienta Crear clase de relación en ArcGIS Pro entre esas capas/tabla:
En este blog, nos centraremos en cómo configurar la ventana emergente para mostrar la segunda relación de la tabla anterior: la capa de países y la tabla de ganadores de la Copa Mundial 1930-2018.
Después de crear las relaciones en ArcGIS Pro, confirme que todas las capas/tablas que participan en la relación estén en el mapa y publique todo en ArcGIS Online o ArcGIS Enterprise. Tenga en cuenta que la visualización de registros relacionados dentro de las ventanas emergentes solo es compatible con las capas alojadas a partir de la versión 4.25.
* Cabe señalar que esta demostración solo muestra las naciones actuales. No se muestran antiguos países como Yugoslavia, que ocupó el cuarto lugar en 1930 y 1962.
Registros relacionados y la API de ArcGIS JS
Una vez que se publican los datos, la aplicación se puede configurar para mostrar la información relacionada con el nuevo tipo de contenido PopupTemplate, RelationshipContent. Para mostrar información de los datos de la tabla World Cup Winner 1930-2018 dentro de la ventana emergente de la capa de países, se debe agregar contenido de relación a la propiedad de contenido en la plantilla emergente de la capa de países.
Agregar capas/tablas relacionadas al mapa
Antes de agregar el contenido de la relación, las capas y tablas que participan en la relación deben agregarse al mapa. Si faltan las capas/tablas relacionadas, aparecerá un mensaje de error en la interfaz de usuario de la ventana emergente:
// Create the world countries layer and add a renderer. const countriesLayer = new FeatureLayer({ url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/FIFA_World_Cup/FeatureServer/1", title: "World Countries Generalized", // ... other layer properties }); // Add the countries layer to the map. map.layers.add(countriesLayer); // Create the non-spatial table containing FIFA World Cup standings and stats. const winnersTable = new FeatureLayer({ url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/FIFA_World_Cup/FeatureServer/2", title: "Country Statistics", popupTemplate: { title: "FIFA World Cup {Year} Standings in {Host}", outFields: ["*"], // Add the fields to the FieldInfos fieldInfos: [ { fieldName: "First" }, { fieldName: "Second" }, { fieldName: "Third" }, { fieldName: "Fourth" }, { fieldName: "TopScorer", label: "Top scorers and number of goals" }, { fieldName: "BestPlayerAward", label: "Best player award" } ], content: [ // Add FieldsContent via autocasting { type: "fields" } ] } }); // Load the non-spatial table and add it to the map's tables. winnersTable.load().then(() => { map.tables.add(winnersTable); });
Agregar contenido de relación
Una vez que se agregan las capas y se configura la plantilla emergente de la tabla de estadísticas, se puede crear el contenido de la relación con las propiedades requeridas:
- relaciónId: el valor numérico de la relación. Para encontrar este valor, consulte la sección de relaciones de recursos de capa en el servicio de entidades:
- title: Un título que especifica la información relacionada que estamos mostrando. En este caso, mostraremos la cantidad de veces que un país ganó el primer lugar en todos los torneos anteriores, por lo que el título será "Victorias".
- descripción: una breve descripción general de la historia que contará la información relacionada.
- displayCount: el número de registros relacionados que se muestran en la lista. El mínimo es 0 y el máximo es 10.
- orderByFields: esta propiedad le permite especificar un valor de campo para ordenar la lista de registros relacionados. En este ejemplo, ordenaremos la lista de torneos de forma descendente por año.
- El siguiente código crea un nuevo objeto RelationshipContent utilizando la transmisión automática y agrega el objeto al contenido de la plantilla emergente:
countriesLayer.popupTemplate.content = [ { type: "relationship", // Relationship ID on the feature service is 1 relationshipId: 1, title: "Victories", description: "Every FIFA World Cup tournament {COUNTRY} has won first place in from 1930-2018 ordered by most recent.", displayCount: 2, // Orders the related records by the year the tournament was held // by most recent to oldest orderByFields: [ { field: "YEAR", order: "desc" } ] } ];
Una vez agregados a la plantilla emergente, los registros relacionados de la característica seleccionada se pueden explorar dentro de la ventana emergente. Las imágenes a continuación muestran la ventana emergente de Brasil y cómo se ve la ventana emergente al seleccionar una función relacionada. En este caso, la victoria de Brasil en la copa del mundo de 2002 organizada en Corea del Sur y Japón fue seleccionada de la lista de récords relacionados:
Tenga en cuenta que la plantilla emergente que se configuró para la tabla relacionada se muestra dentro de la ventana emergente de países. ¡Es así de simple agregar registros relacionados dentro de las ventanas emergentes usando la API de ArcGIS JS!
Pero espera... ¡hay más contenido!
Se pueden agregar múltiples relaciones y/o diferentes tipos de contenido a la plantilla emergente según la historia que se cuente a través de la exploración de datos. En la aplicación completa de la Copa Mundial de la FIFA, la plantilla emergente de países está configurada con contenido personalizado que consulta la tabla relacionada para obtener estadísticas y ambas relaciones en la tabla anterior.
Mejores prácticas
La capa o tabla relacionada debe agregarse al mapa para poder configurar el contenido de la relación. Si una de las capas/tablas que participa en la relación no se agrega al mapa, se mostrará un error en la interfaz de usuario.
Debido a que el contenido de la relación agrega una interfaz de usuario grande a la ventana emergente, para mejorar la legibilidad puede ser más conveniente acoplar la ventana emergente a un lado del navegador.
¿Que sigue?
Ver registros relacionados es solo el comienzo de lo que está por venir. En futuras versiones de ArcGIS API for JavaScript, planeamos admitir:
Edición de registros relacionados con el widget Editor y dentro de la ventana emergente
Visualización de registros relacionados para servicios no alojados
Visualización de registros relacionados dentro de FeatureTable
Acciones que lo llevan a funciones relacionadas
Conclusión
Admitir registros relacionados en elementos emergentes de características es rápido y fácil con la API de ArcGIS JS y abre tantas posibilidades para la exploración de datos en sus aplicaciones.
Si desea jugar con el código que se muestra en este blog, o si desea explorar las estadísticas históricas de la Copa Mundial de la FIFA, consulte la aplicación en vivo y el código fuente. Si el fútbol no es lo tuyo, no te preocupes. Eche un vistazo a este ejemplo que utiliza relaciones para vincular las áreas administrativas de California con los incendios forestales.
Sobre el autor
¡Contáctenos!
Llene el formulario y un ejecutivo se pondrá en contacto con usted para brindarte más información.