MySQL如何计算同一张表中同一用户相邻两行之间的地理距离,已知经纬度……
来源:学生作业帮 编辑:神马作文网作业帮 分类:数学作业 时间:2024/10/05 21:23:03
MySQL如何计算同一张表中同一用户相邻两行之间的地理距离,已知经纬度……
数据格式如下,要求出同一个用户的记录中相邻两行的地理距离,注意是计算同一个用户的相邻两行涉及到的距离,感激不尽!
user_id latitude(纬度) longitude(经度)
0 23.5423646546 -114.5423646546
0 24.4654562364 -114.0975782943
0 23.2364465456 -113.2364652943
1 34.4792402476 -118.4578236465
1 34.8798675432 -117.2364678438
最好在MysQL中实现,如果效率太低的话,在Matlab实现亦可,
数据格式如下,要求出同一个用户的记录中相邻两行的地理距离,注意是计算同一个用户的相邻两行涉及到的距离,感激不尽!
user_id latitude(纬度) longitude(经度)
0 23.5423646546 -114.5423646546
0 24.4654562364 -114.0975782943
0 23.2364465456 -113.2364652943
1 34.4792402476 -118.4578236465
1 34.8798675432 -117.2364678438
最好在MysQL中实现,如果效率太低的话,在Matlab实现亦可,
实现的话,貌似主要是两个环节
1 先得到用户的两个相邻点的经纬度.
先把表处理成带唯一标识字段的(uid),便于下一步取出经纬度.表T(uid,user_id,latitude,longitude)
生成一个视图,取得两个相邻点经纬度.
create view vt as
select A.user_id,A.latitude latitudeA,A.longitude longitudeA
,B.latitude latitudeB,B.longitude longitudeB
from T A inner join T B
ON A.user_id=B.user_id AND A.uid
再问: 非常感谢您的回答!
您的意思是说,我一定要加一个自增的字段uid是吗?如果加的话怎么加啊,直接alter表可以不?还有就是有没有可能在不改变表结构的情况下实现呢?谢谢!
再答: 1 加自增字段是为了生成每两行记录形成的经纬度,可以创建另一个表来做(如果加字段影响原系统的设计)。
2 不改变表结构的话,可以使用动态生成行序号的方法,但必须在一个查询中完成包括计算距离的实现(因为mysql视图暂不支持在视图中使用变量和子查询),可以试试。以下是类似参考
xx 表示那个计算列
select A.*,B.*, xx
from
(
select
(@rownum := @rownum + 1 ) AS rownum
,a
,b
from tb,(select @rownum:=0) t
) A INNER JOIN
(
select
(@rownum2 := @rownum2 + 1 ) AS rownum
,a
,b
from tb,(select @rownum2:=0) t
) B
ON A.a=B.a AND A.rownum < B.rownum
1 先得到用户的两个相邻点的经纬度.
先把表处理成带唯一标识字段的(uid),便于下一步取出经纬度.表T(uid,user_id,latitude,longitude)
生成一个视图,取得两个相邻点经纬度.
create view vt as
select A.user_id,A.latitude latitudeA,A.longitude longitudeA
,B.latitude latitudeB,B.longitude longitudeB
from T A inner join T B
ON A.user_id=B.user_id AND A.uid
再问: 非常感谢您的回答!
您的意思是说,我一定要加一个自增的字段uid是吗?如果加的话怎么加啊,直接alter表可以不?还有就是有没有可能在不改变表结构的情况下实现呢?谢谢!
再答: 1 加自增字段是为了生成每两行记录形成的经纬度,可以创建另一个表来做(如果加字段影响原系统的设计)。
2 不改变表结构的话,可以使用动态生成行序号的方法,但必须在一个查询中完成包括计算距离的实现(因为mysql视图暂不支持在视图中使用变量和子查询),可以试试。以下是类似参考
xx 表示那个计算列
select A.*,B.*, xx
from
(
select
(@rownum := @rownum + 1 ) AS rownum
,a
,b
from tb,(select @rownum:=0) t
) A INNER JOIN
(
select
(@rownum2 := @rownum2 + 1 ) AS rownum
,a
,b
from tb,(select @rownum2:=0) t
) B
ON A.a=B.a AND A.rownum < B.rownum
MySQL如何计算同一张表中同一用户相邻两行之间的地理距离,已知经纬度……
MySQL如何计算同一张表中相邻两行之间的时间差
利用经纬度计算两地之间的距离
怎么计算两个经纬度之间的距离.
经纬度计算两点之间距离
请问如何根据两地不同的经纬度来计算它们之间的直线距离?
如何根据两个地点的经纬度坐标计算两地之间的距离
在同一幅图上相邻两条等高线之间的高差是相同的,这个高差叫什么?
在同一幅地图上相邻两条等高线之间的高差是相同的,这个高差叫什么
在同一副等高线地图上,任意相邻两条等高线之间的海拔差(既等高距)是什么?
两颗星在相互引力的作用下绕同一中心做匀速圆周运动,这两颗星称为“双星”.已知两颗星的质量分别为m1、m2,两星之间的距离
概率论的题一个工人负责n台同一类型机床的维修,这n台机床从左到右排列在一条直线上,相邻两台之间的距离都等于a,工人对某一