Esta página web no está soportada en este navegador. Intente Microsoft Edge, Google Chrome, Safari o Firefox.

x

Buscador

Buscador

Los mejores momentos de la CCU

GeometryEngine Parte 1: Verificar relaciones espaciales y edición

Kristian Ekenes, Septiembre 9 de 2015


Esta es la primera noticia de una trilogía acerca de GeometryEngine de la API de ArcGIS para JavaScript. Estas noticias cubrirán los siguientes temas:

  • Parte 1: Verificar relaciones espaciales y edición.
  • Parte 2: Mediciones.
  • Parte 3: Análisis de superposición.

Generalidades

A principios de este año GeometryEngine y su contraparte asíncrono GeometryEngineAsync fueron liberados (En beta) en las versiones 3.14 y 4.0 beta 1, en la API de ArcGIS Para JavaScript. Estos módulos proveen más de 30 métodos para medición, superposición y verificación de relaciones espaciales entre geometrías en aplicaciones web. GeometryEngine incluye funciones como zonas de influencia, intersecciones, y offset para cálculos de proximidad, relaciones espaciales y mediciones de área y distancia. Esto suena similar a GeometryService ¿Cuál es la gran diferencia?, Lo que diferencia a GeometryEngine es que este realiza todo su trabajo del lado del cliente.

Es decir que no se realiza ninguna petición de red cuando se utilizan funciones de GeometryEngine, esto significa además que al usar GeometryEngine se mejora el rendimiento de las aplicaciones web, especialmente cuando se realizan diversas peticiones con GeometryService o se utiliza una gran cantidad de geometrías.

Verificación de relaciones espaciales en aplicaciones de edición

Trabajar del lado del cliente hace que GeometryEngine sea realmente poderoso cuando es usado en aplicaciones web dedicadas a la edición de geometrías. Funciones que evalúan las intersecciones, la selección de entidades, la igualdad y otras relaciones pueden aumentar la integración de sus datos y mejorar la experiencia del usuario mientras edita. Sin GeometryEngine muchas de estas funciones no se podrían realizar, sin necesidad de enviar diversas peticiones o escribir largos módulos personalizados de JavaScript.

Lo que antes requería de largos flujos de trabajo usando GeometryService o una tarea de geoprocesamiento personalizada, ahora es sencillo con GeometryEngine. Por ejemplo, la siguiente aplicación es una muestra de la implementación de varios métodos de GeometryEngine incluyendo cortar, Área geodésica, unión y diferencia. Pero son las funciones de prueba (Offset, Disjoint,igualdad, dentro, intersección y cruzar) que permite a la aplicación realizar adecuadamente los cortes, la unión, la eliminación y la creación de nuevas entidades.



Abra la aplicación y seleccione un polígono. A continuación trace una línea desde un extremo del polígono al otro. Observe que una vez que la línea cruza completamente el polígono, este corta automáticamente y el área de cada uno de los polígonos resultantes se imprime en sus centroides. Antes de intentar el corte, se verifica que la primera posición y la posición actual del mouse son disjuntas con el polígono seleccionado. La función de cruce se utiliza para comprobar que la línea cruce el polígono. Estas pruebas garantizan la operación de corte, además los cálculos del área no se realizan hasta asegurarse que los parámetros de entrada del corte son válidos. Dichos cálculos se realizan cada vez que el mouse se mueve.

Pruebas similares en las relaciones espaciales, se hacen para las otras operaciones, incluyendo “Agregar entidades”, que comprueba que la geometría añadida no está contenida por otra geometría existente. Si se superpone una nueva geometría con una geometría existente, se mantendrá la diferencia de las dos. Esta última funcionalidad es apropiada para asegurarse que las nuevas geometrías son topológicamente correctas.

Rendimiento comparado con GeometryService

Si GeometryService se utilizara para tratar todas estas operaciones, cada uno de los métodos y cálculos requeriría solicitudes separadas cada vez que el ratón se mueve. El gran número de peticiones realizadas al servidor (entre dos y siete por movimiento del ratón) frenaría la aplicación y frustraría al usuario. Sin embargo, GeometryEngine elimina las solicitudes de GeometryServer por completo.

Sin tener en cuenta las peticiones de servidor, GeometryEngine también acelera las cosas cuando se utilizan funciones de análisis, tal como Zonas de influencia, Cruzar y unión. Para ilustrar las diferencias en el rendimiento entre los dos módulos, observa la siguiente muestra (construido utilizando la versión 4.0 beta 1 de la API) que compara el tiempo que se necesita para obtener la zona de influencia de 500 puntos con GeometryEngine frente a GeometryService.


En este escenario GeometryEngine puede realizar la zona de influencia de 500 puntos alrededor de 2 a 3 segundos, mientras que GeometryService tarda más de 30 segundos en realizar esta misma tarea, esto ocurre porque las 500 geometrías son enviadas como petición al servidor. Los tiempos que toman GeometryEngine y GeometryService en producir un resultado varía dependiendo del método, el número y complejidad de las geometrías, velocidad de internet y el explorador; en la mayoría de los casos GeometryEngine tiene un mejor rendimiento.

Tenga en cuenta que GeometryEngine no es la solución para todos los problemas, además no reemplaza a GeometryService; dado que este último contiene diversos métodos que no están incluidos en GeometryEngine. Algunos de estos son project, fromGeoCoordinateString, simplify y trimExtend.

Este pendiente a nuevas noticias que exploran los métodos de medición y superposición de GeometryEngine.