Пересчёт координат

Есть карта, которую я отрендрил в Maperitive (или выкачал тайлокачалкой)

Известен её bbox, и размер в пикселах. Хочу программно нанести на неё точку, её координаты есть в виде lat=‘55.9938923’ lon=‘37.5338348’.

Подскажите пожалуйста формулы перехода от latlon в пикселы на картинке?

А разве простое составление пропорций здесь не катит?

Немного офтопик, напомните формулу пересчета координат из float’а в int.

По долготе подходит, а по широте - ошибка в середине получается.

Што? В смысле, из долей градусов в меркаторовские метры?

Судя по картинке широта (та, что красными метками) отличается от реальных (с чёрные линии) на 1 градус. Может в этом проблема.

Алгоритм примерно следующий:

  1. Нужен bbox в координатах Меркатора. Если у вас bbox в географических координатах, то его можно пересчитать по формуле из пункта 2.

  2. Переводим точку с координатами lat, lon, в координаты Меркатора по формуле

    public void LatLonToMercator(double latitude, double longitude, out double x, out double y)
    {
    x = Math.Log(Math.Tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);
    x = x * 20037508.34 / 180;

    y = longitude * 20037508.34 / 180;
    }

  3. Затем полученную точку x,y по формуле пропорций переводим в координаты пикселя картинки.

Не, была просто тема на форуме, в которой не помню кем поднимался вопрос в чем хранить координаты? (Там кто то свое мега приложение для андроида кажись разрабатывал) Во флоате или дабле лонге или интах, там приводили фомулу пересчета градусов в интовые попугаи, это как я понимаю что то сродни формату с фиксированной запятой, просто дешевле хранить и быстрее считать, при немного ограниченной точности. Обсуждали что погрешность будет в районе 30 см. Меркаторовые метры всеравно для такой точности надо по идее с запятой хранить.

UPD: Сам нашел.

Скорее всего картинка в проекции меркатора. Нужно bbox пересчитать в меркатор, после чего все преобразования станут линейными.
Формулы тут http://wiki.openstreetmap.org/wiki/Mercator ну или proj4 в помощь epsg:3857.

Спасибо, всё рассчитывается!

А можно ссылку? “погрешность будет в районе 30 см” - это на экваторе?