Вычислите вторую точку, зная начальную точку и расстояние

с помощью значения Широты и Долготы (Точка A), я пытаюсь вычислить другую Точку B, перенос на расстоянии в X метры 0 радианов от точки A. Тогда отобразите точку B значения Долготы и Широта.

Пример (Псевдо код):

PointA_Lat = x.xxxx;
PointA_Lng = x.xxxx;
Distance = 3; //Meters
bearing = 0; //radians

new_PointB = PointA-Distance;

Я смог вычислить расстояние между двумя Точками, но что я хочу найти, вторая точка, зная расстояние и перенос.

Предпочтительно в PHP или JavaScript.

Спасибо

28
задан pppglowacki 2 February 2010 в 20:58
поделиться

3 ответа

Кажется, что вы измеряете расстояние (R) в метрах, а подшипник (тета) против часовой стрелки из-за наступления восток. И для ваших целей (undereds of meters), плоская геометрия должна быть достаточно точной. В этом случае

dx = R*cos(theta) ; theta measured counterclockwise from due east
dy = R*sin(theta) ; dx, dy same units as R

, если тета измеряется по часовой стрелке из-за севера (например, компас подшипники), Расчет для DX и DY немного отличается:

dx = R*sin(theta)  ; theta measured clockwise from due north
dy = R*cos(theta)  ; dx, dy same units as R

в любом случае изменение градусов долготы и широта:

delta_longitude = dx/(111320*cos(latitude))  ; dx, dy in meters
delta_latitude = dy/110540                   ; result in degrees long/lat

разница между константами 110540 и 111320 связана с облучкой Земли. (Полярные и экваториальные окружности разные).

Вот сработанный пример, использующий параметры из более позднего вопроса вашего:

, дал начало местоположения на долготе -87,62788 градуса, широта 41,88592 градусов, Найдите координаты точки 500 метров к северо-западу от места начала.

Если мы измеряем углы против часовой стрелки из постороннего востока, «Northwest» соответствует к Theta = 135 градусов. R 500 метров.

dx = R*cos(theta) 
   = 500 * cos(135 deg) 
   = -353.55 meters

dy = R*sin(theta) 
   = 500 * sin(135 deg) 
   = +353.55 meters

delta_longitude = dx/(111320*cos(latitude)) 
                = -353.55/(111320*cos(41.88592 deg))
                = -.004266 deg (approx -15.36 arcsec)

delta_latitude = dy/110540
               = 353.55/110540
               =  .003198 deg (approx 11.51 arcsec)

Final longitude = start_longitude + delta_longitude
                = -87.62788 - .004266
                = -87.632146

Final latitude = start_latitude + delta_latitude
               = 41.88592 + .003198
               = 41.889118
46
ответ дан 28 November 2019 в 03:15
поделиться

Было бы полезно, если бы вы знали, что 3600 секунд дуги - это 1 градус (лат. или длина.), что в морской миле 1852 метра, а в морской миле - 1 секунда дуги. Конечно, вы зависите от расстояний, которые являются относительно короткими, в противном случае вам пришлось бы использовать сферическую тригонометрию.

3
ответ дан 28 November 2019 в 03:15
поделиться

dx = sin(bearing)
dy = cos(пеленг)
x = центр.x + дистdx;
y = center.y + dist
dy;

-1
ответ дан 28 November 2019 в 03:15
поделиться
Другие вопросы по тегам:

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