卫星经纬度转换

民用导航设备卫星数据格式转化为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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 我厌倦了单枪匹马的日子 我们会变成什么 不重要 有你在就好 太阳吻着世界心情暖暖的 鸟儿一路哼着歌 我看着你 一切...
    周又年阅读 201评论 0 5
  • 很多人以为老师都是严肃的,板着脸孔,不苟言笑,其实不然哦!有一些老师,比如那种可爱如我的老师就真的很爱笑呢。 如果...
    温柔而不柔弱的女子阅读 310评论 0 1
  • 1、《艺伎回忆录》 大后寿寿花 《艺伎回忆录》这部经典电影,有章子怡、巩俐、杨紫琼三位有颜值有演技的演员。不过小编...
    水星果冻阅读 955评论 0 0

友情链接更多精彩内容