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 是可以接受的
我每 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 是可以接受的