Un vistazo a las capacidades GIS
Onesait Platform está preparada para soportar, procesar y representar datos con componente espacial.
Para ello, hace uso de diversas tecnologías y herramientas:
- 1 Bases de datos
- 2 Soporte en las Entidades
- 3 Servidor GIS
- 3.1 Geoserver
- 4 Servicios GIS
- 5 Librerías de visualización de mapas
- 5.1 Leaflet
- 5.2 OpenLayers
- 5.3 CesiumJS
- 6 Herramientas de visualización de mapas
- 6.1 Gadgets de mapas
- 6.1.1 Gadget Map
- 6.1.2 Gadget MapCharts
- 6.1.3 Plantillas de Gadget
- 6.2 Visores y capas GIS
- 6.2.1 Capas GIS
- 6.2.2 Visores GIS
- 6.1 Gadgets de mapas
- 7 Proyectos de mapas
- 8 Análisis geoespacial
- 8.1 Notebooks
- 8.2 Librerías de front-end
- 8.3 Machine Learning
- 8.4 Flow Engine
- 8.5 PostGIS
- 9 Portal de datos abiertos
Bases de datos
Entre los diversos motores de persistencia soportados por Onesait Platform se encuentra PostgreSQL, el cual cuenta con capacidades geoespaciales gracias a la extensión de PostGIS. Con ella, es posible almacenar, consultar y manipular datos con componente espacial mediante SQL.
Esta extensión es compatible con los estándares del OGC (Open Geospatial Consortium), y proporciona tipos de datos espaciales (geometría) y funciones para el análisis y la cartografía, así como índices multimensionales (como los basados en R-Tree y GiST) para procesar consultas espaciales de forma eficiente.
Soporte en las Entidades
A la hora de definir el modelo de datos de una Entidad, se cuenta con una serie de tipos de datos específicos para almacenar datos geoespaciales. Concretamente, se almacena el tipo de geometría y las coordenadas de la geometría, siguiendo el formato GeoJSON, definido como tal en la especificación RFC7946.
{
"type": "Feature",
"geometry": {
"type": "Point"
"coordinates": [
-3.6415,
40.5291
]
}
}Se soportan las siguientes geometrías:
Point.
LineString.
Polygon.
MultiPoint.
MultiLineString.
MultiPolygon.
Éstas son seleccionables desde el desplegable de tipos de datos:
Estos tipos de datos generar el correspondiente esquema JSON para almacenar los datos en formato GeoJSON:
Así, generando una instancia de ejemplo, los datos se mostrarán de la siguiente forma:
Respecto a las propiedades asociadas a la geometría, una instancia de tipo «Feature» de un GeoJSON las incluye dentro de un objeto «properties». Por ejemplo:
{
"type": "Feature",
"geometry": {
"type": "Point"
"properties": {
"id": "1",
"name": "Sede",
"value": 2025
}
"coordinates": [
-3.6415,
40.5291
]
}
}En el caso de las Entidades, si bien es posible crear datos de tipo «objeto» en donde añadir las propiedades, se recomienda almacenarlas en la raíz de la instancia, para facilitar su gestión con las diferentes herramientas de la Plataforma (consultas, API REST, etc.).
Por ello, el ejemplo anterior quedaría definido de la siguiente forma:
Y la instancia de ejemplo se vería así:
A la hora de consumir esta Entidad, la estructura de datos no supondría ningún problema pues tanto en las API REST como en los DataSources, es posible procesar la respuesta para añadir estas propiedades a un objeto «properties», devolviendo una estructura de tipo «Feature».
Servidor GIS
La Plataforma es compatible con diferentes servidores GIS para que los usuarios puedan publicar, gestionar y compartir datos geográficos a través de una aplicación web.
Como servidor de referencia se usa GeoServer.
Geoserver
GeoServer es un servidor de código abierto para compartir datos geoespaciales, el cual implementa diferentes protocolos de la OGC para la interoperatibilidad.
Dichos protocolos son:
Web Map Service (WMS): para servir capas como imágenes.
Web Map Tile Service (WMTS): para servir capas como imágenes cacheadas.
Web Feature Service (WFS): para servir y editar datos vectoriales (usando el formato GeoJSON).
Web Coverage Service (WCS): para servir datos raster.
OGC API: para habilitar espacialmente las API web de forma coherente. OpenAPI se utiliza para definir los bloques de construcción API reutilizables con respuestas en JSON y HTML.
GeoTIFF: para compartir imágenes georreferenciadas o geocodificadas.
GPKG: para almacenar características vectoriales, conjuntos de matrices de mosaicos de imágenes, conjuntos de matrices de mosaicos de mapas ráster y datos tabulares no espaciales en una base de datos SQLite.
Este servidor se conecta a diferentes fuentes de datos espaciales; desde archivos shapefile (formato estándar GIS) a bases de datos, como PostGIS. El servidor disponibiliza la información para su consumo en aplicaciones cliente, como navegadores web, visores de mapas web, Notebooks (GeoPandas) o herramientas GIS de escritorio (ArcGIS, QGIS, GRASS GIS, etc.).
Servicios GIS
Onesait Platform es compatible con diferentes servicios GIS, tanto propios como externos, como pueden ser geocodificación (geocoding) directa e inversa, o enrutamiento geográfico (georouting).
La Plataforma es capaz de consumir las API REST de estos tipos de servicios, realizando llamadas parametrizadas con las consultas, recuperando los resultados, y almacenando y representando dichos resultados según se requiera.
Estos servicios se integran tanto a nivel de orquestación de flujos, como uso directo desde visualizadores de mapas, Gadgets, e incluso como herramientas disponibles para agentes de inteligencia artificial.
Geocodificación
Se ha trabajado ampliamente con Nominatim, el servicio de geocodificación directa e inversa de OpenStreetMaps.
La geocodificación directa permite obtener las coordenadas de una dirección a nivel global, ya sea de un portal, una calle, una zona, etc. La información es accesible mediante la API REST de la que dispone Nominatim, pudiendo filtrar la información según la necesidad.
En el caso de la geocodificación inversa es algo similar; a partir de una coordenada, se obtiene la información de dirección. Dependiendo de la resolución de los datos en dicha coordenada, se obtendrá mayor o menor información.
Enrutamiento geográfico
En este caso se ha trabajado diversos servicios de rutas, los cuales permiten calcular de manera rápida y sencilla las rutas de circulación entre un punto de origen y un destino, incluyendo puntos intermedios, caminos bloqueados, matrices de transporte, forma de viaje, etc.
Como en el caso anterior, estos servicios funcionan con API REST, las cuales se integran perfectamente con los diversos módulos de la Plataforma.
Librerías de visualización de mapas
Se cuenta con diferentes visualizadores de mapas basados en JavaScript, los cuales se usan según las necesidades y finalidad en cada momento:
Leaflet.
OpenLayers.
CesiumJS.
Leaflet
Para representar datos de forma rápida y sencilla se hace uso de Leaflet, una sencilla librería de código abierto que permite visualizar en un mapa 2D de alta resolución datos singulares o capas de datos.
Este tipo de visor se utiliza principalmente en los Gadgets de los Dashboards, recibiendo la información desde DataSources de Entidades para su representación directa.
OpenLayers
A la hora de representar muchas capas y datos en 2D, se cuenta con visores de la librería de OpenLayers, los cuales cuentan con diversas extensiones que amplían su potencial.
Estos visores reciben sus datos tanto de DataSources de Entidades como de llamadas a servicios API REST, servicios OGC y otras fuentes. Esta librería se usa principalmente en los Proyectos de Mapas y en las plantillas de Gadgets de los Dashboards.
CesiumJS
En el caso de que se tengan que representar muchos datos en pantalla (del rango de cientos de miles a millones de datos), o que la información a representar sea en 3D, se hace uso de la librería CesiumJS.
Este tipo de visor permite también representar series de datos temporales, así como mostrar capas sobre y debajo de la superficie (minería, líneas de Metro, etc.). Además, cuenta con funcionalidades para realidad virtual (VR), compatibilidad con motores como Unity o Unreal, etc.
Este tipo de visor se usa principalmente en los Visores GIS y plantillas de Gadgets de los Dashboards, recibiendo sus datos de Entidades, servicios externos y assets de Cesium Ion.
Herramientas de visualización de mapas
Onesait Platform cuenta con una serie de herramientas que permite visualizar mapas con datos geoespaciales. Estos son:
Gadgets de mapas
En los Dashboards se cuenta con diversos Gadgets predefinidos para generar mapas sencillos en los que visualizar los datos de tipo punto de las Entidades y los Dashboards.
Gadget Map
Este es el Gadget que había por defecto, basado en Leaflet, para representar mapas en los Dashboards. Para configurarlo, únicamente se tiene que indicar los campos de longitud y latitud, el campo con el identicador único, y la información a mostrar en el popup de selección.
Gadget MapCharts
Este Gadgets es una evolución del anterior. La libreria que usa es la de OpenLayers, y permite entre sus opciones la configuración de un icono representativo para las geometrías, configurar la selección de elementos, etc.
Plantillas de Gadget
Con las plantillas de Gadgets, el usuario puede desarrollar su propio código para generar un visor de mapas usando cualquier librería, ya sea usando las versiones estables (LTR) integradas en la propia Plataforma, o enlazando a la red de entrega de contenido (CDN) de la librería, o incluso subir una versión a los WebApp.
Esta opción permite representar otras geometrías, como líneas o polígonos.
Visores y capas GIS
Estas herramientas permiten crear visores de mapas y capas de datos de manera rápida y sencilla.
Capas GIS
Es posible crear capas de datos a partir de Entidades, o desde fuentes externas.
Las capas desde una Entidad permite disponibilizar los contenidos de una Entidad que tenga un campo de geometría como una capa de mapa en formato GeoJSON.
Las capas externas, por otro lado, permiten generar una capa de mapa usando recursos externos, como puede ser un servicio WMS, un MapServer de ArcGIS Server, un Asset de CesiumIon (edificios 3D de una ciudad, por ejemplo), o incluso imágenes o archivos KML.
Visores GIS
El asistente de creación de los visores GIS permite generar un mapa de manera rápida y directa. Se tendrá que indicar una latitud y longitud de inicio, definir una altura de cámara (cerca o lejos de la superficie), el mapa base que se quiere utilizar de un abanico de posibilidades, y cargar las capas en el mapa:
Estos visores incorporan, en su modo de edición, de una pantalla partida en donde se visualiza el código del visor y el mapa.
Este código es modificable, permitiendo aumentar las capacidades del visor según las necesidades. Esta opción da un gran potencial a estos visores para su expansión y adaptación a los requerimientos del cliente.
Proyectos de mapas
Onesait Platform cuenta con una librería avanzada basada en OpenLayers para el desarrollo de proyectos complejos en los que se requieren una alta interoperatibilidad de tipos de capas, geoprocesamientos sencillos y visualización de múltiples mapas interconectados.
Esta librería se basa en un archivo de configuración centralizado, en formato JSON, a partir del cual se define cómo será el proyecto, qué mapas lo compondrán, qué capas tendrá cada mapa y qué simbología usará.
Además, permite configurar qué sistemas de proyección se usarán, permitirá configurar servicios de geocodificación y enrutado geográfico, selección por atributos o geometría, etc.
Como ejemplo de uso, se cuenta con dos visores de mapas -uno en Vue2 y otro en Angular- desarrollados con esta librería para mostrar sus capacidades.
Análisis geoespacial
Todo sistema de información geográfica (GIS) se fundamenta en el análisis geoespacial. Es por ello que la Plataforma cuenta con diferentes herramientas para realizar análisis geoespaciales y llevar a cabo geoprocesamientos GIS.
Notebooks
Se pueden preparar Notebooks para realizar los análisis geoespaciales. Estos pueden ser invocados mediante una llamada API REST, pasándole unos parámetros, llevando a cabo el procesamiento, y devolviendo al visor de mapas un resultado, que puede ser pintado o utilizado según se requiera.
Estos Notebooks pueden cargar diferentes librerías de análisis, como puede ser el caso de GeoPandas.
Librerías de front-end
Si se requiere un análisis sencillo sin contar con un soporte desde back-end, es posible ejecutar análisis en caliente sobre el lado del cliente.
Un ejemplo de este tipo de librerías es Turf.js, una librería basada en JavaScript que permite realizar sencillos geoprocesamientos.
Machine Learning
Es posible integrar algoritmos de inteligencia artificial en los visores de mapas para llevar a cabo tareas de aprendizaje profundo. Para ello, se hace uso de las herramientas de Machine Learning de la propia Onesait Platform, tomando como parámetros los datos de las capas.
Flow Engine
El módulo de Flow Engine, basado en Node-RED, permite orquestar flujos de trabajo. Esto permite generar geoprocesamientos sencillos al más puro estilo de ModelBuilder de ESRI, extrayendo datos de Entidades o parámetros de entrada del propio visor de mapas, procesar el análisis, y devolver una respuesta al visor.
PostGIS
Partiendo de que los datos están en PostgreSQL, es posible realizar geoprocesamientos y análisis complejos utilizando la extensión de PostGIS mediante consultas SQL.
Portal de datos abiertos
Como portal de datos abierto, desde donde consultar y descargar datos GIS, Onesait Platform cuenta con CKAN, una plataforma de gestión de datos que permite a gobiernos y organizaciones publicar, compartir, encontrar y utilizar datos de manera eficiente.
Esta plataforma tiene incluida una extensión para interpretar y gestionar datos geoespaciales, haciéndolo compatible con mapas y formatos típicos de GIS, como puede ser shapefile.
Este portal, que permite definir roles y usuarios para limitar el acceso a los datos, hace uso del módulo de Identity Manager de la Plataforma para gestionar la autenticación y los roles mediante los dominios de seguridad.