Как вычислить координаты второй точки на карте?

#java #math #gps

#java #математика #gps

Вопрос:

Пример изображения У меня есть координаты первой точки на карте, есть расстояние между точками и есть градусы поворота относительно сторон света (от компаса). Подскажите, пожалуйста, как вычислить координаты второй точки на карте?

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

Комментарии:

1. Не могли бы вы привести пример? Тогда это легче понять.

2. Например, я стою в точке А и записываю ее координаты и направление, в котором я иду, прохожу расстояние и записываю его. как теперь я могу узнать координаты точки, на которой я остановился?

3. Было бы замечательно, если бы вы нарисовали пример в Paint или что-то еще и показали его. Сейчас мне это не совсем понятно. Сейчас для меня это звучит как простое сложение векторов, что, вероятно, неверно, потому что вы упомянули что-то о вращении.

4. добавлена картинка

Ответ №1:

На этот вопрос может быть множество ответов, в зависимости от того, что именно вы подразумеваете под широтой, долготой и компасом, и какая точность вам требуется.

Простейшим случаем является то, что широта и долгота относятся к сферической модели Земли (с радиусом земли R), и этой субметровой точности достаточно. Затем мы можем вычислить:

 lat1Rad = lat1 * pi/180 // latitude of source point in radians
lon1Rad = lon1 * pi/180 // longitude of source point in radians
slat = R  // R is earth radius 
slon = R*cos( lat1Rad)
bRad = compass*pi/180  // compass reading in radians
dN = dist*cos( bRad)   // change in northing
dE = dist*sin( bRad)   // change in easting
lat2Rad = lat1Rad   dN/slat  // target latitude in radians
lon2Rad = remainder( lon2Rad   dE/slon, 2.0*pi)  // target longitude in radians
  

Это просто плоская геометрия, за исключением того, что Масштаб долготы (т. Е. Сколько стоит небольшое изменение долготы в метрах) зависит от косинуса широты.

Это должно быть лучше, чем миллиметр на расстоянии 100 м, и лучше, чем сантиметр на расстояниях до 1 км.

Вы можете задаться вопросом о вызове остатка при вычислении длительности. В вашем конкретном случае это не требуется (т.Е. Может быть опущено), но с годами у меня вошло в привычку писать код, который будет работать, даже если вы близки к 180 к востоку (или западу)

Некоторые более сложные случаи: ваши широта и долгота могут быть относительно эллипсоидной модели земли (например, WGS84). В этом случае переменные slat и slon необходимо вычислять по-разному, используя детали используемого эллипсоида.

Ваш компас — это магнитное устройство. В этом случае вам необходимо скорректировать компас на магнитное отклонение (иначе магнитное склонение), чтобы получить показания относительно истинного севера.

Вам требуется более высокая точность. В геодезии принято интерпретировать проблему как следующую геодезической (большой круг для сферической земли) между точками. Затем код нужно переписать полностью. Для сферической земли существуют (относительно) простые формулы для использования. Для эллипсоидной земли есть код, который будет выполнять это вычисление.