这次 SonnetDB Workbench 的升级,表面上是“多了几个下拉框”,实际上是把时序数据的“看懂”这件事往前推进了一大步。
以前你在 SQL Console 里查 position,结果是有了,轨迹却不一定能看;地图有时能出图,有时又会因为底图和坐标系不一致而整体偏掉。现在这套链路被打通了:查询结果、轨迹地图、底图切换、坐标系转换,以及 SQL 内置函数,终于可以一起工作。
先看最常见的一条 SQL:
SELECT time, device, position, speed
FROM vehicle
LIMIT 100;
在新版 Workbench 里,这条语句不再只是返回一列“看起来像对象”的 position。它会在结果区里直接以可读形式展示,并且可以切换到轨迹地图视图,把点、线、起终点一起画出来。
对时序数据库来说,这件事很重要。因为位置数据不是普通字符串,它要同时满足三件事:
这次 Workbench 就是在做第三件事。
新版 Workbench 里,轨迹地图和 SQL Console 地图视图都支持切换瓦片服务商。
现在可以直接在下拉框里选:
这意味着什么?
意味着你不再被单一瓦片源绑住。开发时可以先用最稳定、最顺手的底图;做国内场景时,也可以换成更符合业务习惯的地图服务。
但这里还有一个关键点:不同服务商用的不是同一套坐标系。
如果只换瓦片,不处理坐标,地图看上去就会“飘”。所以这次我们不是只换底图,而是把“数据坐标”也放进了 Workbench。
在 SQL Console 的地图视图里,现在可以选择“数据坐标”。
可选项是:
这件事的逻辑很简单:
Workbench 会根据当前底图自动做投影匹配。你切换瓦片,它就按对应的坐标系重算显示位置。
这意味着什么?
意味着你不需要在应用层自己手写一堆经纬度偏移修正逻辑,也不需要为了不同地图服务商单独维护多套展示代码。你只要告诉 SonnetDB:数据原本是什么坐标,当前要显示给谁看。
这次我们把坐标转换直接做成了内置 SQL 函数,不再只停留在前端展示层。
新增函数包括:
geo_transform(point, from, to)
geo_wgs84_to_gcj02(point)
geo_gcj02_to_wgs84(point)
geo_gcj02_to_bd09(point)
geo_bd09_to_gcj02(point)
geo_wgs84_to_bd09(point)
geo_bd09_to_wgs84(point)
它们的意义很直接:
geo_transform 是通用入口from / to 支持 WGS84、GCJ02、BD09GPS、AMap、Tencent、Baidu 这些别名一个典型例子:
SELECT
geo_wgs84_to_gcj02(position) AS gcj02_position,
geo_gcj02_to_wgs84(geo_wgs84_to_gcj02(position)) AS roundtrip_wgs84,
geo_wgs84_to_bd09(position) AS bd09_position,
geo_transform(position, 'gps', 'baidu') AS bd09_alias
FROM vehicle
WHERE device = 'car-1';
如果你要做国内地图展示,这些函数尤其好用。它们让“数据存储坐标”和“地图显示坐标”分层处理,SQL 负责转换,Workbench 负责渲染,职责清晰,结果也更稳定。
新版轨迹页也一起升级了。
它现在不只是把 LineString 画出来,还会把:
放到同一个交互链路里。
你可以先用一条 vehicle 查询拿到轨迹,再直接切到地图视图看路径;如果你要回放,还能顺着时间轴把轨迹逐帧看过去。
更重要的是,地图底图和数据坐标现在是统一管理的。也就是说,同一份结果,切换 OSM、高德、腾讯、百度时,显示层会自动跟着变,不需要你重新整理查询结果。
如果把这次 Workbench 的变化浓缩成一句话,就是:
SonnetDB 不只是在查地理数据,而是在真正把地理数据“用起来”。
它解决的不是一个单点问题,而是一条完整链路:
GEOPOINT对做 IoT、车联网、物流、巡检、资产定位的人来说,这种能力很实在。你既可以把原始轨迹留在数据库里,也可以在展示和分析阶段灵活转换,不会被地图服务商或者坐标系锁死。
这版 Workbench 的目标不是“把地图做出来”,而是“让地图真的能作为数据的一部分来工作”。
SQL、轨迹、底图、坐标系,现在终于站到了一起。
如果你正在做地理轨迹类应用,这一版 SonnetDB Workbench 值得你直接拿来试一试。