2016-07-15 2 views
0

Я работаю над приложением Android, которое может отслеживать движения. Моя проблема в том, что мне нужно преобразовать координаты gps в 2-d координату на плоскости.convert WSG84 gps координата координаты x y на карте

Координаты, которые я получаю сейчас, представлены в формате WSG84. Мне нужны эти координаты, потому что мне нужно вычислить расстояние между точкой и линией, чтобы понять, если я слишком далеко от заранее определенного пути. Область, в которой я работаю, невелика по отношению ко всей земле, поэтому я думаю, что все в порядке, не заботясь о оси z.

У меня нет карты, поэтому мне просто нужно вычислить эти координаты в фоновом режиме. Благодаря!

ответ

0

Это:

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

, кажется, ключевой вопрос, который вы задаете. Вот что я отвечу.

В строгом смысле переход от сферических к евклидовым координатам невозможен, поэтому люди придумали систему UTM среди многих других. Проблема с использованием UTM для вашей цели заключается в том, что данный lat/lon может находиться в разных регионах, поэтому пары (x, y) не будут корректно коррелировать.

Если у вас есть три точки А, В и Р, где А & B определяет начало и конец вашей линии, и P является точкой вы хотите знать о, то мое лучшее предложение заключается в следующем:

  • вычислить большой круг расстояние (d) от Р до в
  • вычислить подшипник от Р до в (тета)
  • вычислить подшипник от А до в (альфа)

Если точки на самом деле очень близко друг к другу то пространство вы работаете локально евклидовой, так что расстояние от линии от А до Б является:

d sin(alpha - theta) 

Есть множество онлайн ссылки на вычисления большой расстояния и несущей в Java для WGS84. например.

http://openmap.bbn.com/svn/openmap/trunk/src/openmap/com/bbn/openmap/proj/GreatCircle.java

... это просто один из многих.

+0

Спасибо @RabidMutant, я думаю, что это решение может работать, но это зависит от того, что вы подразумеваете под «очень близко друг к другу». Область, в которой я работаю, - это почти весь город Рима. – cec91

+0

Рим в порядке. Рим в Париж, тем более. – RabidMutant

+0

Существует также множество инструментов для расчета расстояния. После того, как вы написали свой код, я предлагаю проверить его, сравнив его с онлайн-инструментами. – RabidMutant

 Смежные вопросы

  • Нет связанных вопросов^_^