`

经纬度的度数和十进制数互相转换工具

    博客分类:
  • Map
阅读更多

在使用Google Maps的时候,需要根据经纬度进行定位,但手上的经纬度信息都是标准度数表示的,还需要转换成十进制,使用计算机算了一下,感觉比较麻烦,加上好久没有 编程序了,一时手痒,写了一个经纬度的度数和十进制数转换工具,希望能提高一下效率,这里共享如下:

初始界面:

运行效果界面:

错误处理信息:

软件下载地址

softbbs.it168.com/viewthread.php

 

对于源码,如果需要可以留言,其中算法处理代码如下:


//度数转换到十进制数的处理函数
//nType:标识经纬度类型,主要是为了处理参数校验的告警信息 0:进度,1:纬度
//str:经纬度的度数字符串(以逗号分隔,例: 100,2,4 - 100度2分4秒)
double CLDChangeDlg::Degree2Double(int nType, CString str)
{
    CString dstr;
    int nPos,nPos2;
    int num;
    double d = 0.0;

    nPos = str.Find(',');
    if(nPos == -1)
    {
        num = atoi((LPCTSTR)str);
        if(nType == 0 && (num < 0 || num >= 180))
        {
            MessageBox("经度参数错误:度数必须是介于0~180的值!");
            return d;
        }
        else if (nType == 1 && (num < 0 || num >= 90))
        {
            MessageBox("维度参数错误:度数必须是介于0~90的值!");
            return d;
        }
        d += num;       
        return d;
    }
   
    dstr = str.Mid(0, nPos);
    num = atoi((LPCTSTR)dstr);
    if(nType == 0 && (num < 0 || num >= 180))
    {
        MessageBox("经度参数错误:度数必须是介于0~180的值!");
        return d;
    }
    else if (nType == 1 && (num < 0 || num >= 90))
    {
        MessageBox("维度参数错误:度数必须是介于0~90的值!");
        return d;
    }
    d += num;

    nPos++;
    nPos2 = str.Find(',', nPos);
    if(nPos == -1)
    {
        dstr = str.Mid(nPos);
        num = atoi((LPCTSTR)str);
        if(num < 0 || num >= 60)
        {
            if(nType == 0)
            {
                MessageBox("经度参数错误:分数必须是介于0~60的值!");
                return d;
            }
            else if (nType == 1)
            {
                MessageBox("维度参数错误:分数必须是介于0~60的值!");
                return d;
            }
            return d;
        }
        d += (double)num/(double)60.0;       
        return d;
    }

    dstr = str.Mid(nPos, nPos2-nPos);
    num = atoi((LPCTSTR)dstr);
    if(num < 0 || num >= 60)
    {
        if(nType == 0)
        {
            MessageBox("经度参数错误:分数必须是介于0~60的值!");
            return d;
        }
        else if (nType == 1)
        {
            MessageBox("维度参数错误:分数必须是介于0~60的值!");
            return d;
        }
        return d;
    }
    d += (double)num/(double)60.0;

    nPos2++;
    nPos = str.Find(',', nPos2);
    if(nPos == -1)
    {
        dstr = str.Mid(nPos2);
        num = atoi((LPCTSTR)dstr);
        if(num < 0 || num >= 60)
        {
            if(nType == 0)
            {
                MessageBox("经度参数错误:秒数必须是介于0~60的值!");
                return d;
            }
            else if (nType == 1)
            {
                MessageBox("维度参数错误:秒数必须是介于0~60的值!");
                return d;
            }
            return d;
        }
        d += (double)num/(double)3600.0;       
        return d;
    }

    dstr = str.Mid(nPos);
    num = atoi((LPCTSTR)dstr);
    if(num < 0 || num >= 60)
    {
        if(nType == 0)
        {
            MessageBox("经度参数错误:秒数必须是介于0~60的值!");
            return d;
        }
        else if (nType == 1)
        {
            MessageBox("维度参数错误:秒数必须是介于0~60的值!");
            return d;
        }
        return d;
    }
    d += (double)num/(double)3600.0;

    return d;
}

//十进制数转换到度数的处理函数
//num:经纬度的double十进制数
//pstr:转换后的度数字符串(以逗号分隔,例: 100,2,4 - 100度2分4秒)
void CLDChangeDlg::Double2Degree(double num, char * pstr)
{
    char str[50];
    int n;
    double d = num;

    strcpy(pstr,"");

    n = (int)d;
    sprintf(str,"%d,", n);
    strcat(pstr, str);


    d = double(d - n)*60;
    n = (int)d;
    sprintf(str,"%d,", n);
    strcat(pstr, str);

    d = double(d - n)*60;
    n = (int)d;
    sprintf(str,"%d", n);
    strcat(pstr, str);


    return;
}

分享到:
评论

相关推荐

    python实现将GPS经纬度转换为16进制算法

    采用python实现将GPS的经纬度转换成16进制,输入为GPS坐标。

    度分秒格式经纬度转换成十进制格式

    总结,度分秒格式的经纬度转换为十进制格式是一项基础的地理坐标处理任务,它涉及数学运算和单位换算,对于理解和处理地理数据至关重要。通过编程实现,我们可以方便地在两种格式间进行转换,适应不同的应用场景。在...

    经纬度分秒转十进制.zip

    在地理信息系统(GIS)和导航应用中,经纬度通常有两种表示方式:角度分秒制和十进制制。本主题将深入探讨如何将经纬度的分秒制转换为十进制制,这对于处理地理坐标至关重要。 一、经纬度的表示方式 1. 分秒制:...

    C# 窗体 十进制与经纬度转换工具 代码

    本篇文章将围绕"**C# 窗体十进制与经纬度转换工具代码**"这一主题,详细介绍如何使用C#编程语言实现这种转换功能,并通过一个窗体应用来直观操作。 首先,我们需要理解经纬度的基本概念。经度是沿地球表面东西方向...

    经纬度度分秒格式与十进制格式转换

    excel中编写公式实现经纬度的度分秒格式与十进制格式相互转换. 使用时直接套用excel中公式即可。

    在excel中将经纬度坐标转换成十进制度的方法

    但由于我们的结果是将秒数转换为了分,因此只需乘以24(60/2),即可得到正确的十进制数值。 举个例子,对于34°23'12" N,经过转换后得到"34:23:12",然后乘以24得到825.2,最后加上34(度数),得到34.378333,这...

    Excel表将经纬度在度分秒与十进制格式中互相转换

    Excel表将经纬度在度分秒与十进制格式中互相转换,里面有将十进制经纬度转换为度分秒的公式,以及将度分秒格式的经纬度转换为十进制格式的公式

    经纬度转十进制/算距离

    输入经纬度度数数值转换为十进制,并计算两点之间的距离。

    经纬度进制转换器V1.0

    经纬度进制转换器V1.0是一款专为地理定位数据处理设计的小型实用程序,主要功能在于实现十进制和度分秒两种表示方式之间的转换。在GPS(全球定位系统)的应用中,经纬度通常有两种常见的表达形式:十进制和度分秒。...

    jwd.rar_度分秒经纬度到十进制的转换_经纬度_经纬度JWD_经纬度度分秒

    在十进制表示法中,经纬度是一个浮点数,其中包含整数部分(度数)和小数部分(度以内的分数部分)。 十进制到度分秒的转换主要涉及以下步骤: 1. 提取整数部分作为度数。 2. 将小数部分乘以60得到分(Minute)。 3...

    度分秒与点分十进制数据格式转换器_python_转换器_

    2. **DMS到DD转换**:将度、分和秒转换为点分十进制,需要进行以下步骤: - 度:直接使用。 - 分:将分乘以60(因为1度等于60分钟)。 - 秒:将秒乘以3600(1度=60分钟×60秒)。 - 将这三个值相加,得到总度数...

    经纬度转换工具

    经纬度转换工具GPSDASH用 度分秒转换TEMS经纬度批量转换16进制转10进制10进制转16进制

    gps 进制转换工具

    在IT领域,GPS(全球定位系统)进制转换工具是一种非常实用的软件工具,它主要用于处理与GPS数据相关的编码和解码过程。GPS系统在传递地理位置信息时,常常使用特定的进制表示方式,比如十进制、二进制、十六进制等...

    将十进制的经纬度值转换为度分秒格式的值

    在地理信息系统(GIS)及地图应用中,经纬度通常有两种表示方法:十进制格式和度分秒(DMS)格式。十进制格式简单直观,而度分秒格式则更符合传统地图学的标准。 - **十进制格式**:例如,北纬31.2345°,东经121....

    60进制经纬度转10进制工具

    60进制经纬度转10进制工具 excel

    经纬度与K码批量转换工具(excel)

    使用这个工具时,用户需确保输入数据的格式正确无误,例如,经纬度应以十进制度数表示,而K码应按照其标准格式输入。转换过程可能涉及一些数学计算,包括将角度转换为弧度,以及应用特定的投影算法(如UTM,...

    经纬度与XY坐标转换实用工具

    理解这两种坐标系统及其转换原理,有助于我们更好地理解和利用各种地理信息系统和开发工具,如“经纬度与XY转换.exe”。在进行具体操作时,需要根据实际需求选择合适的投影方法,并正确使用相关的转换工具或编程库。

    经纬度二进制转换工具及谷歌地图查找坐标方法(和用谷歌地球查度分秒格式坐标)-

    经纬度二进制转换工具及谷歌地图查找坐标方法(和用谷歌地球查度分秒格式坐标)

    gps经纬度换算

    本文将详细介绍经纬度换算的方法,包括十进制转换成经纬度、经纬度转换成十进制,以及使用SQL查询分析器实现经纬度数据的批量转换。 一、十进制转换成经纬度 十进制转换成经纬度是将十进制的小数形式转换为度分秒...

    经纬度格式转换及直线距离计算工具.rar

    - 转换通常涉及到将一种格式转换为另一种,比如从十进制度数转换为度分秒,或者反过来。在Excel中,可以使用公式和函数来实现这些转换,包括取整、除法和余数运算。 2. **直线距离计算**: - 地球上的两点间的...

Global site tag (gtag.js) - Google Analytics