我已經保存在我的表之一是地理點的格式如下:通過經度和緯度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