十进制与经纬度之间的互相转换


在AE的Map控件中我们获取的位置信息是十进制表示的经纬度信息,而通常我们用度、分、秒来表示,因此,在AE内部和通俗描述经纬度信息需要转换。十进制表示经纬度,即只用度来表示位置,而经纬度表示法,则用度、分、秒三个分量来表示,而度分秒之间的关系式为1度=60分=3600秒。由该关系可得出十进制与度分秒之间转换式如下:
1、度分秒转换为十进制

      Decimal=Degrees+minutes/60+seconds/3600;

2、十进制转度分秒

     Degrees值为Decimal整数部分;

     Minutes=(Decimal-Degrees)*60;取整数部分

   Seconds=((Decimal-Degrees)*60-Minutes)*60;

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WpfArcgis
{
    class UnitConvert
    {
        /// <summary>
        /// 度、分、秒转化为十进制
        /// </summary>
        /// <param name="iDegree"></param>/// <param name="iMinute"></param>/// <param name="dSecond"></param>/// <returns></returns>转化的十进制结果
        public static  double DegreeToDecimal(int iDegree,int iMinute,double dSecond)
        {
            double dValue = 0;
            dValue = iDegree + iMinute / 60 + dSecond / 3600;//度+分/60+秒/3600 为转化为十进制的公式
            return dValue;
        }
        /// <summary>
        /// 十进制转化为度分秒
        /// </summary>
        /// <param name="dValue"></param>十进制值
        /// <param name="iDegress"></param>获取的度
        /// <param name="iMinute"></param>获取的分
        /// <param name="dSecond"></param>获取的秒
        public static void DecimalToDegree(double dValue,out int iDegress,out int iMinute,out double dSecond)
        {
            iDegress = (int)dValue;//获取度
            iMinute = (int)((dValue -iDegress ) * 60);//获取分
            dSecond=((iDegress - dValue) * 60-iMinute)*60;//获取秒
        }
        
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM