Buscador

Buscador

Nuestro nuevo e-commerce ya está al aire

GeometryEngine Parte 3: Análisis de superposición

Kristian Ekenes, Septiembre 23 de 2015


Esta es la última noticia de esta gran serie acerca de GeometryEngine de la API de ArcGIS para JavaScript. Estas noticias cubren los siguientes temas:

En la primera noticia se realizaron pruebas de las funciones que tiene GeometryEngine, las cuales son útiles para la edición de geometrías en aplicaciones web. Después en la siguiente noticia se exploraron las funciones de medición y de proximidad tales como buffer, área y longitud; además se estableció cuando utilizar la versión plana o la versión geodésica.

En esta última noticia se mostraran los métodos de superposición de GeometryEngine que pueden ser utilizados para realizar análisis espaciales simples en la exploración de datos. Estas funciones de superposición incluyen clip, difference, intersect, union, y symmetricDifference.

El siguiente ejemplo muestra como tres de estas funciones de superposición pueden trabajar juntas para crear una sencilla aplicación que tiene como objetivo conocer el tipo de propietario del suelo de Utah. En resumen, esta aplicación permite a los usuarios hacer clic o arrastrar el ratón a cualquier lugar en el estado de Utah para ver la tierra de propiedad privada y compararla con la tierra pública en un radio de 10 millas, luego se genera un gráfico circular que compara las áreas de cada tipo de tierra.

Si usted quiere conocer las áreas afectadas por incendios o inundaciones dentro de un radio específico, o el hábitat de especies vulnerables o en peligro de extinción dentro del área de influencia de un proyecto; entonces este tipo de aplicaciones le servirán demasiado porque pueden explorar las relaciones espaciales y realizar cálculos preliminares antes de hacer un análisis SIG más robusto.

Ver ejemplo: Superposición en GeometryEngine


Observe la rapidez con la que este proceso se ejecuta. El rendimiento de las aplicaciones varía dependiendo de la complejidad de las funciones involucradas al hacer clic o al arrastrar el ratón. Pero la experiencia sería mucho más lenta si se intentara con GeometryService o con una tarea personalizada de geoprocesamiento.

Esta aplicación usa la geometría de una capa que representa la tierra de propiedad privada en Utah como base para el análisis. Las siguientes funciones se utilizan para producir estos resultados: geodesicBuffer, intersect, union, difference, y geodesicArea. Adicionalmente intersects (Note la ‘s’), within y overlaps son utilizados para verificar la relación espacial entre las entidades y así asegurar que el análisis se lleva dentro del estado de Utah y que los insumos estén en su lugar antes de que se realicen las operaciones de superposición.

Visualicemos el código para saber cómo todos estos métodos trabajan juntos para generar estos resultados.

Flujo de trabajo del ejemplo de superposición

Primero se crea el buffer con geodesicBuffer, en donde la ubicación del mouse es el punto central. El objeto evt almacena el punto del mapa cada vez que se hace clic o se arrastra el ratón.

Ahora tenemos un buffer de 10 millas. Antes de realizar cualquier análisis de superposición, es buena práctica verificar las relaciones espaciales del buffer con los límites de las geometrías (Estado de Utah). En este caso no queremos intentar una superposición si el buffer esta fuera de los límites del estado de Utah, ya que no habrá ninguna entidad para superponer fuera del estado. Además, si el buffer está parcialmente dentro, sólo queremos mantener la parte de la geometría del buffer que se superpone al estado. Si hay una superposición, usaremos intersect para conseguir solamente la intersección de las geometrías.

No se usó clip para encontrar el área común de las geometrías porque este utiliza una de las geometrías de entrada para encontrar el área en común, mientras que intersect utiliza ambas geometrías.

Una vez que conocemos que la geometría del buffer se encuentra dentro de los límites de Utah (o se superpone con ella), podemos proceder con un análisis de superposición para determinar la superficie de terreno público y privado dentro del buffer. En este caso, la capa de propiedad sólo contiene entidades que representan las tierras de propiedad privada, estamos suponiendo que el resto de la tierra es administrada o es de alguna entidad gubernamental. Para hacer el cálculo del área más sencillo, representamos toda la tierra privada como un polígono. Para ello tenemos que fusionar las geometrías entre sí mediante la función union.


Ahora que tenemos un arreglo de geometrías que se intersectan en el buffer se puede proceder con la superposición y el cálculo de área.



La geometría que representa un terreno privado en el buffer, ahora se puede añadir al mapa como un gráfico. El área se puede utilizar para un análisis posterior o para visualización del usuario.

Una vez que tenemos el terreno privado, el área de la tierra pública es fácil de calcular. Hay un número de maneras de hacerlo, pero ya que estamos explorando GeometryEngine, vamos a ver cómo difference puede ayudarnos a encontrar fácilmente este resultado.


Si bien los cálculos del área son buenos no se toman en cuenta otras entidades que afectan el resultado, como cuerpos de agua dentro de la zona de influencia. Para mejorar el análisis, podríamos utilizar difference para eliminar las geometrías de los cuerpos de agua dentro del buffer.

GeometryEngine: Widgets de superposición y análisis

Tenga en cuenta que hay funciones de superposición similares disponibles en la API de ArcGIS para JavaScript como widgets de análisis (Ejemplo: OverlayLayers, CreateBuffers, MergeLayers, etc.)

Estos widgets son muy diferentes a las funciones de superposición en GeometryEngine. Los métodos de GeometryEngine, por ejemplo, sólo ejecutan los procesos en el navegador; eso significa que los desarrolladores pueden crear aplicaciones centradas en la exploración de datos con una experiencia interactiva mejorada para los usuarios. Además, los métodos de GeometryEngine sólo funcionan con geometrías, no con atributos o capas.

Si bien los métodos de superposición de GeometryEngine pueden proporcionar una buena experiencia de usuario en aplicaciones web, que se limitan a la generación de resultados en una sola sesión del navegador. Los widgets de análisis son diferentes porque realizan análisis de capas, que incluyen geometrías y atributos, además de realizar el proceso del lado del servidor. Por lo tanto, los desarrolladores pueden utilizar los widgets de análisis para generar resultados de superposición como feature services dentro de la plataforma ArcGIS. Estos resultados pueden ser perpetuados y consumidos dentro de las aplicaciones web personalizadas y mapas web de ArcGIS Online.

En resumen, GeometryEngine es un poderoso motor del lado del cliente que proporciona a los desarrolladores la capacidad de verificar relaciones espaciales a partir de la geometría; efectuar cálculos de proximidad, áreas y distancias; además realiza superposiciones sencillas. Estos son los métodos fundamentales que hacen que las aplicaciones SIG sean una forma popular de explorar, analizar y resumir los datos.