Направление между 2 точками Широты/Долготы в C#

У меня есть 2 координаты в Длинном формате Lat.

Как я определяю от Точки (например, Нью-Йорк 37.149472,-95.509544) направление в градусах для указания на B (например, Торонто 40.714269,-74.005973)

Я ищу значение как "340 градусов"

В C#

12
задан James Schek 11 January 2010 в 15:19
поделиться

2 ответа

Если вы хотите, чтобы подписать постоянный подшипник, вы не хотите, чтобы максимально короткий (большой круг), который вы хотите, чтобы линия Rhumb

преобразование сценариев подвижного типа для этого

static double DegreeBearing(
    double lat1, double lon1, 
    double lat2, double lon2)
{   
    var dLon = ToRad(lon2-lon1);
    var dPhi = Math.Log(
        Math.Tan(ToRad(lat2)/2+Math.PI/4)/Math.Tan(ToRad(lat1)/2+Math.PI/4));
    if (Math.Abs(dLon) > Math.PI) 
        dLon = dLon > 0 ? -(2*Math.PI-dLon) : (2*Math.PI+dLon);
    return ToBearing(Math.Atan2(dLon, dPhi));
}

public static double ToRad(double degrees)
{
    return degrees * (Math.PI / 180);
}

public static double ToDegrees(double radians)
{
    return radians * 180 / Math.PI;
}

public static double ToBearing(double radians) 
{  
    // convert radians to degrees (as bearing: 0...360)
    return (ToDegrees(radians) +360) % 360;
}

// verify against the website example
DegreeBearing(50.36389,-4.15694,42.35111,-71.04083);
22
ответ дан 2 December 2019 в 05:15
поделиться

Если вы посмотрите на http://www.movable-type.co.uk/scripts/latlong.html имеет JavaScript, вы можете переписать в C #.

7
ответ дан 2 December 2019 в 05:15
поделиться
Другие вопросы по тегам:

Похожие вопросы: