Прошу помощи, так как не разобрался или стал перед стеной. Есть задачка получить координаты из загруженной фотографии (геометрии) метаданных exit. В описании модуля говорится что geocoder может читать exif и выковыривать геометки. Логика такова: создан тип материала где есть поле image, и второе поле Geofield которое натравлено на image ( получить координаты) . Суть вопроса как выковырять из фото геометрии и перенести их в поле Geofield. Или я не правильно понимаю логику. Или совсем не понимаю логику. Если есть примеры или документация по модулю geocoder . Пните буду признателен. Пример http://www.geodemocracy.com/geofield_d8/web/geoplaces-map-leaflet не считать за рекламу
Комментарии
Если честно, не очень понимаю что такое "геометрия" в этом контексте, но любые данные из EXIF считываются с помощью функции PHP exif_read_data (должно быть включено php-расширение exif). Вот пример из моего живого кода:
* Implements hook_preprocess_image_widget().
*/
function MYMODULE_preprocess_image_widget(&$variables) {
$element = $variables['element'];
if ((\Drupal::service('path.current')->getPath() == '/node/add/pictures') && !empty($element['fids']['#value'])) {
$file = reset($element['#files']);
try {
$exif = @exif_read_data(drupal_realpath($file->getFileUri()));
$ExifDate = $exif && isset($exif['DateTimeOriginal']) ? $exif['DateTimeOriginal'] : '';
} catch (\Exception $e) {
// Logs a notice
\Drupal::logger('MYMODULE')->warning(t("Error while reading EXIF tags from image."), $e);
}
$element['file_' . $file->id()]['filename']['#suffix'] = ' <span class="file-size">(' . format_size($file->getSize()) . ')</span>, shot on <span class="exif-date"> ' . $ExifDate . '</span>' ;
}
}
Существует модуль EXIF, но он глючный и не нужен.
Как выковырять я вроде объяснил. Как перенести - очевидно операцией присвоения?
Если Вы не понимаете, то нам-то как понять?
PS Совершенно непонятно при чем здесь Geocoder. Геокодинг - преобразование координат в человекопонятный адрес или обратно. У Вас и в картинке координаты, и Geofield хранит координаты. Что тут геокодировать?
Большое спасибо! за направление, я новичок и в программировании на PHP еще очень и очень слаб. так что буду грызть гранит.
Тогда можно попробовать начать с модуля Exif - он как раз позволяет вытаскивать указанные метки из файла картинки и раскладывать в указанные поля, только вот боюсь поле Geofield он не осилит, но надо смотреть.
Модуль Geocoder не нужен точно.
В программировании там ничего страшного тоже нет - когда я писал этот код, я тоже был новичок и очень очень слаб
я так понял что для модуля EXIF необходимо создать словарь таксономии с теми метками EXIF которые необходимы. сейчас разбираюсь. и при показе Example of field name and the metadata extracted
выдал мне сначала две ошибки
но потом и метки
Там в документации полная туфта написана, никакой таксономии не нужно, нужно просто поставить модуль, полазить по менюшкам и эмпирически разобраться. Ещё полезно почитать Issues, я там даже что-то писал, пока не осознал, что из всего этого модуля мне нужны три строчки кода, которые проще перенести в свой модуль, чем патчить это угробище
Геокодирование - это процесс получения координат из адреса. Реверсивное геокодирование - это процесс получения адреса из координат. Ни то, ни другое в вашей задаче не нужно.
Моя задача по геометкам exif из фото на карте определить где отснято было это фото. и метку поставить на карте.
Хочу разобраться.
Чтобы поставить метку на карте, нужна только широта и долгота. Всё, что вам нужно - это переписать широту и долготу из меток в поле geofield. То есть никаких "определить, где снято", "спросить дорогу"и т.д., а просто перенести две цифры из метаданных файла в материал, к которому этот файл прикреплен. Именно на решении этой задачи стоит сконцентрироваться.