Making query to find nearest multiple(Lat,Long) from the single(Lat,Long)(进行查询以从单个(Lat,Long)查找最接近的倍数(Lat,Long))
本文介绍了进行查询以从单个(Lat,Long)查找最接近的倍数(Lat,Long)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在从单个点执行最近的点查询。以下是序列。
我在MSSQLServer中存储了多个POI,表dbo.Place
。第二个表是dbo.Position
,它将存储收集的GPS点。
我正在使用存储过程,并且位置的LatLong已定义并可用。如何根据以下示例进行查询?
dbo.Place
Id | Name | Lat | Long
1 POI1 1.735 4.73225
2 POI2 1.5665 3.9983
3 Tim2 1.4344 3.1282
Lat Long变量在存储过程中定义。我想使用下面的公式来找到最近的点,我只会从3个查询中取最近的值(假设样本数据是3行)
SQRT(POW(X(`POI.Lat`) - 49.843317 , 2) + POW(Y(`POI.Long`) - 24.026642, 2)) * 100
谢谢。
推荐答案
您可以使用SQL Server的地理功能来执行此操作。
DECLARE @InputLatitude FLOAT = 1.64
DECLARE @InputLongitude FLOAT = 4.25
DECLARE @GPS GEOGRAPHY = GEOGRAPHY::Point(@InputLatitude, @InputLongitude, 4326)
SELECT TOP 1
P.*,
Distance = @GPS.STDistance(GEOGRAPHY::Point(P.Lat, P.Long, 4326))
FROM
dbo.Place AS P
ORDER BY
@GPS.STDistance(GEOGRAPHY::Point(P.Lat, P.Long, 4326)) ASC
您应该考虑在已转换GPS点的表中添加GEOGRAPHY
列,并添加SPATIAL INDEX
以加快查询速度。
这篇关于进行查询以从单个(Lat,Long)查找最接近的倍数(Lat,Long)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:进行查询以从单个(Lat,Long)查找最接近的倍数(Lat,Long)


猜你喜欢
- 如何使用 pip 安装 Python MySQLdb 模块? 2021-01-01
- 更改自动增量起始编号? 2021-01-01
- 远程 mySQL 连接抛出“无法使用旧的不安全身份验证连接到 MySQL 4.1+"来自 XAMPP 的错误 2022-01-01
- 导入具有可变标题的 Excel 文件 2021-01-01
- 在SQL中,如何为每个组选择前2行 2021-01-01
- 如何将 Byte[] 插入 SQL Server VARBINARY 列 2021-01-01
- 以一个值为轴心,但将一行上的数据按另一行分组? 2022-01-01
- SQL 临时表问题 2022-01-01
- 使用 Oracle PL/SQL developer 生成测试数据 2021-01-01
- 如何将 SonarQube 6.7 从 MySQL 迁移到 postgresql 2022-01-01