根据经纬度,计算亮点之间的距离


代码片段

BEGIN
	#根据两点的经、纬度值获取两点距离
	#返回值为米
	#eg.28.199607, 112.983135 28.199559, 112.98556 两点距离大约为237米
	DECLARE R,distance,dLat,dLon,a double;
	SET R = 6371.0,distance = 0.0,dLat = (lat2 - lat1)*PI() /180,dLon = (lon2 - lon1)*PI() /180;

	SET a = SIN(dLat/2)*SIN(dLat/2) + COS(lat1*PI()/180) *COS(lat2*PI()/180) *sin(dLon/2)*SIN(dLon/2);
	SET distance = floor((2*ATAN(SQRT(a),SQRT(1-a)))*R*1000);
	RETURN distance;
END


根据距离限制进行排序

		SELECT
			id,
			name,
			lat,
			lon,
			szm,
			kpy,
			type,
			getDistatce(lat,:lat,lon,:lon) AS meters
		FROM
			region
		WHERE 
			status = '0' AND 
			getDistatce(
				lat,
				:lat,
				lon,
				:lon
			) < :meters 
			 
		ORDER BY 
			meters 
		


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值