Turf: Análisis espacial en la web

¿Qué es Turf?

Turf es una librería JavaScript para realizar análisis espacial en la web. Sería algo así como el GIS de los mapas web.

Turf incluye operaciones espaciales tradicionales (buffer, TINs, isolíneas…), funciones de ayuda para crear datos en formato GeoJSON y herramientas para clasificar datos y para crear estadísticas.

turf

Turf se puede añadir en una web completamente en el cliente para realizar todas las operaciones o ejecutarse en el servidor con Node.js. El código fuente se encuentra en GitHub.

Se puede conectar fácilmente con Leaflet y además está disponible como un plugin de Mapbox.js

Turf utiliza los datos geográficos en formato GeoJSON y en coordenadas geográficas WGS84 (longitud, latitud), es decir el EPSG:4326.

Cómo usar Turf

Como una librería JavaScript que es, podemos añadir Turf a nuestra web de la misma manera que se agrega Mapbox.js: en la sección <head> del documento. Podemos utilizar el CDN o descargar la fuentes de la librería Turf  de forma local.

Cuando añadimos Turf.js a la web, disponemos de una variable global Turf desde la que podemos ejecutar cualquiera de sus funciones.

A continuación le damos un tamaño al contenedor del mapa, un ancho, un alto y un efecto de sombreado:

Cerramos la cabecera y vamos al cuerpo de la web, donde incluiremos nuestro script:

Como ves necesitamos un token de acceso para acceder a la API de Mapbox.

Crear un punto con Turf

Un punto se basa en un objeto geográfico GeoJSON de tipo Point, en unas coordenadas x e y.

La mayoría de las funciones de Turf trabajan con objetos geográficos GeoJSON. Turf ofrece algunas funciones propias para crear geometrías y evitar el texto plano de un GeoJSON. Por ejemplo, estos dos métodos para crear un punto son funcionalmente equivalentes:

Las propiedades se pueden añadir opcionalmente, en nuestro caso queremos incluir un título, un color para el marcador, y un símbolo.

Para cambiar el estilo de un marcador podemos añadir un simplestyle, que es una especificación para GeoJSON. Con esta convención podemos cambiar claves y valores para añadir o cambiar el color marker-color, símbolo marker-symbolhttps://www.mapbox.com/maki/ y el tamaño marker-size:

A continuación lo añadimos al mapa:

Como mapa base elegimos OpenStreetMap:

Y cerramos el script, el body y el código html:

Por el momento este sería el resultado:

Crear un buffer alrededor de un punto con Turf

Una de las funciones más comunes en GIS es el buffer. Un buffer devuelve una zona de influencia a una distancia especificada de un punto como un objeto geográfico de tipo polígono.

Una vez que hemos creado el punto y lo hemos capturado dentro de la variable point, vamos crear el buffer.

Un buffer necesita una capa de entrada, una distancia para el radio de influencia y la unidad de medida (‘miles’, ‘feet’, ‘kilometers’, ‘meters’, o ‘degrees’).

Añadimos este código:

Y lo añadimos al mapa, por lo que necesitamos modificar el código anterior para incluir tanto la capa de puntos (point), como la nueva capa (buffer) que contiene la geometría con el buffer:

Y este es el resultado:

Herramientas de análisis que incluye Turf

Con turf, podemos hacer casi cualquier tipo de análisis espacial. Las funciones se organizan en grupos para que sean más fáciles de encontrar. Las herramientas más importantes que tiene Turf son las siguientes:

Herramientas de agregación. Nos permiten ejecutar operaciones estadísticas en un conjunto de puntos dentro de un conjunto de polígonos. ¿Quieres comparar el tamaño promedio de las viviendas de la provincia de Barcelona? Podemos utilizar la función de agregación de turf. Las herramientas de agregación son:

Herramientas de medición. Permiten medir distancias, crear objetos geográficos, y calcular tamaños. Con los métodos de medición, no sólo podemos encontrar el centro exacto de la ciudad de Madrid (utilizando turf-centroid), sino que también podemos medir la distancia entre ese punto y el del ayuntamiento (turf-distance). Las herramientas de medición son:

Herramientas de transformación. Con estas herramientas podemos resolver problemas espaciales. Si queremos comprar una casa que esté a menos de 500 metros de un parque y a menos de 1000 metros de una boca de metro, podemos averiguar dónde se superponen esas áreas con turf-intersect, un método de transformación. Las herramientas de transformación son:

Herramientas de datos. Nos permiten filtrar los datos a partir de propiedades o crear datos para testear. Las herramientas de datos son:

Herramientas de interpolación. Con estas herramientas es posible estimar o medir datos y visualizar el resultado. Un ejemplo de esto es la creación de líneas de contorno (o isobandas) de un conjunto de puntos que contienen información de elevación mediante el uso de turf-isobands. Las herramientas de interpolación son:

Las herramientas unión pueden determinar relaciones espaciales entre objetos espaciales. Las herramientas de unión son:

Por último, las herramientas de clasificación pueden clasificar los datos en grupos discretos. Si desea cambiar la propiedad «color» de una serie de features individuales, simplemente, «azul» o «no azul», podemos utilizar el método turf-reclass. Las herramientas de clasificación son:

Conclusión

El análisis espacial es fundamental en todas las industrias. Se utiliza en epidemiología, biología, estadística, economía, comercio y negocios, planificación urbana, la geología, petróleo y gas, y en muchas otras industrias.

Es una alternativa a utilizar un Servicio de Procesamiento Web (WPS) en el servidor. Con Turf.js, ahora podemos llevar estos análisis al navegador del usuario y mostrar los resultados de forma rápida.

Con la mejora en las conexiones de internet y de los navegadores modernos, la tecnología web mapping se está abriendo paso rápidamente. Hace unos años nos preguntábamos si las aplicaciones webmapping sustituirían a los SIG de escritorio y el geoprocesamiento es uno de los aspectos más relevantes para dar respuesta a la pregunta.

Más info, tutoriales y ejemplos

2 comentarios en “Turf: Análisis espacial en la web”

Los comentarios están cerrados.