c语言从GPRMC中提取经纬度求均值,手动输入GPRMC10组
发布网友
发布时间:2022-05-14 12:41
我来回答
共1个回答
热心网友
时间:2023-08-04 20:40
下面程序只是简单地读出 经纬度数据,不作 GPS 数据 格式检查,奇偶校验等检查。
输出 的 角度 秒 位 只取到 整数。如果你要包含 小数2位,可以自己 改良。
#include <stdio.h>
#include<math.h>
#include<stdlib.h>
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<n;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<n;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。。。。
。。。