Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Клуб программистов > Свободное общение
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2014, 11:39   #1
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию Перевод GPS-координат на плоскость

Всем здравствуйте.

Есть у меня маленькая проблема. Нужно мне на спроецировать GPS координаты на плоскость, т.е. мне приходят координаты в виде "широта-долгота", а мне надо как-то отобразить их на плоскую JPEG картинку в виде точки. Кто-нибудь в курсе, каким образом GPS-навигаторы это делают?

Все что удалось нагуглить - это проекцию меркатора. Но как выяснилось этих проекций может быть около 8 разных штук и немного неясно правильно ли вообще ей пользоваться.

Помнится кто-то на форуме тут занимался GPS-навигацией для немецких автомобилей?

Чтобы было немного понятней, вот что я примерно хочу сделать:
1) Зафиксировать одну точку на картинке, как начало координат
2) Измерять GPS-ом на андроиде местоположение устройтва
3) Отсчитать смещение по X и Y относительно начала координат
4) Отрисовать линию движения с соблюдением заданного масштаба
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 07.09.2014, 12:57   #2
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от MooNDeaR Посмотреть сообщение
а мне надо как-то отобразить их на плоскую JPEG картинку в виде точки. Но как выяснилось этих проекций может быть около 8 разных штук и немного неясно правильно ли вообще ей пользоваться.
Наверно надо рисовать в той проекции, что и сама картинка.

Кстати, просто проекции вам не хватит - если ваша картинка это карта, то скорее всего она топографически не верна.

Кроме Меркатора сразу вспомнилась полярная проекция.
А так их вагон и маленькая тележка... http://en.wikipedia.org/wiki/List_of_map_projections
waleri вне форума Ответить с цитированием
Старый 07.09.2014, 13:31   #3
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
Кстати, просто проекции вам не хватит - если ваша картинка это карта, то скорее всего она топографически не верна.
Картинка планирует быть картой, но на данном этапе я пока не знаю, какой проекцией она является и насколько топографически она верна (если я правильно понимаю слово "топографически" - это когда "что в коробке, то и на коробке", т.е. все объекты стоят на тех местах, как обозначено на карте с учетом масштаба).
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 07.09.2014, 21:01   #4
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Вообще-то если сделать приведение координат к точкам на картинке-карте, тогда вопрос проекции отпадает сам собой.
waleri вне форума Ответить с цитированием
Старый 07.09.2014, 23:26   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

MooNDeaR, чтобы отметить точку на карте, нужно чтобы карта имела координатную сетку. В данном случае когда делается снимок прямоугольной формы, получаем координаты 4х угловых точек(или 2х), на основе которых строится коор. сетка на данном изображении, и только теперь можно поставить некую точку на изображении.

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

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

Как мне думается, это более правильный подход к решению проблемы.
Человек_Борща вне форума Ответить с цитированием
Старый 08.09.2014, 11:48   #6
MooNDeaR
В стагнации
Участник клуба
 
Аватар для MooNDeaR
 
Регистрация: 29.07.2011
Сообщений: 1,303
По умолчанию

Цитата:
А без масштаба картинки к реальной местности, вы вряд ли сможете правильно отображать маршрут хотя бы в минутах, ну или вообще сообразить где находится точка со спутника, у вас на карте.
Предположим, у меня есть карта местности и масштаб по вертикали и горизонтали мне известен. Человек, в заранее известной точке, например на базе тыкает на изображении базы на карте и в меню выбирает "я здесь". Программа запоминает эту точку на карте как начало координат и отсчитывает все передвижения от неё. Получается необходима одна опорная точка (некий Check-in на базе) и адекватная проекция сферических координат (широта-высота) на плоскость.

Или я как-то неверно понимаю задачу?
E-mail: pashaworking@gmail.com | ICQ: 479914426 | Skype: moondearr
Понять, чего от тебя требует заказчик – это уже половина всей работы, а иногда и полностью выполненное задание.
MooNDeaR вне форума Ответить с цитированием
Старый 08.09.2014, 12:17   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Я точно не уверен, но наверно нужно 3 точки - эталон, ваше положение, конечная точка куда Вам пилить. Плюс для плоскости можно привязку к сторонам света ( в смысле как Вы карту отображать будете, классически север сверху, запад слева). На эталон Вы сделаете привязку карты, а на карту привяжите Ваше местоположение. Я бы так попробовал.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.09.2014, 12:17   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,330
По умолчанию

Цитата:
Сообщение от MooNDeaR Посмотреть сообщение
Предположим, у меня есть карта местности и масштаб по вертикали и горизонтали мне известен.
Это подходит для топографически точных крупномасштабных карт. Мелкомасштабная карта будет страдать нелинейностью из за того же Меркатора. Кроме того, большинство карт - это схемы и в плане координат они не точны. Если просто линейно пересчитывать масштаб, картинка вполне может показать, что вы едете домами, вдоль шоссе.

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

Эдакий warping наоборот.
Собственно, используя warping можно сдеформировать саму карту, чтоб масштаб был точным, но проще двигать одну точку, чем все.

Ref: http://en.wikipedia.org/wiki/Image_warping

Цитата:
Сообщение от Utkin Посмотреть сообщение
Я точно не уверен, но наверно нужно 3 точки
Для описания прямоугольника достаточно двух точек.

Последний раз редактировалось waleri; 08.09.2014 в 12:20.
waleri вне форума Ответить с цитированием
Старый 10.09.2014, 14:13   #9
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 17,351
По умолчанию

Цитата:
Для описания прямоугольника достаточно двух точек.
Я исходил из того что нужна привязка к карте.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 10.09.2014, 15:12   #10
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

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

Цитата:
Предположим, у меня есть карта местности и масштаб по вертикали и горизонтали мне известен. Человек, в заранее известной точке, например на базе тыкает на изображении базы на карте и в меню выбирает "я здесь". Программа запоминает эту точку на карте как начало координат и отсчитывает все передвижения от неё. Получается необходима одна опорная точка (некий Check-in на базе) и адекватная проекция сферических координат (широта-высота) на плоскость.

Или я как-то неверно понимаю задачу?
Правильно. Для маштаба посчитайте минуты, секунды и часы в их пиксельном эквиваленте для смешения указателя на вашей карте. Получите сетку неопределенного размера, взяв за 0 вашу отметку "Я здесь" далее во всех направлениях карты распространяйте сетку координат пока не дойдете до конца карты(изображения). Но на сколько точно потом будут совпадать ккординаты GPS с вашей коорд. сеткой - хз.

Сетку можно делать ввиде графов тогда ещё ипути потомпросчитывать сможете.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
перевод координат neprogrammist Общие вопросы Delphi 2 18.05.2010 23:20
Координатная плоскость korzunmaria Паскаль, Turbo Pascal, PascalABC.NET 1 23.04.2010 23:39
Перевод координат ax1d Общие вопросы Delphi 1 04.11.2009 14:23
Перевод координат городов в пиксели dubin Помощь студентам 5 19.10.2008 18:03
Плоскость в Delphi Sanprof Общие вопросы Delphi 21 29.01.2008 17:54