Vypočítejte vzdálenost mezi dvěma souřadnicemi zeměpisné šířky a délky na serveru SQL Server
Vytvořte funkci SQL, která vypočítá vzdálenost mezi souřadnicemi zeměpisné šířky a délky v mílích nebo kilometrech
Kontext
Výpočet vzdálenosti mezi dvěma místy může být docela složitý, existují dobré články, ale tato stránka se dostane pouze do kódu.
Další informace o tom, jak se vypočítávají vzdálenosti na kouli, najdete v Haversine Formula na Wikipedii , je to trochu složité, a proto nechceme duplikovat obsah.
Některé z těchto kódů jsme našli online a přizpůsobili jsme je funkci SQL s možností žádat o míle nebo kilometry.
Toto počítá pouze „vzdušnou čarou“, ale bylo to testováno jako součást aplikace, kterou jsme postavili na IPhone, a vzdálenosti byly na místě.
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