mysql计算附近的地铁站 财富值36

2016-10-21 19:05发布

如图有两张表,小区表(xiaoqu)和地铁表(metro),现在小区表里面小区附近的地铁站(图片中红色字段)是空的。想批量完善这个字段,求助
附近的定义是:离小区最近,并且在1000米以内的一个地铁站。
例如:北京的华腾园小区,附近1000米有双井和劲松两个站,但是劲松距离较近,所以华腾园那一行对应的就是劲松站。

目前已经自定义了两个经纬度之间距离的函数。getdistance(纬度1,经度1,纬度2,经度2),函数代码如下:

-- getdistance(Lat1 ,Lon1,Lat2 ,Lon2) BEGIN      DECLARE         dis DOUBLE ;     SET dis = ACOS(         SIN((Lat1 * 3.1415) / 180) * SIN((Lat2 * 3.1415) / 180) + COS((Lat1 * 3.1415) / 180) * COS((Lat2 * 3.1415) / 180) * COS(             (Lon1 * 3.1415) / 180 - (Lon2 * 3.1415) / 180         )     ) * 6370996.81; RETURN dis ; END
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答

我去做的话:

我觉得这种不应该用SQL去实现。

mishen - whatsns产品经理
3楼-- · 2016-10-21 19:41

获取小区信息,获取属于哪座城市

我觉得效率的关键在于计算、比较距离这块。

SQL应该是用来存储和获取数据的,不应该承载太多逻辑功能

我的思路是:获取目标点坐标->以一定范围r来查看地铁表中哪些地铁在r中,如果有,进行比较距离,如果没有增大r,重复直到r距离超过最大范围->结束。

然后可以用各种算法(或规则,例如你上面的方法)计算最近地铁。

SQL当前城市地铁数据搜出来。

一周热门 更多>