Вычисление новой долготы, широты от старых + n метров
Я хочу создать 2 новые долготы и 2 новые широты на основе координат и расстояния в метрах, я хочу создать хорошую ограничительную рамку вокруг определенной точки. Его малый масштаб и макс 1500 метров + и 1500 метров. Так что для части города, я не думаю, что кривая земли должна быть принята во внимание.
Итак, у меня есть 50.0452345 (x) и 4.3242234 (y), и я хочу знать x + 500meter, x-500meter, y-500meter, y + 500meter
Я нашел много алгоритмов, но почти все, похоже, имеют дело с расстоянием между точками.
Ответы
Ответ 1
Число километров на градус долготы составляет приблизительно
(2*pi/360) * r_earth * cos(theta)
где theta
- широта в градусах, а r_earth
- приблизительно 6378 км.
Число километров на градус широты примерно одинаковое во всех местах, приблизительно
(2*pi/360) * r_earth = 111 km / degree
Итак, вы можете сделать:
new_latitude = latitude + (dy / r_earth) * (180 / pi);
new_longitude = longitude + (dx / r_earth) * (180 / pi) / cos(latitude * pi/180);
Пока dx
и dy
малы по сравнению с радиусом земли, и вы не слишком близко приближаетесь к полюсам.
Ответ 2
Принятый ответ совершенно прав и работает. Я сделал некоторые хитрости и превратился в это:
double meters = 50;
double coef = meters * 0.0000089;
double new_lat = my_lat + coef;
double new_long = my_long + coef / Math.cos(my_lat * 0.018);
Надеюсь, что это тоже поможет.
Ответ 3
Вы проверили: Как найти длину лат/длинной, которая находится на x км к северу от заданного значения lat/long?
Эти вычисления в лучшем случае раздражают, я сделал многие из них. Формула haversine будет вашим другом.
Некоторая ссылка: http://www.movable-type.co.uk/scripts/latlong.html