FAQ
轨迹采样&绘制
轨迹数据通常是时间序列的经纬度点 (t, lon, lat, [speed, heading, …])。直接使用所有点会造成数据量巨大、绘制卡顿、噪声过多,因此需要采样
轨迹采样
- 按时间采样: 固定时间间隔采样
- 按距离采样: 移动距离超过阈值时才记录新点,适合速度变化大的场景
- 按变化采样: 综合考虑方向变化、速度变化、时间等,当轨迹发生显著改变时才采样
轨迹处理
- 坐标转换: 例如 WGS84 → GCJ02 / BD09
- 速度 / 加速度计算
- 留点检测
- 异常过滤
- 分段: 根据停留点或方向大转弯将轨迹切分成多段
后处理
对于已经保存好的数据,可采用轨迹简化算法(DPA)
绘制
根据轨迹数据绘制
Bing 地图的为什么要使用 Quadkey
Quadkey 基于 四叉树(Quadtree)对地图瓦片进行编码,核心是将瓦片的 (x, y, zoom) 三维坐标映射为一个定长字符串
function tile2quad(x: number, y: number, z: number) { let quad = ""; for (let i = z; i > 0; i--) { let digit = 0; const mask = 1 << (i - 1); if ((x & mask) !== 0) digit += 1; if ((y & mask) !== 0) digit += 2; quad = quad + digit; } return quad;}优势
- 层次化空间索引:前缀即父瓦片,对聚合查询尤其高效。不需要额外的空间索引表来维护父子关系,字符串本身即关系,例如
# 不同缩放级别的同一地理区域共享 quadkey 前缀zoom=10: "0312230110"zoom=12: "031223011012"- 分布式友好:Quadkey 天然适合做 Hash 分片
- 存储高效:/a{quadkey}.jpeg 比 /0/0/0/ 更加高效,没有多级目录
- 隐私友好:在日志或分析系统中,可以用 quadkey 代替精确坐标,不用暴露的精确坐标