У меня установлена база данных SQL, содержащая несколько полей, одно из которых является географическим полем, называемым Координаты. Мне нужно найти все строки, которые находятся в пределах определенного радиуса, и для этого я использую запрос
DECLARE @CurrentLocation geography;
SET @CurrentLocation = geography::Point(-84.505562, 39.137706, 4326)
SELECT * , Coordinates.STDistance(@CurrentLocation) AS Distance FROM tParkingLot
WHERE Coordinates.STDistance(@CurrentLocation )<= 200000
, который дает мне следующие результаты
первая строка возвращается, как и ожидалось, поскольку я использовал эти координаты в качестве своего центра. Однако при измерении двух других лотов на картах Google я обнаружил, что результаты должны быть ближе к 1133.246 для строки 2 и 74673.56 для строки 3
. Из других результатов stackoverflow видно, что распространенной ошибкой является вставка данных. как широта / долгота, а не широта / долгота, однако я уже сделал и исправил эту ошибку, и я не могу определить, почему я получаю результаты расстояния, которые так далеки от фактических измерений.