English 中文(简体)
使用2008年Long/Lat SQL服务器
原标题:Nearby using Long/Lat SQL Server 2008

我有一张桌子叫做Places, 这张桌子上的每一个记录都有它的经度和纬度。

我想在这张桌子上搜索 以找到附近的位置 以特定的长长和拉特( 表示附近圆圈的半径为 25 KM )

问题回答

由于您有限制搜索的一定距离, 您的问题稍有不同, 问题在于那些想要找到最近的点( 不受限制 ) 。 我发明了两种公式, 将距离计算简化为度差。 这些公式是适合地球的, 而不是其他球体形状 :

以下显示在特定纬度周围1度的纬度周围环绕了多少公里:

LongDistanceFactor = − 0.0114 * (lat)^2 − 0.2396(lat) + 112.57

第二个显示一个特定纬度周围1度的纬度环绕了多少公里:

LatDistanceFactor = 0.0139(lat) + 110.51 

所以对于给定的 25 公里左右(lat, lng) 您只需要在 lat § (25/Lat Disstantance Factor) lng § (25/Long DisstantFactor) 之间找到它们的边界点。

编辑 : 我对 Lat 和 Lng 都使用 +, 目标区域将是每边50Km的正方形。 如果您坚持一个圆形区域, 您可以对第一个结果序列进行单圈计算, 实际公式为 < 坚固 > 点距离 < / 坚固 >, 省略不在您圆圈内的区域 。





相关问题
Export tables from SQL Server to be imported to Oracle 10g

I m trying to export some tables from SQL Server 2005 and then create those tables and populate them in Oracle. I have about 10 tables, varying from 4 columns up to 25. I m not using any constraints/...

SQL server: Can NT accounts be mapped to SQL server accounts

In our database we have an SQL server account that has the correct roles to access some of the databases. We are now switching to windows authentication and I was wondering if we can create a NT user ...

SQL Server 2000, ADO 2.8, VB6

How to determine if a Transaction is active i.e. before issuing Begin Transaction I want to ensure that no previous transaction are open.. the platform is VB6, MS-SQL Server 2000 and ADO 2.8

热门标签