在使用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进制,输入为GPS坐标。
经纬度分秒转十进制.zip
excel中编写公式实现经纬度的度分秒格式与十进制格式相互转换. 使用时直接套用excel中公式即可。
Excel表将经纬度在度分秒与十进制格式中互相转换,里面有将十进制经纬度转换为度分秒的公式,以及将度分秒格式的经纬度转换为十进制格式的公式
将经纬度的度分秒部分填入第一行的三个编辑框中,点击按钮即转换成十进制格式
在excel中将经纬度坐标转换成十进制度的方法.doc
输入经纬度度数数值转换为十进制,并计算两点之间的距离。
C#编写的窗体小工具详细代码,用于十进制与经纬度转换,
GPS经纬度进制转换器 本工具可以将十进制与度分秒之间互转,是一个小工具。 程序在32位XP和win7系统上测试通过。 --2015.10.11
实现经纬度从十进制数到度分秒数值的相互转换,封装了一个经纬度类
经纬度转换工具GPSDASH用 度分秒转换TEMS经纬度批量转换16进制转10进制10进制转16进制
javascript 将十进制的经纬度值转换为度分秒格式的值
经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具经纬度转换工具...
经纬度二进制转换工具及谷歌地图查找坐标方法(和用谷歌地球查度分秒格式坐标)
经纬度与XY坐标转换实用工具
经纬度转换软件,驴友必备。能转换十进制经纬度,偏移经纬度转真实经纬度。
经纬度 度分秒与小数格式之间互相转换 支持批量转换
K码和经纬度互换excel表格,方便转换 ~~可批量转换~~
将任意文件转换称 0xaa,0xbb,0xcc, 的格式。方便单片机将文件以16进制烧制进去。
火星坐标转换经纬度,火星坐标系转换软件工具【支持批量】 火星坐标转换工具,支持批量转换 火星坐标转换到地球坐标 地球坐标转换到火星坐标 批量转换工具