SQL Server'da iki enlem/boylam koordinatı arasındaki mesafeyi hesaplayın
Enlem/boylam koordinatları arasındaki mesafeyi mil veya kilometre cinsinden hesaplayan bir SQL işlevi oluşturun
Bağlam
İki yer arasındaki mesafeyi hesaplamak oldukça zor olabilir, orada bazı iyi makaleler var, ancak bu sayfa sadece koda girecek.
Bir küre üzerinde mesafelerin nasıl hesaplandığı hakkında daha fazla bilgi için Wikipedia'daki Haversine Formülüne bakın, bu biraz karmaşık, bu nedenle içeriği kopyalamak istemiyoruz.
Bu kodun bir kısmını çevrimiçi olarak bulduk ve mil veya kilometre sorma yeteneği ile bir SQL İşlevine uyarladık.
Bu yalnızca "kuş uçarken" hesaplanır, ancak bir IPhone üzerinde oluşturduğumuz bir uygulamanın parçası olarak test edildi ve mesafeler tam olarak belirlendi.
SQL Server
CREATE FUNCTION CoordinateDistanceMiles(@Latitude1 float,@Longitude1 float,@Latitude2 float,@Longitude2 float,@Distance NVARCHAR(10))RETURNS FLOATAS BEGIN-- CONSTANTSDECLARE @EarthRadiusInMiles FLOAT=(CASE @Distance WHEN 'Miles' THEN 3959 WHEN 'Kilometers' THEN 6371 ELSE 0 END);DECLARE @PI FLOAT=PI();DECLARE @lat1Radians FLOAT=@Latitude1 * @PI / 180DECLARE @long1Radians FLOAT=@Longitude1 * @PI / 180;DECLARE @lat2Radians FLOAT=@Latitude2 * @PI / 180;DECLARE @long2Radians FLOAT=@Longitude2 * @PI / 180;RETURN Acos(Cos(@lat1Radians)*Cos(@long1Radians)*Cos(@lat2Radians)*Cos(@long2Radians)+Cos(@lat1Radians)*Sin(@long1Radians)*Cos(@lat2Radians)*Sin(@long2Radians)+Sin(@lat1Radians)*Sin(@lat2Radians)) * @EarthRadiusInMiles;END