Попробуйте структуру как это.
дал таблицу со следующими столбцами:
Text:varchar(255)
Location:geography
В качестве данных они содержат несколько городов из Нидерландов (получили координаты из карт Google):
Rotterdam - POINT (51.925637 4.493408 4326)
Utrecht - POINT (52.055868 5.103149 4326)
Nijmegen - POINT (51.801822 5.828247 4326)
Breda - POINT (51.542919 4.77356 4326)
Я хочу знать расстояние между всеми городами в БД от Роттердама, поэтому я выполняю этот запрос:
Select
Text, Location,
Location.STDistance(geography::Point(51.925638, 4.493408, 4326)) as Distance
from Messages
Но в результате я получаю расстояние, близкое к 6800000 для каждого города.
Что может быть причиной этого?
Единственная причина, по которой я могу думать, это то, что я использую неправильный SRID, но я не могу понять, какой мне следует использовать вместо этого.
Спасибо!
Редактировать:
Черт побери, я начал играть с числами и получил странные результаты:
Distance from Rotterdam to Rotterdam: 6828459.57 (A) (weird but true)
Distance from Rotterdam to Breda: 6779956.10 (B)
Distance from Rotterdam to Nijmegen: 6695336.38 (C)
Теперь вот где это становится интересным:
(A) - (B) = 48504 m = 48 km
(A) - (C) = 133123 m = 133 km
Эти значения примерно равны расстояниям между этими городами.