From a170a2ecef6d5c87883ed552dbbc81cfb0358d13 Mon Sep 17 00:00:00 2001 From: wxr <464027401@qq.com> Date: 星期五, 19 十一月 2021 16:43:53 +0800 Subject: [PATCH] Merge branch 'WJC' into newBranch1 --- HDL_ON/UI/UI2/3-Intelligence/Automation/CalculatedDistance.cs | 63 +++++++++++++++++++++++++++++++ 1 files changed, 63 insertions(+), 0 deletions(-) diff --git a/HDL_ON/UI/UI2/3-Intelligence/Automation/CalculatedDistance.cs b/HDL_ON/UI/UI2/3-Intelligence/Automation/CalculatedDistance.cs new file mode 100644 index 0000000..58e9b54 --- /dev/null +++ b/HDL_ON/UI/UI2/3-Intelligence/Automation/CalculatedDistance.cs @@ -0,0 +1,63 @@ +锘縰sing System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Infrastructure.Service.Helper +{ + public class CalculatedDistance + { + private static double HaverSin(double theta) + { + var v = Math.Sin(theta / 2); + return v * v; + } + + static double EARTH_RADIUS = 6371.0;//km 鍦扮悆鍗婂緞 骞冲潎鍊硷紝鍗冪背 + + /// <summary> + /// 缁欏畾鐨勭粡搴�1锛岀含搴�1锛涚粡搴�2锛岀含搴�2. 璁$畻2涓粡绾害涔嬮棿鐨勮窛绂汇�� + /// </summary> + /// <param name="lat1">缁忓害1</param> + /// <param name="lon1">绾害1</param> + /// <param name="lat2">缁忓害2</param> + /// <param name="lon2">绾害2</param> + /// <returns>璺濈锛堝叕閲屻�佸崈绫筹級</returns> + public static int Distance(double lat1, double lon1, double lat2, double lon2) + { + //鐢╤aversine鍏紡璁$畻鐞冮潰涓ょ偣闂寸殑璺濈銆� + //缁忕含搴﹁浆鎹㈡垚寮у害 + lat1 = ConvertDegreesToRadians(lat1); + lon1 = ConvertDegreesToRadians(lon1); + lat2 = ConvertDegreesToRadians(lat2); + lon2 = ConvertDegreesToRadians(lon2); + + //宸�� + var vLon = Math.Abs(lon1 - lon2); + var vLat = Math.Abs(lat1 - lat2); + + //h is the great circle distance in radians, great circle灏辨槸涓�涓悆浣撲笂鐨勫垏闈紝瀹冪殑鍦嗗績鍗虫槸鐞冨績鐨勪竴涓懆闀挎渶澶х殑鍦嗐�� + var h = HaverSin(vLat) + Math.Cos(lat1) * Math.Cos(lat2) * HaverSin(vLon); + + var distance = (int)((2 * EARTH_RADIUS * Math.Asin(Math.Sqrt(h))) * 1000); + + return distance; + } + + /// <summary> + /// 灏嗚搴︽崲绠椾负寮у害銆� + /// </summary> + /// <param name="degrees">瑙掑害</param> + /// <returns>寮у害</returns> + private static double ConvertDegreesToRadians(double degrees) + { + return degrees * Math.PI / 180; + } + + private static double ConvertRadiansToDegrees(double radian) + { + return radian * 180.0 / Math.PI; + } + } +} -- Gitblit v1.8.0