[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