民用导航设备卫星数据格式转化为GPS经纬度数据
1、民用导航设备获取的卫星数据一般为NMEA协议源数据,它的经纬度的数据是DDMM.MMMMMM
(度分)格式
2、百度地图或谷歌地图的经纬度的数据格式是DD.DDDDD
3、将DDMM.MMMMMM
格式转换DD.DDDDD
格式
纬度数据转换:
//测试数据: 广州一民用导航设备卫星数据(遵循NMEA-0183协议的民用设备导航卫星数据)@{@"lat":@"2322.0897",@"lon":@"11315.3628",}
/**
民用导航设备卫星数据格式转化为GPS纬度数据
@param lon 卫星数据
@return GPS纬度数据
*/
- (double)latitudeFromSatelliteDataFormat:(NSString *)lat {
if (lat.length <= 0) {// 若无数据返回天安门GPS纬度数据
return 39.915119;
}
double lat_temp = 0;
int lat_loc = 0;
int dd_int = 0;
long mm_int = 0;
double lat_loc_double = 0;
char *lat_str = (char *)[lat UTF8String]; //OC字符串转化为C字符串
lat_temp = atof(lat_str);
lat_loc =lat_temp*100000; //转换为整数
dd_int = lat_loc/10000000; //取出dd
mm_int = lat_loc%10000000; //取出MM部分
lat_loc_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式
return lat_loc_double;
}
经度数据转换:
/**
民用导航设备卫星数据格式转化为GPS经度数据
@param lon 卫星数据
@return GPS经度数据
*/
- (double)longitudeFromSatelliteDataFormat:(NSString *)lon {
if (lon.length <= 0) {// 若无数据返回天安门GPS经度数据
return 116.403963;
}
double lon_temp = 0;
int lon_loc = 0;
int dd_int = 0;
long mm_int = 0;
double lon_loc_double = 0;
char *lon_str = (char *)[lon UTF8String]; //OC字符串转化为C字符串
lon_temp = atof(lon_str);
lon_loc =lon_temp*100000; //转换为整数
dd_int = lon_loc/10000000; //取出dd
mm_int = lon_loc%10000000; //取出MM部分
lon_loc_double = dd_int + (double)mm_int/60/100000;//换算为Onenet格式
return lon_loc_double;
}
网友评论