c语言从GPRMC中提取经纬度求均值,手动输入GPRMC10组
答案:1 悬赏:50 手机版
解决时间 2021-02-01 15:13
- 提问者网友:感性作祟
- 2021-01-31 17:10
求大神给个c程序
最佳答案
- 五星知识达人网友:轮獄道
- 2021-01-31 18:27
下面程序只是简单地读出 经纬度数据,不作 GPS 数据 格式检查,奇偶校验等检查。
输出 的 角度 秒 位 只取到 整数。如果你要包含 小数2位,可以自己 改良。
#include
#include
#include
char buff[1024];
main() {
char s[1024];
double lat[10],lo[10],mean1,mean2;
int d1,m1,ss1,d2,m2,ss2;
int i,j,n=10;
printf("input %d line GPS_data\n",n);
for (i=0;i
if ( fgets(&buff[0],1024,stdin)==NULL) break;
sscanf(buff,"%*[^,],%*[^,],%*[^,],%2d%2d.%d,%*[^,],%3d%2d.%d",
&d1,&m1,&ss1,&d2,&m2,&ss2);
lat[i]=d1*3600+m1*60+ss1/100.0;
lo[i]=d2*3600+m2*60+ss2/100.0;
};
mean1=0; mean2=0;
for (i=0;i
mean1=mean1+lat[i];
mean2=mean2+lo[i];
};
mean1=mean1/n;
mean2=mean2/n;
d1 = (int)(mean1/3600);
m1 = (mean1-d1*3600)/60;
ss1 = mean1-d1*3600-m1*60;
d2 = (int)(mean2/3600);
m2 = (mean2-d2*3600)/60;
ss2 = mean2-d2*3600-m2*60;
printf( "Lat: %d %d %d\n",d1,m1,ss1);
printf( "Lon: %d %d %d\n",d2,m2,ss2);
}
例子:
input 10 line GPS_data
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10。。。。
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10。。。。
。。。
输出 的 角度 秒 位 只取到 整数。如果你要包含 小数2位,可以自己 改良。
#include
#include
#include
char buff[1024];
main() {
char s[1024];
double lat[10],lo[10],mean1,mean2;
int d1,m1,ss1,d2,m2,ss2;
int i,j,n=10;
printf("input %d line GPS_data\n",n);
for (i=0;i
sscanf(buff,"%*[^,],%*[^,],%*[^,],%2d%2d.%d,%*[^,],%3d%2d.%d",
&d1,&m1,&ss1,&d2,&m2,&ss2);
lat[i]=d1*3600+m1*60+ss1/100.0;
lo[i]=d2*3600+m2*60+ss2/100.0;
};
mean1=0; mean2=0;
for (i=0;i
mean2=mean2+lo[i];
};
mean1=mean1/n;
mean2=mean2/n;
d1 = (int)(mean1/3600);
m1 = (mean1-d1*3600)/60;
ss1 = mean1-d1*3600-m1*60;
d2 = (int)(mean2/3600);
m2 = (mean2-d2*3600)/60;
ss2 = mean2-d2*3600-m2*60;
printf( "Lat: %d %d %d\n",d1,m1,ss1);
printf( "Lon: %d %d %d\n",d2,m2,ss2);
}
例子:
input 10 line GPS_data
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10。。。。
$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10。。。。
。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯