Задать вопрос
@slavenski
Android developer

Как правильно перевести длину в прямоугольных координатах в проекцию wgs84?

Добрый день!
Пишу небольшую программку. В ней задается полигон, в координатах проекции wgs84. Выглядит примерно так:
5b168128144d8443439298.png
у меня есть некоторое расстояние (задается количеством метров), и мне нужно отрисовать от одной точки этого полигона это расстояние, и я так понимаю, что мне нужно длину расстояния в прямоугольных координатах перевести в проекцию WGS84. Не могу понять как это сделать, прошу помощи.
  • Вопрос задан
  • 142 просмотра
Подписаться 1 Простой Комментировать
Решения вопроса 1
@Sumor
Вопрос в том насколько точно вам нужно провести расчёты.
В первом и самом простом приближении можно использовать следующее:
Для точки полигона с заданными координатами X, Y вычислить примерные коэффициенты перевода в метры для данной точки.
Для широты это примерно 6356752/360~17657 метров на градус
Для долготы вычисляется в зависимости от широты, для каждой точки отдельно: 6378137/360 * cos(широты)
Например, если вам нужно найти примерные координаты точек отстоящих от точки с координатами (55,0000; 37,0000) на 1000 метров, то:
17657 метров на градус широты дают нам расстояние в 0,056634762 градуса на 1000 метров
Для долготы: 6 378 137/360 * cos(55 градусов) ~ 10162 метров на градус, что даёт 0,098405826 градуса на 1000 метров.
Итого нужные нам точки лежат в пределах 55+dY; 37+dY, где (dx/0,056634762)^2 + (dy/0,098405826)^2 < 1000^2

Подсчёты примерные, и наверняка с ошибками, но общий смысл должен быть понятен. Точность данных расчётов около метра, нужно больше - считайте точнее. При увеличении расстояний начнёт сказываться кривизна земли и данный метод станет совсем неточным.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
freeExec
@freeExec
Участник OpenStreetMap
Воспользоваться proj4 (а уже вышла 5 версия). Перевести вашу широту/долготу в метровую проекцию, например UTM. Прибавить в ней нужные метры. Перевести обратно в широту/долготу.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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