Преобразовать гео координаты в.... пикселы

Discussion in 'PHP' started by furang, 23 Nov 2011.

  1. furang

    furang Elder - Старейшина

    Joined:
    7 Apr 2007
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Добрый день.
    И нет. Я не сошел с ума. Суть проблемы изложена ниже.
    Есть некое количество IP-адрессов. Я с помощью GeoIP базы я получаю их гео координаты (широту и долготу). Дальше мне надо нанести эти точки на карту типа такой
    [​IMG]
    Т.е. мне нужно преобразовать гео-координаты в пикселы. Никак не соображу как такое сделать. Понимаю что обязательно нужно определить точку отсчета (например 0:0 градусов ) в пикселах и ширину и высоту карты. И то и другое в принципе можно определить с достаточной точностью. Но как дальше быть - не соображу. Кто-то может формулы кинуть (ну или код).
    Ах да. Реализую все на php.
    Заранее благодарен.
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    furang 1) найти гео координаты центра картинки (предполагаю, что это 0 0 градусов)
    2) найти длину в пикселах одного градуса для каждой из осей - размер картинки в пикселах / 360
    3) Полученные из GeoIP градусы умножить на длину в пикселях
    4) В зависимости от того северная или южная широта, западная или восточная долгота - прибавить или вычесть из координат центра полученную в шаге три длину
     
    _________________________
  3. furang

    furang Elder - Старейшина

    Joined:
    7 Apr 2007
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    У меня тоже в голове крутилось нечто подобное, но я сразу понял что такой подход неуместен. Карта это ведь плоское изображение, которое было снято со сферы (земного шара). Следовательно мерилианы и паралели будут прямые лишь на сфере (глобусе). На плоскости же они будут иметь нелинейный характер (если быть точнее, то что-то типа полупериода синусоиды с растянутым периодом)
    http://ru.wikipedia.org/wiki/%D0%9A%D0%B0%D1%80%D1%82%D0%B0_%28%D0%B3%D0%B5%D0%BE%D0%B3%D1%80%D0%B0%D1%84%D0%B8%D1%8F%29
    На картинке видно что я имею ввиду.
     
  4. попугай

    попугай Elder - Старейшина

    Joined:
    15 Jan 2008
    Messages:
    1,520
    Likes Received:
    401
    Reputations:
    196
    Есть такой сервис же.

    http://www.maploco.com/
    http://tools.digitalpoint.com/geovisitors.php
    http://www.revolvermaps.com/
    http://www.google.ru/search?hl=ru&q=visitors+map
     
    #4 попугай, 23 Nov 2011
    Last edited: 23 Nov 2011
  5. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    furang да, ошибся, пожалуй, но все зависит от выбора проекции на плоскость. Если под ваш рисунок, то будет так - http://bit.ly/tB12QJ
     
    _________________________
  6. furang

    furang Elder - Старейшина

    Joined:
    7 Apr 2007
    Messages:
    90
    Likes Received:
    14
    Reputations:
    0
    Нет. Ты чуть неправильно понял в чем суть. Мне нужно мапить кастомные IP-адресса (НЕ адресса моих посетителей). А суть предоставленных тобой сайтов - "вставь код к себе на сайт, при заходе JS сделает запрос нам, а ты получишь картинку на свой сайт из нашей базы"
    А мне нужно мои IP адресса отображать. Т.е. мне нужен только их инструментарий, но свои данные. Как-то так.
    Кстати все делается ради 3-го сайта. У них там красивый 3D глобус. Он отображает посетителей. А я хочу чтоб он отображал любые заданные мной адресса. Вот я реверсю его, хочу его заставить отображать мои данные. Для того и эти свитстопляски)
    Спасибо! Кажется это как раз то, что я искал)