Reply to comment

Направление съемки в gallery2

Геотегирование фотографий давно стало обыденным делом: оно поддерживается многими веб-сервисами, программами, в дешевые цифромыльницы встраивают GPS, к дорогим зеркалкам предлагают прикупить отсутствующую половину электроники, которая, заодно и GPS поддерживает. Однако, почти всегда дело ограничивается только расстановкой координат т.е. точки съемки. А в exif предусмотрено гораздо больше полей: координаты объекта съемки, направление съемки (только горизонтального, направления по вертикали нет), направление и скорость движения во время съемки. Из этих полей мне приглянулось направление съемки (положение объекта съемки тоже интересно, но не в этот раз) и я решил добавить его поддержку в gallery2.

Поддержка в gallery2

Для галереи существует замечательный модуль map, отображающий фотографии на карте. Меня в нем не устраивали две вещи:
  • Отсутствие поддержки направления съемки
  • Использование GoogleMaps в качестве движка
Первый недостаток пришлось исправлять самостоятельно: дописав модуль map. Посмотреть на результат можно здесь. Вы можете получить на своем сайте ту же функциональость наложив патч, приложенный к этому посту. Добавлены следующие плюшки:
  • Чтение тега направления съемки
  • Вычисление угла обзора (для ограниченного набора камер)
  • Отображение всего этого хозяйства с помощью KML
  • Я ставил перед собой цель не сделать нечто готовое к промышленному использованию, а всего-лишь красиво отобразить фотографии на этом сайте, поэтому у предлагаемого кода есть существенные ограничения:
    • Данные о направлении считываются только из EXIF, их нельзя задать из галереи
    • Угол обзора корректно вычисляется только для canon 40D, canon 400D и full frame 35мм камер. Дело в том, что для его вычисления необходимо знать размер сенсора, а он в EXIF не хранится. Поэтому приходится иметь массив размеров сенсоров у разных моделей фотоаппаратов. Вы можете внести свою модель, отредактировав map/classes/FOWCalculator.class.
    • Отсутсвует вычисление направления на северный полюс по направлению на магнитный полюс.

    Используем OpenLayers

    Вместо GoogleMaps, используемого по умолчанию, я решил применять свободный и более продвинутый OpenLayers. В данном случае задача упрощается тем, что я использую drupal и модуль Mapping Kit. Достаточно просто добавить на карту KML слой, генерируемый map. Кстати, встроенная в map карта отображать направление съемки не умеет, с OpenLayers такой проблемы нет.
  • Подготовка фотографий Чтобы вся эта радость работала необходимо заполнить соответствующие поля в EXIF. Фотокамер с цифровым компасом я не встречал, поэтому придется делать это ручками. Я направление прикидывал на глаз, поглядывая на карту и устанавливал его с помощью exiftool:
    exiftool -GPSImgDirectionRef=T -GPSImgDirection=220 -GPSLatitude=55.64959 -GPSLongitude=37.97509 IMG_9315.jpg
    Поклонники творчества Билла Гейтса могут поискать программы, позволяющие это делать через графический интерфейс, они точно существуют.
AttachmentSize
map.diff13.55 KB

Reply

  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Lines and paragraphs break automatically.
  • You can enable syntax highlighting of source code with the following tags: <code>, <blockcode>, <c>, <cpp>, <drupal5>, <drupal6>, <java>, <javascript>, <php>, <python>, <ruby>. The supported tag styles are: <foo>, [foo].

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Enter the characters shown in the image.