卫星经纬度转换

民用导航设备卫星数据格式转化为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;
}

你可能感兴趣的:(卫星经纬度转换)