Conversión de formato de longitud y latitud

oficial:

    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;
    }

Uso actual

float El número de dígitos significativos es 6
doble El número de dígitos significativos es 16 Los dígitos de
latitud y longitud son 8 ~ 9

Por lo tanto, necesita usar Double para la entrada de datos, pero es más conveniente usar float (Mathf).
Por lo tanto, se decide utilizar generalmente el grado, minuto y segundo para calcular, de la siguiente manera:

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

eg1. d = 116.307629, línea = 116
f = 60 * 0.307629 = 18.4577

eg2. d = 113.947906, línea = 114
f = 60 * -0.052094 = -3.1256

Actualizar:

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;
}

Referencia

Herramienta de conversión de formato de longitud y latitud

Supongo que te gusta

Origin blog.csdn.net/MikeW138/article/details/100297035
Recomendado
Clasificación