Вопрос про топографию :)

Тема в разделе "Общий", создана пользователем Jourim, 14 сен 2006.

  1. Jourim
    Оффлайн

    Jourim

    Регистрация:
    6 фев 2006
    Сообщения:
    263
    Баллы:
    0
    Адрес:
    Екатеринбург
    Я понимаю, что не по теме, но может кто знает или пальцем ткнет где именно про это спросить?

    Написал я тут тулзень предназначеную для скачивания и просмотра гуглефских фоток (GoogleEarth, GoogleMoon, GoogleMars и т.д. - может еще чего есть).
    Тулзь, если кому интересно, тут:
    http://www.ingortech.ru/car/Prog/GoogleV/index.html

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

    Просьба как можно более подробно т.к. в топографии я пень :)
    Желательно линк на математику\либу\описание\...
     
  2. Загрузка...


  3. Sintodo
    Оффлайн

    Sintodo

    Регистрация:
    6 фев 2006
    Сообщения:
    39
    Баллы:
    0
    Адрес:
    г.Королев М.О.
    Может не прокатить. Почему?

    Как делают карты? Проводят аэрофотосъему с определенной высоты на определенной скорости и через равные промежутки времени, покрывая по квадратику местность. Таким образом "прочесывают" район будующей карты. Потом фотки складывают как пазл.
    Фишка в том, что с небольшой высоты земная поверхность воспринимается как плоскость, а не как фрагмент сферы. При съемке максимальные искажения, естественно, будут на границах участков, но они достаточно сильно пересекаются, эти участки, практически до половины участка накладывается на другой. Потом руками производят коррекцию карты, подгоняют изображение, чтобы "бились" все несовпадения, стремясь приблизить погрешность к нулю.

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

    Вопрос, собственно, в том, насколько качественно формируется карты Гугла, какой величины, по габаритам, используются снимки, чтобы "собрать" карту. При этом руками никто не подгоняет погрешности. Ну и не надо забывать, что военные проекты Гугла не особо пересекаются с гражданскими, поэтому четкость фоток - это одно, а реальное положение объектов от центра фотографии - совсем другое.

    При этом хочется сказать, что при составлении карты в масштабе более 1 км на 1 см, на все вышеизложенное, пожалуй, нужно забить, если, конечно, никто не собирается по этим картам наносить точечные ракетно-бомбовые удары. :)

    А по поводу - как найти координаты: сформированную из рисунков карту Гугля нужно привязать на местности или с помощью топографической карты по явным ориентирам в Озике.
     
  4. Jourim
    Оффлайн

    Jourim

    Регистрация:
    6 фев 2006
    Сообщения:
    263
    Баллы:
    0
    Адрес:
    Екатеринбург
    Можно и так, хотя проще просто знать мат-описание для того геоида, которым гугель пользуется.
    Собственно GoogleMV именно так и делает.

    Однако сама задача привязки конкретного изображения у меня вообще не стоит!
    Мне надо в реалтайме, в своей проге координаты определять.
    Нужно это как для того, чтобы те самые растры клеить, которые потом в ОЗИ пользоваться (хотя эта задача нужна исключительно теоретически), так и для того. чтобы показывать собственное положение прямо на выкачанных изображениях (а вот это уже имеет практическую пользу).

    В какой топографической системе используются квадратные карты не в курсе?
     
  5. Sintodo
    Оффлайн

    Sintodo

    Регистрация:
    6 фев 2006
    Сообщения:
    39
    Баллы:
    0
    Адрес:
    г.Королев М.О.
    Тут я пас. По большому счету - перехватывай сигнал ГПС-приемника с порта и подставляй их себе. Но по-моему это - конкретный геморр.. Я лично не знаю людей, кто бы решил эту задачу.
    Для этого нужно вместе с картинкой сохранять информацию Гугла о координатах данного рисунка. А вот дает он 4 точки по краям или координаты центра и сторону квадрата - большой вопрос. Надо знать (и мочь вытащить) эту инфу, если это теоретически доступно.
    Не знаю...Не-не-не . Даже не совсем понимаю, о чем ты.:(
     
  6. Sintodo
    Оффлайн

    Sintodo

    Регистрация:
    6 фев 2006
    Сообщения:
    39
    Баллы:
    0
    Адрес:
    г.Королев М.О.
    2 Jourim:
    Ну как, получилось?
     
  7. Jourim
    Оффлайн

    Jourim

    Регистрация:
    6 фев 2006
    Сообщения:
    263
    Баллы:
    0
    Адрес:
    Екатеринбург
    Тут я не понял о какой задаче речь идет.
    Если читать данные жпс-ки в, скажем, NMEA формате, то это вообще не задача.
    Пишется за полдня.
    Или за четверть дня ищется готовая либа и дотачивается еще пару дней :)
    Второй путь значительно длиннее изначально, зато потом, при удаче, можно сьекономить на отладке и глюках.
    Д нет, там все проще гораздо.
    На _любом_ уровне зума гугель выдает всю земную поверхность.
    Геоид, который используется - WGS84 (хтоб сомневался :)).
    Перевод координат из расстояния (координат имиджа) в топографические делается по матемтике, которая известна для WGS84.
    Это я знал и раньше, однако у гугеля есть тонкости из-за которых влоб не работало, а знаний топографии у меня не хватало, чтобы понять чего не так.

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

    Итого: координаты я уже двно имею нормальные.
    Сейчас прилаживааю geotrans-овую либу, чтоб можно было во всех проекциях\системах координат координаты смотреть\вводить. Потом приляпаю показ озиковких треков и вейпоинтов. Возможно приручу и жпс. Хотя это под вопросом т.к. не могу придумать как это потом поженить с озиком т.к. хочется, чтобы была возможность использовать эти две проги одновременно, а достп к портам в винде монопольный...
    В результате получится тот конечный продукт, который мне и был нужен - чтобы ориентироваться в городе по карте.
     
  8. NectarIn
    Оффлайн

    NectarIn

    Регистрация:
    29 мар 2007
    Сообщения:
    2
    Баллы:
    0
    Адрес:
    Санкт-Петербург
    Уважаемый Jourim, был бы Вам очень признателен, если бы Вы подкинули ссылку или сами формулы... Вопрос у меня обратный - из координат в точки, причем вопрос жизни и смерти, причем срочный! Помогите, пжлст!
     
  9. Jourim
    Оффлайн

    Jourim

    Регистрация:
    6 фев 2006
    Сообщения:
    263
    Баллы:
    0
    Адрес:
    Екатеринбург
    Настолько срочный что аж посмотреть, что на странице выложены сорсы некогда?
    Понимаю, бывает :)

    #define GOOGLE_XSIZE 360.0
    #define GOOGLE_YSIZE (GOOGLE_N_LAT+GOOGLE_S_LAT)

    #define GOOGLE_MAX_ZOOM 30

    #define GOOGLE_W 256
    #define GOOGLE_H 256

    #define GOOGLE_MAXPLATE( zoom ) ((((GCoord_t)1)<<zoom)-1)
    #define GOOGLE_MAXW( zoom ) (GOOGLE_MAXPLATE(zoom)*GOOGLE_W+GOOGLE_W)
    #define GOOGLE_MAXH( zoom ) (GOOGLE_MAXPLATE(zoom)*GOOGLE_H+GOOGLE_H)
    #define GOOGLE_PLATEW( zoom ) (GOOGLE_GW / (((GCoord_t)1)<<zoom))
    #define GOOGLE_PLATEH( zoom ) (GOOGLE_GH / (((GCoord_t)1)<<zoom))

    #define GOOGLE_GW GOOGLE_MAXW(GOOGLE_MAX_ZOOM)
    #define GOOGLE_GH GOOGLE_MAXH(GOOGLE_MAX_ZOOM)

    typedef __int64 GINT;
    typedef GINT GCoord_t;

    /* Converts int google X coord to lon
    */
    double GV_DECLSPEC Google2X( GCoord_t gx ) { return GOOGLE_XSIZE * gx / GOOGLE_GW; }
    /* Converts int google Y coord to lat
    */
    double GV_DECLSPEC Google2Y( GCoord_t gy ) { return (2 * atan(exp(((double)gy)/GOOGLE_GH*2*M_PI - M_PI)) - M_PI/2) * 180 / M_PI; }

    /* Make int google X coord from lon
    */
    GCoord_t GV_DECLSPEC X2Google( double x ) { return x * GOOGLE_GW / GOOGLE_XSIZE; }

    /* Make int google Y coord from lat
    */
    GCoord_t GV_DECLSPEC Y2Google( double y )
    { double z = sin( y * M_PI / 180 );

    return GOOGLE_GH/2 + 0.5 * log( (1+z)/(1-z) ) * (GOOGLE_GW / (2*M_PI));
    }

    ПС: Переводить на паскаль, сишарп, яву или бейсик я не буду.
     
  10. NectarIn
    Оффлайн

    NectarIn

    Регистрация:
    29 мар 2007
    Сообщения:
    2
    Баллы:
    0
    Адрес:
    Санкт-Петербург
    Благодарю. Сам нашел чуть позже.
     
  11. igorpav
    Оффлайн

    igorpav

    Регистрация:
    14 фев 2007
    Сообщения:
    331
    Баллы:
    166
    Адрес:
    Москва
    На фотографии Пачозера, слева обыкновенная военная карата, с километровой сеткой, координаты Гаусса,от Экватора вверх и вниз "долгота" , вправо и влево от "Гринвича" широта
    Я не очень понял вопрос, но если есть принемник GPS? то он показывает координаты точки , в которой находишься, с точностью нескольких метров,а карты можно загрузить(IGo)