Modify

Opened 22 months ago

Closed 15 months ago

Last modified 14 months 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 22 months ago.
pictures with exif subsectimeoriginal and xmp + gpx
2015-11-08_15-33-27-Xiaomi_YI-Y0030832.jpg (3.8 MB) - added by StephaneP 15 months ago.

Change History (15)

comment:1 Changed 22 months 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 22 months ago by StephaneP

Attachment: 2015-07-11.zip added

pictures with exif subsectimeoriginal and xmp + gpx

comment:2 Changed 22 months 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 22 months ago by StephaneP (previous) (diff)

comment:3 Changed 19 months ago by simon04

Owner: changed from StephaneP to team
Status: needinfonew

comment:4 Changed 15 months ago by simon04

Resolution: fixed
Status: newclosed

In 9499/josm:

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

comment:5 Changed 15 months ago by simon04

Milestone: 16.02

comment:6 Changed 15 months 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 15 months 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 15 months 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 15 months 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 15 months ago by StephaneP (previous) (diff)

comment:10 in reply to:  9 Changed 15 months 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 15 months ago by StephaneP

comment:11 Changed 15 months 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 15 months ago by Don-vip

Resolution: fixed
Status: reopenedclosed

In 9672/josm:

fix #11685 - parse subsecond exif information correctly

comment:13 Changed 14 months 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. Next status will be 'closed'.
The resolution will be deleted. Next status will be 'reopened'.

Add Comment


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

 
Note: See TracTickets for help on using tickets.