我已经保存在我的表之一是地理点的格式如下:通过经度和纬度T-SQL优化地理搜索
经度纬度POSTALCODE
的想法是让使用表格中的信息以给定的经度和纬度获得最接近的可用邮政编码。
我的算法如下工作:
- 初始化UserLongitude和UserLatitude
- 初始化StepVariable为1.0
从我的表中的所有记录,其中
longitude>UserLongitude-StepVariable and longitude<UserLongitude+StepVariable and latitude>Userlatitude-StepVariable and latitude<Userlatitude+StepVariable
- 如果没有找到记录,使用1.0增加StepVariable并执行步骤3
因为我有read当我们移动到极点时,1.0的经度值更小。因此,当经度和纬度1.0的值不相同时,我的算法将以不正确的方式扩展搜索区域。
是否有一个棘手的方式来将我的可搜索区域扩展为Square,因为现在,在某些地方我有矩形,而我相信这会让我的搜索速度变慢。
我不认为我可以使用STDistance,因为它给出了两个对象之间的最短距离。我需要一个更好的方法来维护我的StepVariable - 根据当前的UserLongitude值以不同的经度值增加/减少。 – gotqn
@gotqn看起来你是在最短距离之后 - 使用STDistance来计算它们,并且取最小值。 – podiluska
是的,这是真的,但只使用这个功能,意味着我首先应该计算我的点和所有其他点之间的距离,然后得到最短的点。我有大约3百万条记录,我认为这会很慢。这就是为什么,我只想得到新点上的点,但有时在我创建的矩形中没有其他点,而且我正在创建一个更大的点。我想要的不是创建矩形,而是方形 - 矩形是经度不同值的结果。 – gotqn