[Digikam-devel] GPS coordinate accuracy

Gilles Caulier caulier.gilles at kdemail.net
Mon Nov 27 12:48:18 GMT 2006


On Monday 27 November 2006 13:43, Arnd Baecker wrote:
> Hi,
>
> thanks for looking into this!
>
> On Sun, 26 Nov 2006, Andreas Huggel wrote:
> [...]
>
> > I've tweaked the exiv2 logic a bit for the upcoming 0.12 release. Since
> > the exiv2 output is shown in digikam if I'm not mistaken, here is what
> > it is now:
> >
> > Consider
> >    3.14159292 degrees, which can also be written as
> >    3deg 8.4955752' or
> >    3deg 8' 29.734512"
> >
> > Depending on how the value is encoded in the Exif data (*), exiv2 will
> > show 7 decimal places for degrees, 5 for minutes and 3 for seconds,
> > i.e.,
> >    3.1415929deg (**)
> >    3deg 8.49558'
> >    3deg 8' 29.735"
> >
> > Converting this to distance, the corresponding accuracies of such values
> > are (at least):
> >    10^-7deg ~ 1.1cm
> >    10^-5'   ~ 1.9cm
> >    10^-3"   ~ 3.8cm
> >
> > i.e., all much lower than the best GPS accuracy you can ever get, so
> > there shouldn't be a concern that the numbers shown do not correspond
> > to a location determined by GPS accurately enough.
>
> These numbers do indeed sound accurately enough.
> However, it seems this is not yet achieved
> (current exiv2 svn and digikam svn):
>
> Take any image and use the "Edit geographical coordinates"
> to provide a position on the highest zoom level (satellite view,
> i.e cars are roughly of the size of the mouse pointer ;-),
> which is I think level 19 in google map terms).
> Accept these coordinates by "OK".
> Then invoke "Edit geographical coordinates" again
> and compare the resulting longitude/latitude coordinates.
> For example I get:
> 51.02370459056218, 13.710897266864777
> vs.
> 51.0236666667   ,  13.7108333333
> So it seems that more digits are lost than expected?
>
> Well, let's have a look where these digits get lost:
>
> Output of `exiv2 -p t`:
>
> Exif.GPSInfo.GPSVersionID                 Byte        4  2 0 0 0
> Exif.GPSInfo.GPSLatitudeRef               Ascii       2  North
> Exif.GPSInfo.GPSLatitude                  SRational   3  51deg 1.42000'
> Exif.GPSInfo.GPSLongitudeRef              Ascii       2  East
> Exif.GPSInfo.GPSLongitude                 SRational   3  13deg 42.65000'
> Exif.GPSInfo.GPSAltitudeRef               Byte        1  Above sea level
> Exif.GPSInfo.GPSAltitude                  SRational   1  0 m
> Exif.GPSInfo.GPSMapDatum                  Ascii       7  WGS-84
>
> I.e.
> 51.023666666666666666, 13.71083333333333332
>
> Alright, so to me it seems that the
> "Edit geographical coordinates" tool does not write
> the necessary number of digits.
>
> As a test:
> With `exiv2 -p v` one gets:
> 0x0002 GPSInfo      GPSLatitude          SRational   3  51/1 142/100 0/1
> 0x0004 GPSInfo      GPSLongitude         SRational   3  13/1 4265/100 0/1
>
> Manual modification:
> exiv2 -M "set Exif.GPSInfo.GPSLatitude 51/1 14222/10000 0/1 " 
> IMG_5356test_manip.JPG works fine both in digikam display and the "Edit
> geographical
> coordinates" tool.
> Only on save not enough digits are used ...


Right Arnd,

This is relevant of following Exiv2Iface methods :

- setGPSInfo()
- convertToRational()

... where digits are lost during double to rational conversion.

http://websvn.kde.org/trunk/extragear/libs/kipi-plugins/common/exiv2iface/exiv2iface.cpp?rev=606701&view=auto

Andreas, 

There is method in Exiv2 to do this conversion without lost digits ?
If i can use it instead Exiv2Iface::convertToRational()...

Gilles



More information about the Digikam-devel mailing list