, :: Point(), , , . 2 80 UDF, , , .
declare @latlong1 GEOGRAPHY
declare @latlong2 GEOGRAPHY
Set @latlong1 = GEOGRAPHY::STGeomFromText('POINT(40.1844441 -77.2252771)',4326)
Set @latlong2 = GEOGRAPHY::STGeomFromText('POINT(40.319166 -76.7880552)',4326)
Select VeryOdd = @latlong1.STDistance(@latlong2)
,SQLGeo = geography::Point(40.1844441, -77.2252771, 4326).STDistance(geography::Point(40.319166,-76.7880552, 4326))
,UDFGeo = [dbo].[udf-Geo-Meters](40.1844441,-77.2252771,40.319166,-76.7880552)
VeryOdd SQLGeo UDFGeo
48927.1485292471 40093.8055001913 40014.8833526855
UDF if Interest
CREATE Function [dbo].[udf-Geo-Meters](@Lat1 FLOAT, @Lng1 FLOAT, @Lat2 FLOAT, @Lng2 FLOAT)
Returns Float as
Begin
Return ACOS(SIN(PI()*@Lat1/180.0)*SIN(PI()*@Lat2/180.0)+COS(PI()*@Lat1/180.0)*COS(PI()*@Lat2/180.0)*COS(PI()*@Lng2/180.0-PI()*@Lng1/180.0)) * 6371008.8
End