Ms SQL geography.STDistance возвращает неправильное расстояние - PullRequest
1 голос
/ 27 июня 2011

Я пытаюсь запросить любые местоположения в пределах указанного расстояния от другого местоположения.Запрос не является проблемой, но расстояние, возвращаемое географией. STDistance равно.

Кажется, STDistance делает довольно точные вычисления на местах, близких к экватору, но мне это нужно для работы с местоположениями в северной части.страны.Норвегия, Швеция, Финляндия и т. Д. ...

Согласно моим расчетам, проведенным на местах в северной Швеции, расстояние неверно в 2,38 раза ?!Ожидаемый результат - 1070 метров, а возвращаемое расстояние - 2537,28850694302 метра

Мой запрос выглядит так:

DECLARE @g geography = geography::STGeomFromText('POINT(65.580254 22.179428)', 4326)

SELECT name, [pos].STSrid as srdi, [pos].STDistance(@g) as d
  FROM [GPSCHAT].[dbo].[USERS]

, а «другое местоположение» имеет координаты (65,578541 22,202286)(сохранено с SRID 4326)

Я предполагаю, что это связано с расстоянием от экватора (близко к полярному кругу), но должен быть способ вычислить это более точно, основываясь на Широтеили я не прав?

Ответы [ 2 ]

2 голосов
/ 17 сентября 2011

Похоже, вы создаете свою точку, используя 'X, Y'.
При создании точки из текста, используйте 'Y, X' вместо этого.

Проверьте эту статью MSDN для получения дополнительной информации.

1 голос
/ 09 августа 2011

Почему бы вам не использовать другой идентификатор пространственной привязки, который лучше соответствует искривлению Земли вокруг вашей позиции.SRID 4326 может быть измерен не так точно, как другие локальные справочные системы

...