经纬度格式转换

公式:

    public float DuFenMiaoToDu(float d, float f, float m)
    {
    	//度分秒 -> 度
        f = f + m / 60;
        d = d + f / 60;
        return d;
    }
    
    public float DuToDuFen_fen(float d)
    {
    	//度 -> 度分
        float f = (d - Mathf.Floor(d)) * 60;
        return f;
    }
    
    public float FenToFenMiao_miao(float f)
    {
    	//分 -> 分秒
        float m = (f - Mathf.Floor(f)) * 60;
        return m;
    }

实际使用情况

float 有效数字位数 6
double 有效数字位数 16
经纬度数字位数 8~9

因此数据录入需要用Double,但平时用float 会较方便(Mathf)。
因此决定一般用度分秒的分来运算,如下:

	public float DuToFen(double d, double line)	//line指经纬线
    {
        float f = (float)(60 * (d - line));
        return f;
    }

eg1. d = 116.307629, line = 116
f = 60 * 0.307629 = 18.4577

eg2. d = 113.947906, line = 114
f = 60 * -0.052094 = -3.1256

更新:

public string GetStringLongitude(double value)
{
    float du = Mathf.Floor((float)value);
    double f = 60 * (value - du);
    float fen = Mathf.Floor((float)f);
    double m = 60 * (f - fen);
    float miao = Mathf.Floor((float)m);

    string str = du + "°" + fen + "' " + miao + "\" E";
    return str;
}
public string GetStringLatitude(double value)
{
    float du = Mathf.Floor((float)value);
    double f = 60 * (value - du);
    float fen = Mathf.Floor((float)f);
    double m = 60 * (f - fen);
    float miao = Mathf.Floor((float)m);

    string str = du + "°" + fen + "' " + miao + "\" N";
    return str;
}

参考资料

经纬度格式转换工具

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
GNRMC是GPS NMEA-0183协议中的一种语句格式,用于传输GPS接收器的位置和速度等信息。其中包含了经纬度信息。 经纬度格式通常为度分秒格式(DMS)或度格式(DD)。度分秒格式是以度、分、秒的形式表示经度和纬度的值,例如122°45'30"表示为122度45分30秒。度格式则是以小数形式表示经度和纬度的值,例如122.7583度。 如果你需要将GNRMC语句中的经纬度信息从度分秒格式转换为度格式,可以按照以下步骤进行: 1. 从GNRMC语句中提取经纬度信息,例如$GNRMC,081836.00,A,3751.06450,N,12224.30680,E,0.038,,111220,,,A*64 2. 将经纬度的度、分、秒分别提取出来,例如上述语句中的纬度为3751.06450,表示为37度51分6.45秒。 3. 将分和秒转化为度数,例如上述纬度的度数为37+51/60+6.45/3600=37.8512361度。 4. 根据经纬度的方向(N、S、E、W)确定正负号,例如上述经度为东经122.7583度,正负号为正。 5. 将经纬度的度、分、秒合并为度格式,例如上述经度的度格式为122.7583度。 如果你需要将GNRMC语句中的经纬度信息从度格式转换为度分秒格式,则可以按照以下步骤进行: 1. 从GNRMC语句中提取经纬度信息。 2. 根据经纬度的正负号确定方向,例如东经122.7583度的方向为E。 3. 将经度或纬度的整数部分作为度数,例如122.7583度的度数为122度。 4. 将小数部分乘60,得到分数,例如0.7583×60=45.498分。 5. 将分数的整数部分作为分,例如45分。 6. 将小数部分乘60,得到秒数,例如0.498×60=29.88秒。 7. 将秒数保留两位小数作为秒,例如29.88秒。 8. 将度、分、秒组合成度分秒格式,例如122°45'29.88"。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值