2012年10月15日 星期一

C# 兩個經緯度計算相對方位角度



public String getRetangle(String[] loc1, String[] loc2)
        {          
            double d = 0;
            double lat_a= double.Parse(loc1[0]);
            double lng_a= double.Parse(loc1[1]);
            double lat_b= double.Parse(loc2[0]);
            double lng_b = double.Parse(loc2[1]);
            lat_a = lat_a * Math.PI / 180;
            lng_a = lng_a * Math.PI / 180;
            lat_b = lat_b * Math.PI / 180;
            lng_b = lng_b * Math.PI / 180;
           
            d = Math.Sin(lat_a) * Math.Sin(lat_b) + Math.Cos(lat_a) * Math.Cos(lat_b) * Math.Cos(lng_b - lng_a);
            d = Math.Sqrt(1 - d * d);
            d = Math.Cos(lat_b) * Math.Sin(lng_b - lng_a) / d;
            d = Math.Asin(d) * 180 / Math.PI;
           

           
            String direction = "";
            if (d >= 0)
            {
                direction += "東";
            }
            else
            {
                direction += "西";
            }

            if (Math.Abs(d) >= 90)
            {
                direction += "北";
            }
            else
            {
                direction += "南";
            }
            if (d > 90 && d <= 180)
            {
                d = d - 90;
            }
            else
            {
                d = d + 270;
            }
            return direction +"角度為:"+Math.Ceiling(d).ToString();

沒有留言: