mysql 经纬度数据 计算距离

leeKitty 2016-06-08 02:18:01
数据库中存了 经纬度信息 id 是设备信息 reportTime 时间信息
我需要 按照 设备ID 处理经纬度 计算里程 然后累加到一起 最后得到 从几点到几点 哪个设备 里程是多少


因为 设备ID 有多条经纬度信息
也就是每一次 后面的经纬度信息 和前一条 进行计算距离 然后累加到一起
sql语句 怎么写
很急
谢谢大神
...全文
640 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhu19774279 2016-06-12
  • 打赏
  • 举报
回复
如果表结构不能改,还是建议放到外部程序处理 如果表结构能改,可以考虑试试MySQL的MySQL Spatial Extensions,可以用GLength计算line的长度。
道玄希言 2016-06-10
  • 打赏
  • 举报
回复
你这最好还是放程序中来计算了. 按照 reportTime 升序排序取出设备经纬度信息, 然后计算相邻两点的距离; 最后将计算的距离累加; 经纬度转距离的公式在SQL里面表示会比较复杂.
九月茅桃 2016-06-09
  • 打赏
  • 举报
回复
难在这个地方:也就是每一次 后面的经纬度信息 和前一条 进行计算距离 然后累加到一起 。 这个需要写多条sql语句,需要存储函数来实现。简单的一条sql是搞不定的。 打个比方: 这个设备ID,按照时间排序,做一个游标遍历: 1,取出第一条记录,第一个经纬度,然后根据第一条记录的id来获取后面的经纬度,计算下第一条记录的行程。 2,遍历取出第二条记录,第二个经纬度,然后根据第二条记录的id来获取后面的经纬度,计算下第二天记录的行程。 3...... 4,遍历取出最后第N条记录,然后根据第N条的记录来获取后面的经纬度,计算机出行程。 然后在遍历过程中,行程累计加上来。就得到了这个设备的总行程。 大概思路就这样,细节方面怎么写还需要你自己琢磨了,都是简单的sql语句,不难的,就是逻辑复杂点,需要写很多这样的简单的sql语句。 PS:然后你可以将表以及数据准备得完整一些,比如create table的sql,insert into table的sql语句等等,这样子。我们好方便写存储函数来给你弄。
ACMAIN_CHM 2016-06-08
  • 打赏
  • 举报
回复
建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。 参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382 1. 你的 create table xxx .. 语句 2. 你的 insert into xxx ... 语句 3. 结果是什么样,(并给以简单的算法描述) 4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL) 这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
LongRui888 2016-06-08
  • 打赏
  • 举报
回复
那要写个函数,来计算两个坐标点之间的距离。

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧