From 12b8993a44a567ccf02080c8e9cd0885c92a8e7a Mon Sep 17 00:00:00 2001 From: Keith Woelke Date: Thu, 20 Jun 2019 13:25:13 -0700 Subject: [PATCH] Change Ifd.GpsInfo() to calculate Degrees, Mintutes, and Seconds as float64 instead of int --- gps.go | 4 ++-- ifd_enumerate.go | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/gps.go b/gps.go index 1750f46..7d74f22 100644 --- a/gps.go +++ b/gps.go @@ -14,11 +14,11 @@ var ( type GpsDegrees struct { Orientation byte - Degrees, Minutes, Seconds int + Degrees, Minutes, Seconds float64 } func (d GpsDegrees) String() string { - return fmt.Sprintf("Degrees", string([]byte{d.Orientation}), d.Degrees, d.Minutes, d.Seconds) + return fmt.Sprintf("Degrees", string([]byte{d.Orientation}), d.Degrees, d.Minutes, d.Seconds) } func (d GpsDegrees) Decimal() float64 { diff --git a/ifd_enumerate.go b/ifd_enumerate.go index 4bf6abe..1e38f60 100644 --- a/ifd_enumerate.go +++ b/ifd_enumerate.go @@ -901,18 +901,18 @@ func (ifd *Ifd) GpsInfo() (gi *GpsInfo, err error) { gi.Latitude = GpsDegrees{ Orientation: latitudeRefValue.(string)[0], - Degrees: int(float64(latitudeRaw[0].Numerator) / float64(latitudeRaw[0].Denominator)), - Minutes: int(float64(latitudeRaw[1].Numerator) / float64(latitudeRaw[1].Denominator)), - Seconds: int(float64(latitudeRaw[2].Numerator) / float64(latitudeRaw[2].Denominator)), + Degrees: float64(latitudeRaw[0].Numerator) / float64(latitudeRaw[0].Denominator), + Minutes: float64(latitudeRaw[1].Numerator) / float64(latitudeRaw[1].Denominator), + Seconds: float64(latitudeRaw[2].Numerator) / float64(latitudeRaw[2].Denominator), } longitudeRaw := longitudeValue.([]Rational) gi.Longitude = GpsDegrees{ Orientation: longitudeRefValue.(string)[0], - Degrees: int(float64(longitudeRaw[0].Numerator) / float64(longitudeRaw[0].Denominator)), - Minutes: int(float64(longitudeRaw[1].Numerator) / float64(longitudeRaw[1].Denominator)), - Seconds: int(float64(longitudeRaw[2].Numerator) / float64(longitudeRaw[2].Denominator)), + Degrees: float64(longitudeRaw[0].Numerator) / float64(longitudeRaw[0].Denominator), + Minutes: float64(longitudeRaw[1].Numerator) / float64(longitudeRaw[1].Denominator), + Seconds: float64(longitudeRaw[2].Numerator) / float64(longitudeRaw[2].Denominator), } // Parse altitude.