资讯动态

SonnetDB:地理距离的单位与方位角的方向

发布时间:2026/10/23 9:15:07 来源:尧图企业网站定制
本文介绍 SonnetDB geo_distance() 与 geo_bearing() 的输入、单位和方向重点区分球面距离、初始方位与实际行驶路线。两个函数都接收地理点当前函数注册为两个参数的内置标量函数。geo_distance(p1, p2) 读取两个 GEOPOINT 并计算 Haversine 距离返回米geo_bearing(p1, p2) 根据起点、终点经纬度计算方位角返回以度表示、规范化到 [0, 360) 的数值。SQL 的 POINT(lat, lon) 是纬度在前、经度在后。数据必须先具备明确且一致的坐标系不能把 GCJ-02、BD-09 坐标仅改名就作为 WGS84 输入。查询时明确哪一个点是起点假设 vehicle 已有 device TAG 与 position GEOPOINT FIELDSELECTtime,device,position,geo_distance(POINT(39.90,116.40),position)ASdistance_m,geo_bearing(POINT(39.90,116.40),position)ASbearing_degFROMvehicleWHEREdevicetruck-01ORDERBYtimeLIMIT100;这里的参考点在第一个参数记录位置在第二个参数。距离比较的是两点间的球面距离方位角则表达从参考点指向记录位置的初始方向。调换两个参数时不能假定初始方位角保持不变或只需在所有情形下机械加 180 度。米、角度与道路里程不同Haversine 距离不是沿道路导航的路线长度也不包含道路通行、限速或交通信息。方位角是方向量不是速度或转弯规划结果。需要实际里程、导航路线或车辆姿态时应由相应数据与服务单独验证。相同点、极区、跨经线以及接近对跖点等边界应加入业务测试。公式能够返回数值不自动证明该数值在所有特殊位置都有适合导航的方向含义。过滤范围和结果计算分别核对SELECTtime,device,position,geo_distance(POINT(39.90,116.40),position)ASdistance_mFROMvehicleWHEREgeo_within(position,39.90,116.40,5000);geo_within 的圆心以纬度、经度标量提供半径单位同样为米。当前实现按 Haversine 距离是否小于等于半径判断不能把它描述为仅做网格粗筛而没有逐点空间检查。适用字面量空间谓词可利用当前段内 geohash 范围剪枝最终仍校验原谓词。是否实际剪枝、扫描了多少数据以及节省多少时间需要运行证据不从函数名称推定。本文删除原稿未经本轮运行支持的城市距离和角度结果、嵌套窗口聚合与性能承诺。封面仅示意 A 到 B 的距离和方位不是地图或数据库运行截图。依据 2026-10-21 当前源码审阅本轮未执行 SQL、设备、地图、性能或生产测试。依据FunctionRegistry.cs、GeoPoint.cs 与 地理空间指南。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑