Mysql 避免 GPS 问题的查询

Mysql query to avoid GPS issues

我每 10 秒从设备中记录一次位置,并将其存储到 mysql table 中,其中包含以下字段:

CREATE TABLE `schedules_trackings` (
  `id` bigint(20) NOT NULL,
  `device_id` bigint(20) UNSIGNED NOT NULL,
  `schedule_id` bigint(20) UNSIGNED NOT NULL,
  `latitude` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `longitude` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `altitude` double DEFAULT NULL,
  `accuracy` double DEFAULT NULL,
  `heading` double DEFAULT NULL,
  `speed` double DEFAULT NULL,
  `activity` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `battery` double DEFAULT NULL,
  `segmentid` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `uuid` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `odometer` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

有时某些设备会丢失 gps 信号或出现 gps 故障,这会导致在将数据加载到 google 地图中时出现问题,这些地图绘制的直线距离道路很远。

我没有在互联网上找到解决方案,但我的想法是……如果我检查下一个坐标和上一个坐标之间的距离,并从结果记录中排除距离超过 300 米的距离,我认为会解决这个问题问题。

这是一个好的解决方案?如何构建如此复杂的查询?

根据我的评论,你有一个纬度和一个经度。

除了靠近两极的位置,您需要做的就是询问新纬度是否合理地接近旧纬度,以及新经度是否合理地接近旧经度(的模数)。您不需要计算点之间距离的开销。

我猜想对于地球上大多数适合居住的地方来说,经度(模数)的误差幅度为正负 0.01,纬度的误差幅度为正负 0.005 是可以接受的