mobilitydb
概览
| 扩展包名 | 版本 | 分类 | 许可证 | 语言 |
|---|---|---|---|---|
mobilitydb | 1.3.0 | GIS | PostgreSQL | C |
| ID | 扩展名 | Bin | Lib | Load | Create | Trust | Reloc | 模式 |
|---|---|---|---|---|---|---|---|---|
| 1650 | mobilitydb | 否 | 是 | 是 | 是 | 否 | 否 | - |
| 1651 | mobilitydb_datagen | 否 | 否 | 否 | 是 | 否 | 是 | - |
| 相关扩展 | postgis h3 pgrouting postgis pg_polyline q3c pg_sphere pointcloud pg_geohash qdgc pg_eviltransform |
|---|---|
| 下游依赖 | mobilitydb_datagen |
版本
| 类型 | 仓库 | 版本 | PG 大版本 | 包名 | 依赖 |
|---|---|---|---|---|---|
| EXT | MIXED | 1.3.0 | 1817161514 | mobilitydb | postgis |
| RPM | PIGSTY | 1.3.0 | 1817161514 | mobilitydb_$v | postgis36_$v |
| DEB | PGDG | 1.3.0 | 1817161514 | postgresql-$v-mobilitydb | postgresql-$v-postgis-3 |
构建
您可以使用 pig build 命令构建 mobilitydb 扩展的 RPM 包:
安装
您可以直接安装 mobilitydb 扩展包的预置二进制包,首先确保 PGDG 和 PIGSTY 仓库已经添加并启用:
使用 pig 或者是 apt/yum/dnf 安装扩展:
预加载配置:
创建扩展:
用法
来源:仓库 README、MobilityDB 1.3 手册、v1.3.0 版本
MobilityDB 使用时态和时空数据类型扩展 PostgreSQL 与 PostGIS,使车辆轨迹、传感器读数和随时间变化属性等移动对象数据能够高效存储、索引和查询。
关键文档:
入门
MobilityDB 要求 PostGIS。启用两个扩展:
时态类型
MobilityDB 为基础类型提供对应的时态变体:
| 时态类型 | 基础类型 | 说明 |
|---|---|---|
tbool | boolean | 随时间变化的布尔值 |
tint | integer | 随时间变化的整数 |
tfloat | float | 随时间变化的浮点数 |
ttext | text | 随时间变化的文本 |
tgeometry | geometry | 随时间变化的任意几何对象 |
tgeography | geography | 随时间变化的任意地理对象 |
tgeompoint | geometry(Point) | 随时间变化的几何点 |
tgeogpoint | geography(Point) | 随时间变化的地理点 |
tnpoint | 网络点 | 随时间变化的网络点 |
tcbuffer | 圆形缓冲区 | 随时间变化的圆形缓冲区 |
tpose | 姿态 | 随时间变化的点位置和方向 |
trgeometry | 刚性几何对象 | 随时间变化的刚性几何对象 |
MobilityDB 1.3 增加了 tgeometry、tgeography、tcbuffer、tpose 和 trgeometry。tgeometry 与 tgeography 支持离散插值或阶梯插值,不支持任意几何对象的线性插值。1.3 版本说明将 tcbuffer、tpose 和 trgeometry 标记为实验性功能。
时态子类型
每种时态类型都可根据值随时间变化的方式表示为不同子类型:
| 子类型 | 说明 | 示例 |
|---|---|---|
| Instant | 单个时间戳上的单个值 | '25.5@2025-01-01 08:00' |
| Sequence | 一个时间区间上的连续值 | '[25.5@08:00, 28.1@09:00, 30.0@10:00]' |
| SequenceSet | 一组互不重叠的序列 | '{[25.5@08:00, 28.1@09:00], [30.0@11:00, 31.2@12:00]}' |
序列使用方括号表示包含边界 [,使用圆括号表示排除边界 (,与 PostgreSQL 范围类型相同。
创建时态值
瞬时值:
序列值(连续插值):
离散序列(阶梯插值):
序列集值:
从组件构造:
时态操作
提取指定时间的值:
限制到某个时间段:
获取时态值的时间跨度:
时态比较:
时空操作
轨迹:将空间路径提取为几何对象:
速度计算:
轨迹长度:
时空边界框(stbox):
空间限制:区域内的值:
两个时态点之间的距离:
最近接近距离和时间:
索引
MobilityDB 支持 GiST 和 SP-GiST 索引,用于高效执行时态与时空查询。
时态类型(时间维度)的 SP-GiST 索引:
时空类型(空间与时间)的 GiST 索引:
这些索引可加速边界框查询、时态重叠检查和时空相交查询:
示例:车辆跟踪
存储和查询车辆 GPS 轨迹的完整示例:
示例:时空相交查询
查找在给定时间窗口内经过特定区域的所有行程:
聚合函数
MobilityDB 提供时态聚合函数:
注意事项
- 目录中的软件包名和扩展名都是
mobilitydb,版本为1.3.0;打包矩阵面向 PostgreSQL 14 到 18,并要求postgis。 - v1.3.0 增加 PostgreSQL 18 和 PostGIS 3.6 支持,但迁移说明指出二进制格式相较 MobilityDB 1.2 已改变,因此从 1.2 升级需要备份并恢复。
- 上游源码构建说明展示了在加载 MobilityDB 前设置
shared_preload_libraries = 'postgis-3'和max_locks_per_transaction = 128。对于未使用打包默认值的集群,请验证这些设置。 - 本地软件包元数据仍带有整理备注
need another schema;上游文档未确认必须使用单独模式,因此在该备注解决前应避免给出特定模式的指导。