SASGIS

Веб-картография и навигация


View Issue Details Jump to Notes ] Issue History ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0001201SAS.Планета[All Projects] Хотелкаpublic06-03-2012 03:3913-09-2013 13:11
ReporterParasite 
Assigned Tozed 
PrioritynormalSeveritytweakReproducibilityN/A
StatusclosedResolutionfixed 
PlatformWindowsOSServerOS Version2003
Product Version110418 
Target Version120808Fixed in Version120808 
Summary0001201: Добавление GeoEXIF в сводимые JPG
DescriptionПриветствую.

Было бы неплохо(с), если бы при сведении карты в ЖПЕГ в результирующий файл добавлялись бы GeoRef метки в EXIF. Это дало бы возможность автоматически располагать эти файлы согласно привязки в программах, которые умеют GeoPhoto.
Как пример - http://www.aerialimaging.co.nz/assets/Photos/Geo-Photo-Mapping2.jpg
Additional InformationПривязывать предлагаю центр сводимой карты.
Вносить данные в EXIF можно, например, с помощью EXIFtool (фриварь) или чего-нибудь подобного.
Tagsexif, jpg, склейка
Attached Files

- Relationships
related to 0001909resolvedzed Опционально не записывать EXIF при экспорте в JPEG 

-  Notes
(0005859)
zed (manager)
06-03-2012 14:26

vdemidov, с какого перепугу я вдруг стал ответственным за этот тикет?
(0005860)
vdemidov (manager)
06-03-2012 14:29

Ну ты ж разбирался с библиотекой экспорта в джепег. Можно его там сделать? Если нельзя или не хочешь, то просто закрой с won't fix. Я делать точно не буду.
(0005861)
vasketsov (manager)
06-03-2012 14:31

Я exif читал "руками", по оригинальной спецификации делал, писать тем кодом нельзя. Так что я тут тоже не помогу ничем.
(0005862)
Parasite (administrator)
06-03-2012 14:52

>Я делать точно не буду.
В постпроцессинге жпега весь сабж приравнивается к одной строчке, "вшивающей" привязку в экзиф юзая, например, EXIFtool (сорцы доступны).
http://en.wikipedia.org/wiki/ExifTool

Лично мне - некритично, у меня именно так и именно им и вшивается. Для проекта - было бы полезно в общем и целом, я так считаю. Сторонней фриварной тулзой или своими силами - некритично.
(0005863)
zed (manager)
06-03-2012 14:56
edited on: 06-03-2012 15:02

>Если нельзя
Честно говоря, я слабо представляю себе ситуацию, когда бы в jpeg нельзя было записать exif. Писать можно хоть руками, хоть либами (http://libexif.sourceforge.net/) хоть чем угодно ещё.
Та либа, которая сводит жпеги в файл, про exif ничего не знает, как и положено unix-way утилитам: "Делай что-то одно, но делай это хорошо" (c). Такой же философии придерживается и libexif.

(0005864)
Parasite (administrator)
06-03-2012 14:59

PS: готов предоставить примеры пар "непривязанных"+"привязанных" жпегов, если этим кто-то будет вообще заниматься. Впрочем, любая привязка любого жпега на любые координаты делается, например, через тот же GeoSetter (http://www.geosetter.de/en/), внезапно юзающий все тот же ExifTool....
(0005865)
Parasite (administrator)
06-03-2012 15:03
edited on: 06-03-2012 15:04

PPS: недавно под Android появилось весьма годное приложение, юзающее GeoRef - распиаренное кучей изданий (через кои его нарыл и я лично), и уже собравшее кучу хитов.
http://sitis.mobi/geoview

Имхо, если планируется хоть какая-то экспансия проекта - то на тикет стоило бы обратить пристальное внимание.

(0005868)
vasketsov (manager)
06-03-2012 15:44
edited on: 06-03-2012 15:45

>Та либа, которая сводит жпеги в файл, про exif ничего не знает, как и положено unix-way утилитам
Когда я пытался читать exif, я дошёл до той либы что читает jpeg-и. Точнее до реализации, используемой в сасе. Так вот если б там была хотя бы одна виртуальная функция, которой бы передавалось открытое изображение, чтобы почитать оттуда из каталогов внутри картинки - проблема с exif решилась бы "в одну строчку". Однако вклиниться в процесс чтения без переписывания либы (ну или что равносильно написанию своей либы) ну никак не получилось. Есть стойкое подозрение, что с сохранением будут те же яйца, только в профиль (если мы говорим за то как нагадить в exif при сохранении jpeg-ов из саса, а не о сферических лошадях на геостационарной орбите). Так что конкретно это - пример корявой с трудом рассширяемой реализации, а не unix-way.

А вообще конечно пункт не надо закрывать. Кому надо будет - тот сделает.

(0005870)
zed (manager)
06-03-2012 16:26

>Когда я пытался читать exif, я дошёл до той либы что читает jpeg-и.
Так то 2 совершенно разные задачи: читать/писать exif (мета-информация), и читать/писать jpeg (растр). И задачи эти решаются отдельно, двумя разными инструментами.

>Так вот если б там была хотя бы одна виртуальная функция
Не надо вилкой есть суп, для этого есть ложка.

>Так что конкретно это - пример корявой с трудом рассширяемой реализации, а не unix-way.
Неправда. Exif же можно писать не только в jpeg между прочим. Есть ещё tiff как минимум. И что, в каждой либе, формат растра которой поддерживает exif, пихать собственные костыли по чтению/записи? Вот это точно получится бедлам. Ну или что-то похожее на компоненты delphi "всё в одном", типа вампира, что работает чуть ли не с любым растром, но вываливается с out of memory при попытке свести большой файл.

>Кому надо будет - тот сделает.
1. Юзаем libjpeg и сводим растр на винт (done)
2. Юзаем libexif и дополняем раст любой вспомогательной информацией (some one ToDo)
(0005871)
vasketsov (manager)
06-03-2012 17:11

>2 совершенно разные задачи
Нифига подобного. Оттого что растр лежит не во всех "каталогах" картинки, суть от этого не меняется, сперва надо этот растр _найти_, а это НИЧЕМ не отличается от поиска EXIF. То бишь задачи по ходу чтения решаются _абсолютно_ идентичные - найти начало данных с нужным тэгом внутри картинки.

>в каждой либе, формат растра которой поддерживает exif, пихать собственные костыли по чтению/записи?
Нет, достаточно "завиртуалить" поиск тэгов каталога $FFD8, $FFFE, $FFE1 и т.п. и других аналогичных (в зависимости от формата) на уже открытом файле. Возможность этого совершенно очевидна самим существованием метаинформации типа exif. Читать exif - означает найти его положение в файле. Естественно "отщёлкивать" от него $457869660000 и возвращать Strings не надо. Зато представь себе необходимость читать Exif из тайлов в кэше - каково будет дважды искать-открывать-закрывать картинки?

> 1. Юзаем libjpeg и сводим растр на винт (done)
> 2. Юзаем libexif и дополняем раст любой вспомогательной информацией
Я ни за что не поверю, что unix-way подразумевает невозможность записи на носители, для которых либо невозможно чтение (лента), либо невозможна модификация уже существующих файлов (типа спецнастройки ftp). В этом и суть кривости имеющегося решения (по крайней мере с моей точки зрения).
(0005872)
zed (manager)
06-03-2012 18:28

>Читать exif - означает найти его положение в файле.
А ну в таком случае и эта либа возможно сможет работать с exif:

"Some applications may need to insert or extract special data in the JPEG
datastream. The JPEG standard provides marker types "COM" (comment) and
"APP0" through "APP15" (application) to hold application-specific data."

т.е. там есть методы для записей своих "маркеров" в хедер жпега. Если exif пишется/читается в один из таких маркеров, то в общем-то и проблем быть не должно.

PS я лично под выражением читать exif понимаю распарсить его до состояния поле-значение, а не просто получить некий набор байт с пометкой "exif".
(0005874)
zed (manager)
06-03-2012 21:08
edited on: 06-03-2012 21:18

Да, походу так и есть: в тэг под маркером M_APP0 (0xE0) пишется стандартный 'JFIF', а в следующий тэг M_APP1 (0xE1), при желании, кладётся exif. Так что никаких проблем и в libjpeg соблюдён самый что ни на есть unix-way :)

(0005875)
vasketsov (manager)
06-03-2012 21:26
edited on: 06-03-2012 21:28

>APP1
Я в курсе. Я про то что нельзя при чтении JPEG за один проход получить ВСЁ. По крайней мере _используемая_реализация_ это не позволяет. Чтобы было всё идеально - надо было про написании TJpegFileFormat.LoadData "ударить палец о палец" и вытащить наружу нечто похожее на procedure LoadMetaData. Этого захочено не было. Почему - ну наверное предполагалось что в частности я при чтении exif из тайлов GE (там правда не exif, а $FFFE) должен их сначала на хард скинуть ))). Ну естественно мне после такого фэйспалма проще было руками по спецификации разобрать. Тем более что в подавляющем большинстве случаев надо искать совершенно конкретный известный тэг, ведь мы ж не о редакторе произвольных exif-ов трём )).

>там есть методы для записей своих "маркеров" в хедер жпега
Ну тогда с записью проблем быть не должно.

(0005881)
zed (manager)
07-03-2012 04:41

>Я про то что нельзя при чтении JPEG за один проход получить ВСЁ.
Можно. Есть все необходимые методы как для чтения, так и для записи тегов.

>там правда не exif, а $FFFE
Это тэг M_COM = 0xfe - "комментарий" (COM). Ту да же, кстати, и САС пишет свои "копирайты" при сведении снимков.

>Ну естественно мне после такого фэйспалма проще было руками по спецификации разобрать.
Вот это действительно фэйспалм. RTFM:

- jpeg_save_markers: Control saving of COM and APPn markers into marker_list
- jpeg_set_marker_processor: Install a special processing method for COM or APPn markers
(0005886)
vasketsov (manager)
07-03-2012 05:19

Вопрос был не в либе, а в _используемой_реализации_ (TJpegFileFormat.LoadData). Безусловно можно было написать свой аналог TJpegFileFormat. Для разбора полутора указателей и буферов.
(0005889)
zed (manager)
07-03-2012 05:29
edited on: 07-03-2012 05:30

Кароч. не понимаю, что тебе не нравится, ну да ладно, а то мы слегка отклонились от тикета. Главное, что записать exif в жпег можно без проблем и твоё высказывание в третьем посте "писать тем кодом нельзя" ошибочно.

(0005890)
vasketsov (manager)
07-03-2012 05:32

>твоё высказывание во втором посте "писать тем кодом нельзя"
Это было моё сообщение про мой ручной код моего чтения конкретных полей из COM\APP1 вообще без этой либы ))))))
(0005919)
Parasite (administrator)
07-03-2012 12:37

А почему бы не включить готовый ExifTool в сборку САСа? Благо что с помощью него всё делается мягко и не нарушая сна, функционала по экзифу там выше крыши (можно пихать например САСовский стринг + дату сведения\создания и прочие полезности), а папку /bin в САСе (куда можно и нужно класть всё подобное по теме) нам вроде Кришна нигде не запрещал...
(0006031)
zed (manager)
13-03-2012 10:10

>готов предоставить примеры пар "непривязанных"+"привязанных" жпегов
Ну давай, раз готов.
(0006038)
Parasite (administrator)
13-03-2012 13:27

>Ну давай, раз готов.
Я сделаю даже немножко лучше: просто оставлю тут ссылку на удобнейшую фриварную тулзу для винды, коя умеет (пере)привязывать любой жпег в любую точку карты, просто утыкивая мышой в одну из карт (там их несколько, гугл - в наличии).
http://www.geosetter.de/en/
Прожка прекрасно юзабельна и сама по себе, в отрыве от фичреквеста. Авось кому пригодится.

PS: и она тоже юзает ExifTool... :)
PPS: смысловой аналог для Андроида - тут (http://sitis.mobi/geocam_pro/android), пикчу берет с камеры а привязку - с акселерометров\компаса\ГПСа. Нажал СПУСК - получил уже прекрасно привязанную фотку вплоть до углов обзора\наклонов. Тоже преудобнейшая вещь. Имеется клиент\просмотрщик сделанных фоток и под винду тоже.
(0006042)
zed (manager)
13-03-2012 13:44

>Я сделаю даже немножко лучше
т.е. от тебя примеров не будет?
(0006045)
Parasite (administrator)
13-03-2012 14:05

>т.е. от тебя примеров не будет?
Могу, если так нужно. А смысл? Тулза привязывает любой жпег куда скажешь - вот и пара.
Я к тому, что экспериментировать уже можно _бесконечно_ и _моментально_, а не в пределах присланной мной пары. Но могу и прислать - не вопрос.
(0006046)
zed (manager)
13-03-2012 14:11

Пришли один оригинальный тайл и кучку его реинкарнаций, привязанных к разным точкам.
(0006100)
zed (manager)
14-03-2012 13:51

Не надо примеров. Разобрался.
(0006143)
Parasite (administrator)
16-03-2012 04:00

>Пришли один оригинальный тайл и кучку его реинкарнаций
Хорошо. Будет.

>Не надо примеров. Разобрался.
Хорошо. Не будет.

PS: и токи я склоняю к включению ExifTool в кучку к сасу, чтобы своего велосипеда не изобретать. Сугубо опционально - "если в папке /bin/ найден exiftool.exe - то фича доступна, если нет - то как обычно"
Благо что в эту же папку потом, позднее, можно напихать много чего из\для соседних хотелок.
(0006240)
gpsMax (manager)
22-03-2012 08:13

А хотелка 72 - это сильно другое?
(0006241)
Tolik (manager)
22-03-2012 08:24

Ну, настолько сильно, насколько jpeg отличается от tiff.

- Users who viewed this issue
User List Anonymous (3079x), DTy (1x)
Total Views 3080
Last View 18-04-2024 17:55

- Issue History
Date Modified Username Field Change
06-03-2012 03:39 Parasite New Issue
06-03-2012 04:41 Parasite Additional Information Updated View Revisions
06-03-2012 04:57 Tolik Status new => acknowledged
06-03-2012 13:56 vdemidov Assigned To => zed
06-03-2012 13:56 vdemidov Status acknowledged => assigned
06-03-2012 14:26 zed Note Added: 0005859
06-03-2012 14:29 vdemidov Note Added: 0005860
06-03-2012 14:31 vasketsov Note Added: 0005861
06-03-2012 14:52 Parasite Note Added: 0005862
06-03-2012 14:56 zed Note Added: 0005863
06-03-2012 14:57 zed Assigned To zed =>
06-03-2012 14:59 Parasite Note Added: 0005864
06-03-2012 15:02 zed Note Edited: 0005863 View Revisions
06-03-2012 15:03 Parasite Note Added: 0005865
06-03-2012 15:04 Parasite Note Edited: 0005865 View Revisions
06-03-2012 15:44 vasketsov Note Added: 0005868
06-03-2012 15:45 vasketsov Note Edited: 0005868 View Revisions
06-03-2012 16:26 zed Note Added: 0005870
06-03-2012 17:11 vasketsov Note Added: 0005871
06-03-2012 18:28 zed Note Added: 0005872
06-03-2012 21:08 zed Note Added: 0005874
06-03-2012 21:18 zed Note Edited: 0005874 View Revisions
06-03-2012 21:26 vasketsov Note Added: 0005875
06-03-2012 21:28 vasketsov Note Edited: 0005875 View Revisions
07-03-2012 04:41 zed Note Added: 0005881
07-03-2012 05:19 vasketsov Note Added: 0005886
07-03-2012 05:29 zed Note Added: 0005889
07-03-2012 05:30 zed Note Edited: 0005889 View Revisions
07-03-2012 05:32 vasketsov Note Added: 0005890
07-03-2012 12:37 Parasite Note Added: 0005919
07-03-2012 13:36 vdemidov Status assigned => acknowledged
07-03-2012 13:37 vdemidov Product Version .Nightly => 110418
13-03-2012 10:10 zed Note Added: 0006031
13-03-2012 13:27 Parasite Note Added: 0006038
13-03-2012 13:44 zed Note Added: 0006042
13-03-2012 14:05 Parasite Note Added: 0006045
13-03-2012 14:11 zed Note Added: 0006046
14-03-2012 13:51 zed Note Added: 0006100
14-03-2012 13:51 zed Assigned To => zed
14-03-2012 13:51 zed Status acknowledged => assigned
16-03-2012 04:00 Parasite Note Added: 0006143
17-03-2012 11:57 zed Status assigned => resolved
17-03-2012 11:57 zed Resolution open => fixed
17-03-2012 11:57 zed Fixed in Version => 120808
17-03-2012 11:57 zed Target Version => 120808
22-03-2012 08:07 gpsMax Tag Attached: exif
22-03-2012 08:08 gpsMax Tag Attached: склейка
22-03-2012 08:12 gpsMax Tag Attached: GeoTIFF
22-03-2012 08:12 gpsMax Relationship added related to 0000072
22-03-2012 08:13 gpsMax Note Added: 0006240
22-03-2012 08:24 Tolik Note Added: 0006241
22-03-2012 08:30 vdemidov Relationship deleted related to 0000072
10-10-2012 11:47 Tolik Status resolved => closed
29-04-2013 19:03 zed Relationship added related to 0001909
13-09-2013 13:11 vdemidov Tag Attached: jpg
13-09-2013 13:11 vdemidov Tag Detached: GeoTIFF



Copyright © 2007 - 2024 SAS.Planet Team