我有一個商店列表,每個商店都有像street_address,longitude,latitude這樣的數據。如何查詢訪問者鄰居中最近的商店的SQL Server數據庫?
現在,當用戶訪問我的網站,我想告訴他/她在他們附近的所有可用存儲(內10英里收音機「最接近最遠」)
這裏是我做了什麼。我創建了一個名爲StPoint
的新列,其類型爲geography
。我用geography::Point(latitude, longitude, 4326)
功能,每家店的經度/緯度轉換爲一個點,像這樣
UPDATE stores
SET StPoint = CASE WHEN latitude IS NOT NULL AND longitude IS NOT NULL
THEN geography::Point(latitude, longitude, 4326)
ELSE NULL END
我試圖找到像這樣
SELECT
CASE WHEN StPoint IS NOT NULL THEN StPoint.STIntersection(geography::Point(42.2974416, -71.4478897, 4326)).STAsText() ELSE NULL END AS distance
FROM stores
訪問者的當前點和所有門店之間的距離但是,這是給我像
GEOMETRYCOLLECTION EMPTY東西
或像這樣
POINT(-99.4478897 56.2974416)
最後,我用STDistance
函數返回一個值嘗試(我不知道什麼單位在這裏使用)
SELECT StPoint.STDistance(geography::Point(42.2974416, -71.4478897, 4326))
FROM stores
這裏是什麼上面的查詢顯示
27376.5070395886
3973.49722397033
27620.9636451663
50346.8940144233
7425.98548351235
34193.3513625182
樣本
正如你所看到的,結果不是以英里爲單位。我怎樣才能正確地得到最近的商店以及每個商店的訪問者的距離?
'正如你所看到的,結果是沒有英里。 - 但你沒有告訴我們結果;) – MatBailie
對不起,我忘了粘貼。我更新了問題。 – Jaylen