求交集求解MySQL中两点距离的交集(mysql两点距离)

今天我们来讲一个MySQL里求两点距离的交集的方法,对于获取数据库中两个点之间的距离最为重要,当我们想要计算它们之间的距离,必须解决一个求交集的问题。

比如,在MySQL中,现在有两个表t1, t2,t1和t2中都有经纬度列,假设给定的表表示的是点A(lat_A,long_A)和点B(lat_B,long_B)。现在需要求他们之间的距离。

我们可以用下面的 SQL 语句来求点 A 与点 B 之间的距离:

SELECT

( 6371 * acos( cos( radians( lat_A ) ) *

cos( radians( lat_B ) ) *

cos( radians( long_A ) – radians( long_B ) ) +

sin( radians( lat_A ) ) *

sin( radians( lat_B ) ) ) ) AS distance

FROM

t1, t2

另外也可以用如下的SQL语句用来求解两个表之间的交集:

SELECT

t1.lat_A, t1.long_A, t2.lat_B, t2.long_B,

( 6371 * acos( cos( radians( t1.lat_A ) ) *

cos( radians( t2.lat_B ) ) *

cos( radians( t1.long_A ) – radians( t2.long_B ) ) +

sin( radians( t1.lat_A ) ) *

sin( radians( t2.lat_B ) ) ) ) AS distance

FROM

t1, t2

WHERE

t1.lat_A = t2.lat_B

AND

t1.long_A = t2.long_B

上述SQL语句求得的是两个表之间重叠部分的距离,对于想要得到两个表之间的距离只需要将WHERE子句换成一个范围,如:

WHERE

t1.lat_A > t2.lat_B – 0.001

AND

t1.long_A > t2.long_B – 0.001

AND

t1.lat_A

AND

t1.long_A

用以上的sql语句就可以解决MySQL中两点距离的交集了。


数据运维技术 » 求交集求解MySQL中两点距离的交集(mysql两点距离)