MobilityDB: extensión de PostGIS para objetos en movimiento

MobilityDB es un programa de código abierto que añade soporte para objetos temporales y espacio-temporales a la base de datos relacional de objetos PostgreSQL y su extensión espacial PostGIS.

MobilityDB cumple con la especificación Moving Features del Open Geospatial Consortium (OGC).

MobilityDB

Técnicamente, MobilityDB se implementa como una extensión externa de PostgreSQL.

La función principal de MobilityDB es la de almacenar y consultar eficientemente las trayectorias de movilidad, como las trayectorias GPS del vehículo. Está diseñado a partir de PostgreSQL y PostGIS, proporcionando una gestión de datos espacio-temporal a través de SQL. Se integra en el ecosistema postgreSQL permitiendo arquitecturas complejas como el procesamiento de flujo de movilidad y desarrollos en la nube.

MobilityDB nos proporciona un amplio conjunto de funciones y operadores para realizar diversas operaciones en tipos temporales. En general hay tres clases:

  • Funciones  y operadores para tipos de tiempo y tipos de rango: los operadores en los tipos base (como operadores aritméticos, relaciones espaciales y distancia para geometrías) son  generalizados intuitivamente cuando los valores evolucionan en el tiempo. Las funciones espacio-temporales en MobilityDB generalizan las funciones espaciales proporcionadas por PostGIS para los tipos de «geometry» y «geography», por ejemplo, «ST_Intersection». Básicamente, MobilityDB se ocupa de los aspectos temporales y delega el procesamiento espacial a PostGIS.
  • Funciones y operadores temporales: procesan la dimensión temporal del valor que puede ser un instante, un rango, una matriz de instantes o una matriz de rangos.
  • Funciones y operadores espacio-temporales: todas las funciones restantes entran en esta categoría. Los ejemplos son velocidad (tgeompoint / tgeogpoint), azimut (tgeompoint / tgeogpoint), maxValue (tfloat / tint), twAvg (tfloat) un promedio ponderado en el tiempo, etc.

Tanto los índices GiST como SP-GiST se han ampliado para admitir los tipos temporales. El índice GiST implementa un árbol R para tipos alfanuméricos temporales y un árbol TB para tipos de puntos temporales. El índice SP-GiST implementa un Quad-tree para tipos alfanuméricos temporales y un Oct-tree para tipos de puntos temporales.

El enfoque utilizado para desarrollar índices SP-GIST nos permite agregar índices SP-GIST para geometrías bidimensionales, tridimensionales y n-dimensionales en PostGIS.

Ejemplos de consultas y operaciones que podemos realizar

Disponemos de un conjunto de datos con información de trayectos:

Calculamos el número máximo de viajes simultáneos durante todo el período:

SELECT maxValue(tcount(Trip)) 
FROM Trips;

-- 141

Tasa de muestreo promedio:

SELECT AVG(duration(Trip)/numInstants(Trip)) 
FROM Trips;

-- "03:43:01.695539"

Distancia total recorrida en kilómetros de todos los viajes:

SELECT SUM(length(Trip)) / 1e3 as TotalLengthKm 
FROM Trips;

-- 10074.8123345527

Duración promedio de un viaje:

SELECT AVG(duration(Trip)/numInstants(Trip)) 
FROM Trips 
WHERE length(Trip) > 0;

-- "00:00:01.861784"

 

Más info

1 comentario en «MobilityDB: extensión de PostGIS para objetos en movimiento»

  1. Hola Aurelio, soy José D. Hernández, desde la CdMx.
    Te felicito por compartir tus conocimientos y experiencias, me parecen muy interesantes tus publicaciones, invitan a la reflexión y despiertan el interés por el uso y explotación de estas tecnologías

    Soy Doctorante en alta dirección, Master en Administración de negocios y mercadologo, fui líder de proyecto, diseñador y usuario del GIS de Citi Group Banamex, desde 1994 hasta el 2014, realizando varios proyectos y utilizando dichas herramientas y
    ahora soy consultor de empresas y conferenciante en el tema de GeoMarketing y negocios.

    Felicitaciones!!!

Los comentarios están cerrados.