Как @TimBiegeleisen и @RobertRodkey сказали, что это старая школа формула вычисляя расстояние между двумя точками на Земле.
Таким образом, это приводит к некоторым другим вопросам:
- Q: Не SqlServer есть геопространственных методы доступны? A: Да для SQL Server версии 2008 и выше.
- В: Если Sql имеет это, используя методы
Geography
, следует ли использовать приведенную выше математику? A: Noесли вы находитесь на сервере Sql 2008 или позже. Если до этого, то у вас нет выбора, но вы должны использовать этот способ/формулу.
- В: Нарвалы, единороги океана? A: Да.
Далее показать наконечник - использовать STDistance .. это ваш друг :)
(браузер код, не тестируются и т.д.) ...
-- Arrange.
DECLARE @longitude1 FLOAT = -122.360,
@latitude1 FLOAT = 47.656,
@longitude2 FLOAT = -122.343,
@latitude2 FLOAT = 47.656;
DECLARE @point1 GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(' + CAST(@longitude1 AS VARCHAR(10)) + ' ' + CAST(@latitude1 AS VARCHAR(10)) + ')', 4326);
DECLARE @point2 GEOGRAPHY = GEOGRAPHY::STGeomFromText('POINT(' + CAST(@longitude2 AS VARCHAR(10)) + ' ' + CAST(@latitude2 AS VARCHAR(10)) + ')', 4326);
-- Determine the distance (which would be in metres because we're using the 4326 == [common GPS format](http://spatialreference.org/ref/epsg/wgs-84/)).
SELECT @point1.STDistance(@point2);
Строго говоря, я считаю, что это сферическая косинус формула. Кроме того, почему бы не использовать класс географии, если вы используете SQL-сервер? https://msdn.microsoft.com/en-gb/library/microsoft.sqlserver.types.sqlgeography.aspx –