Modify

Opened 8 years ago

Closed 7 years ago

Last modified 7 years ago

#11685 closed enhancement (fixed)

Use sub-second exif/xmp data

Reported by: StephaneP Owned by: team
Priority: normal Milestone: 16.02
Component: Core Version:
Keywords: picture; gpx; correlation Cc:

Description

Is it possible to add the support of the subsecond time data in the "correlate with gpx" tool ?

The subsecond time could be stored with the exif SubSecTimeOriginal tag, or in the XMP DateTimeOriginal.

With this support, and if the correlate function could interpolate between two gpx "node", I won't have two successive pictures geotagged at exact the same location.

Revision: 8581
Repository Root: http://josm.openstreetmap.de/svn
Relative URL: ^/trunk
Last Changed Author: Don-vip
Last Changed Date: 2015-07-07 23:45:23 +0200 (Tue, 07 Jul 2015)
Build-Date: 2015-07-07 21:48:24
URL: http://josm.openstreetmap.de/svn/trunk
Repository UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last Changed Rev: 8581

Identification: JOSM/1.5 (8581 fr) Windows 8.1 64-Bit
Memory Usage: 1362 MB / 5461 MB (549 MB allocated, but free)
Java version: 1.8.0_45, Oracle Corporation, Java HotSpot(TM) 64-Bit Server VM
Dataset consistency test: No problems found

Attachments (2)

2015-07-11.zip (1.9 MB) - added by StephaneP 8 years ago.
pictures with exif subsectimeoriginal and xmp + gpx
2015-11-08_15-33-27-Xiaomi_YI-Y0030832.jpg (3.8 MB) - added by StephaneP 7 years ago.

Change History (15)

comment:1 Changed 8 years ago by Don-vip

Owner: changed from team to StephaneP
Status: newneedinfo

Can you please attach example files? (One track and two images). Thanks

Changed 8 years ago by StephaneP

Attachment: 2015-07-11.zip added

pictures with exif subsectimeoriginal and xmp + gpx

comment:2 Changed 8 years ago by StephaneP

Here it is a zip file with 2 pictures and a gpx.

The exif SubSecTimeOriginal tag, and the XMP DateTimeOriginal were added manualy with ExifToolGui. I hope the values are correct. I just asked the Opencamera dev to directly add these tags to the pictures, I hope it will be included in the next release.

Last edited 8 years ago by StephaneP (previous) (diff)

comment:3 Changed 8 years ago by simon04

Owner: changed from StephaneP to team
Status: needinfonew

comment:4 Changed 7 years ago by simon04

Resolution: fixed
Status: newclosed

In 9499/josm:

fix #11685 - Use sub-second exif/xmp data

comment:5 Changed 7 years ago by simon04

Milestone: 16.02

comment:6 Changed 7 years ago by Don-vip

Resolution: fixed
Status: closedreopened

org.openstreetmap.josm.tools.ExifReaderTest.testReadTime is often failing with JDK8, why?

See jenkins/job/JOSM/lastCompletedBuild/jdk=JDK8/testReport/junit/org.openstreetmap.josm.tools/ExifReaderTest/testReadTime/history/

the error that happens regularly is:

junit.framework.AssertionFailedError: expected:<Sat May 15 17:12:05 CEST 2010> but was:<null>
	at org.openstreetmap.josm.tools.ExifReaderTest.testReadTime(ExifReaderTest.java:46)

ERROR: org.openstreetmap.josm.tools.UncheckedParseException: The date string ([540 bytes]) could not be parsed.
org.openstreetmap.josm.tools.UncheckedParseException: The date string ([540 bytes]) could not be parsed.
	at org.openstreetmap.josm.tools.date.DateUtils.tsFromString(DateUtils.java:135)
	at org.openstreetmap.josm.tools.date.DateUtils.fromString(DateUtils.java:72)
	at org.openstreetmap.josm.tools.ExifReader.readTime(ExifReader.java:65)
	at org.openstreetmap.josm.tools.ExifReaderTest.testReadTime(ExifReaderTest.java:45)

comment:7 Changed 7 years ago by simon04

The 540 bytes originate from a Sony Makernote Directory and its Unknown tag (0x9004):

  • src/org/openstreetmap/josm/tools/ExifReader.java

    diff --git a/src/org/openstreetmap/josm/tools/ExifReader.java b/src/org/openstreetmap/josm/tools/ExifReader.java
    index b61ba1a..3159da0 100644
    a b public static Date readTime(File filename) { 
    5050                    }
    5151                    if (tag.getTagType() == ExifIFD0Directory.TAG_DATETIME /* 0x0132 */ ||
    5252                        tag.getTagType() == ExifSubIFDDirectory.TAG_DATETIME_DIGITIZED /* 0x9004 */) {
     53                        System.out.println(dirIt);
     54                        System.out.println(tag);
     55                        System.out.println(tag.getTagType());
    5356                        if (dateStr != null) {
    5457                            // prefer TAG_DATETIME_ORIGINAL
    5558                            dateStr = tag.getDescription();
Exif SubIFD Directory (28 tags)
[Exif SubIFD] Date/Time Digitized - 2010:05:15 17:12:05
36868
Sony Makernote Directory (43 tags)
[Sony Makernote] Unknown tag (0x9004) - [540 bytes]    // <----
36868
Exif IFD0 Directory (9 tags)
[Exif IFD0] Date/Time - 2010:05:15 17:12:05
306
Exif Thumbnail Directory (9 tags)
[Exif Thumbnail] Date/Time - 2010:05:15 17:12:05
306

comment:8 Changed 7 years ago by simon04

Resolution: fixed
Status: reopenedclosed

In 9648/josm:

fix #11685 - Obtain EXIF fields only from EXIF directories

Fixes unit test ExifReaderTest.testReadTime

comment:9 Changed 7 years ago by StephaneP

Resolution: fixed
Status: closedreopened

It seems that Josm doesn't read the SubSecTimeOriginal tag correctly.
This value is a part of a second, a value of 5 or 5000 is the same, it's always 0.5 second.

I have a picture with
DateTimeOriginal=2015:11:08 15:33:27
SubSecTimeOriginal=500000

Josm tells that the picture's time is 15:41:47

Last edited 7 years ago by StephaneP (previous) (diff)

comment:10 in reply to:  9 Changed 7 years ago by Don-vip

Replying to StephaneP:

I have a picture with
DateTimeOriginal=2015:11:08 15:33:27
SubSecTimeOriginal=500000

Josm tells that the picture's time is 15:41:47

Can you please attach it?

Changed 7 years ago by StephaneP

comment:11 Changed 7 years ago by StephaneP

Picture attached.

Exif spec, page 30 :
SubsecTimeOriginal
A tag used to record fractions of seconds for the
DateTimeOriginal

tag.

Tag = 37521 (9291.H)
Type = ASCII
N = Any
Default = none

comment:12 Changed 7 years ago by Don-vip

Resolution: fixed
Status: reopenedclosed

In 9672/josm:

fix #11685 - parse subsecond exif information correctly

comment:13 Changed 7 years ago by StephaneP

It works ! Thank You !

Modify Ticket

Change Properties
Set your email in Preferences
Action
as closed The owner will remain team.
as The resolution will be set.
The resolution will be deleted.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.