Как найти ограничительный прямоугольник вокруг диагональной линии на карте? (Гео-город) - PullRequest
0 голосов
/ 05 марта 2020

Пользователь др aws линии на карте и хочет найти некоторую информацию на определенном c расстоянии этой линии. У меня есть A и B местоположений в "lat, lon" формате, и пользователь сообщает мне расстояние (расстояние между A и A1) в "метр, километр, ..." . Как я могу рассчитать A1, A2, B1, B2 местоположения в формате "lat, lon" ? Я использую C# и CoordinateSharp для работы с локациями.

enter image description here

ps: я прочитал это , и он работает на декартовой сеточной системе, но я не смог адаптировать его код для моей проблемы.

1 Ответ

0 голосов
/ 05 марта 2020

Имея координаты A и B, вы можете рассчитать подшипник в обеих точках (в общем случае подшипники различны).

С подшипником Fi в точке A вы можете рассчитать подшипники Fi - 90 и Fi + 90 и найдите точки A1 и A2 на необходимом расстоянии в соответствующих подшипниках.

То же самое для B1, B2

Вы можете получить формулы из Подшипник и Точка назначения с указанным расстоянием и азимутом от начальной точки главы на этой странице

Подшипник

θ = atan2( sin Δλ ⋅ cos φ2 , cos φ1 ⋅ sin φ2 − sin φ1 ⋅ cos φ2 ⋅ cos Δλ )

where   φ1,λ1 is the start point, φ2,λ2 the end point 
(Δλ is the difference in longitude)

Направление

φ2 = asin( sin φ1 ⋅ cos δ + cos φ1 ⋅ sin δ ⋅ cos θ )
λ2 = λ1 + atan2( sin θ ⋅ sin δ ⋅ cos φ1, cos δ − sin φ1 ⋅ sin φ2 )

where   φ is latitude, λ is longitude, θ is the bearing 
(clockwise from north), δ is the angular distance d/R; 
d being the distance travelled, R the earth’s radius
...