基于sqlserver 实现查询两个经纬度之间的距离
来源:互联网 发布:java重写hashcode方法 编辑:程序博客网 时间:2024/06/06 04:46
查询两个经纬度之间的距离,可以实现按照距离排序。
--通过经纬度计算两点之间的距离 ALTER FUNCTION [dbo].[fnGetDistanceNew] --LatBegin 开始维度 --LngBegin 开始经度 --29.490295,106.486654,29.615467, 106.581515 (@LatBegin1 varchar(128), @LngBegin1 varchar(128),@LatEnd1 varchar(128),@LngEnd1 VARCHAR(128)) Returns real ASBEGIN --转换location字段,防止字段太长.影响SQL美观 declare @LatBegin REAL declare @LngBegin REAL declare @LatEnd REAL declare @LngEnd REAL set @LatBegin=Convert(real,@LatBegin1) set @LngBegin=Convert(real,@LngBegin1) set @LatEnd=Convert(real,@LatEnd1) set @LngEnd=Convert(real,@LngEnd1) --距离(千米) DECLARE @Distance REAL DECLARE @EARTH_RADIUS REAL SET @EARTH_RADIUS = 6371.004 DECLARE @RadLatBegin REAL, @RadLatEnd REAL, @RadLatDiff REAL, @RadLngDiff REAL SET @RadLatBegin = @LatBegin *PI()/ 180.0 SET @RadLatEnd = @LatEnd *PI()/ 180.0 SET @RadLatDiff = @RadLatBegin - @RadLatEnd SET @RadLngDiff = @LngBegin *PI()/ 180.0 - @LngEnd *PI()/ 180.0 SET @Distance = 2 *ASIN( SQRT( POWER(SIN(@RadLatDiff / 2), 2)+COS(@RadLatBegin)*COS(@RadLatEnd) *POWER(SIN(@RadLngDiff / 2), 2) ) ) SET @Distance = @Distance * @EARTH_RADIUS SET @Distance = Round((@Distance * 10000) / 10000,5) RETURN @Distance END
按照距离 排序查询sql时,肯能会出现sql报错,
--- 除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表
这需要在sql查询语句上加上 (top 100 percent)
demo:select top 100 percent id,distance from table order by distance asc
阅读全文
0 0
- 基于sqlserver 实现查询两个经纬度之间的距离
- 两个经纬度点之间的距离各个版本实现
- python实现两个经纬度点之间的距离和方位角
- 用Wex5实现计算两个经纬度之间的距离
- 计算两个经纬度之间的距离
- 怎么计算两个经纬度之间的距离
- 计算两个经纬度之间的距离
- 计算两个经纬度之间的距离
- 计算两个经纬度之间的距离
- 通过经纬度计算两个之间的距离
- PHP计算两个经纬度之间的距离
- 计算两个经纬度之间的距离
- 计算两个经纬度之间的距离
- 怎么计算两个经纬度之间的距离
- PHP计算两个经纬度之间的距离
- 计算两个经纬度之间的距离
- PHP【求两个经纬度之间的距离】
- JAVA计算两个经纬度之间的距离
- 推荐几个好用的maven仓库镜像站
- 数据库 -断断续续边做边总结
- sass与gulp应用
- Java 枚举7常见种用法
- 机房专业型16口数字KVM切换器
- 基于sqlserver 实现查询两个经纬度之间的距离
- 第11周项目1
- 第十一周-项目1-图及其存储结构(邻接矩阵、邻接表)
- 从MVC到前后端分离(REST-个人也认为是目前比较流行和比较好的方式)
- springboot(十):邮件服务
- 镜像、克隆、快照的区别?
- Tomcat classloader
- 【第九周】项目3-利用二叉树遍历思想解决问题(2)
- 5cifar100数据集的读取-5.4将CIFAR10上的卷积网络用于CIFAR100数据集