Простая картографическая проекция - PullRequest
1 голос
/ 13 декабря 2010

У меня есть карта 400x400, которая приблизительно представляет область 250x250 км, в которой я хочу проецировать GPS-координаты в форме широты / долготы.

Учитывая, что точность не очень важнанекоторые километры терпимы) есть ли простая формула или алгоритм, чтобы сделать проекцию и перевести в пиксельную координату?Если есть, какую ошибку я могу ожидать?Или я действительно ошибаюсь и нет простого способа получить необходимую точность?

Примечания:

  • Я читал про PROJ.4, но предпочитаю не использовать какую-либовнешняя библиотека, потому что программа должна работать на небольших устройствах
  • У меня нет данных калибровки на карте, но я могу калибровать ее самостоятельно, используя онлайн-карту.
  • С здесь Я немного задокументировал и знаю, как преобразовать широту / долготу в координаты x / y / z.Но я не знаю, как набрать с Z

Ответы [ 2 ]

4 голосов
/ 13 декабря 2010

Обычно это делается с использованием матрицы преобразования и с использованием проекции Меркаратора .

Вот хорошее место для начала .

Хотя это не Java, существует проект с открытым исходным кодом, называемый OpenHeatMap , который делает это в своем исходном коде. Это может быть хорошим местом для поиска (особенно setLatLonViewingArea, setLatLonToXYMatrix, mercatorLatitudeToLatitude в maprender / src / maprender.mxml).

Надеюсь, это поможет!

2 голосов
/ 13 декабря 2010

ГИС, вероятно, меня за это побьют камнями, но, предполагая, что вы не в высокой широте, вы можете просто определить широту / длину диагональных углов вашей карты, чтобы получить ограничивающий прямоугольник, выбрать угол в качестве источникаВозьмите разницу между вашей координатой GPS и началом координат, затем просто умножьте ее на пиксели, затем нарисуйте точку.

Я использовал это в прошлом для программы карты, с которой играл,и я на 39-й параллели.Если он не должен быть абсолютно точным и не слишком близко к полюсу (хотя для 250-километрового квадрата вы должны быть близко к полюсу, чтобы произошли грубые ошибки), это будет самым быстрым ипростой.

...