- case TAG_GPS_LATITUDE_REF:\r
- inMetadata.setLatitudeRef(readString(inTagValueOffset, inFormatCode, inComponentCount));\r
- break;\r
- case TAG_GPS_LATITUDE:\r
- Rational[] latitudes = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
- inMetadata.setLatitude(new double[] {latitudes[0].doubleValue(), latitudes[1].doubleValue(), latitudes[2].doubleValue()});\r
- break;\r
- case TAG_GPS_LONGITUDE_REF:\r
- inMetadata.setLongitudeRef(readString(inTagValueOffset, inFormatCode, inComponentCount));\r
- break;\r
- case TAG_GPS_LONGITUDE:\r
- Rational[] longitudes = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
- inMetadata.setLongitude(new double[] {longitudes[0].doubleValue(), longitudes[1].doubleValue(), longitudes[2].doubleValue()});\r
- break;\r
- case TAG_GPS_ALTITUDE_REF:\r
- inMetadata.setAltitudeRef(_data[inTagValueOffset]);\r
- break;\r
- case TAG_GPS_ALTITUDE:\r
- inMetadata.setAltitude(readRational(inTagValueOffset, inFormatCode, inComponentCount).intValue());\r
- break;\r
- case TAG_GPS_TIMESTAMP:\r
- Rational[] times = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
- inMetadata.setGpsTimestamp(new int[] {times[0].intValue(), times[1].intValue(), times[2].intValue()});\r
- break;\r
- case TAG_GPS_DATESTAMP:\r
- Rational[] dates = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
- inMetadata.setGpsDatestamp(new int[] {dates[0].intValue(), dates[1].intValue(), dates[2].intValue()});\r
- break;\r
- default: // ignore all other tags\r
+ // Only interested in tags latref, lat, longref, lon, altref, alt and gps timestamp\r
+ switch (inTagType)\r
+ {\r
+ case TAG_GPS_LATITUDE_REF:\r
+ inMetadata.setLatitudeRef(readString(inTagValueOffset, inFormatCode, inComponentCount));\r
+ break;\r
+ case TAG_GPS_LATITUDE:\r
+ Rational[] latitudes = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
+ inMetadata.setLatitude(new double[] {latitudes[0].doubleValue(), latitudes[1].doubleValue(), latitudes[2].doubleValue()});\r
+ break;\r
+ case TAG_GPS_LONGITUDE_REF:\r
+ inMetadata.setLongitudeRef(readString(inTagValueOffset, inFormatCode, inComponentCount));\r
+ break;\r
+ case TAG_GPS_LONGITUDE:\r
+ Rational[] longitudes = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
+ inMetadata.setLongitude(new double[] {longitudes[0].doubleValue(), longitudes[1].doubleValue(), longitudes[2].doubleValue()});\r
+ break;\r
+ case TAG_GPS_ALTITUDE_REF:\r
+ inMetadata.setAltitudeRef(_data[inTagValueOffset]);\r
+ break;\r
+ case TAG_GPS_ALTITUDE:\r
+ inMetadata.setAltitude(readRational(inTagValueOffset, inFormatCode, inComponentCount).intValue());\r
+ break;\r
+ case TAG_GPS_TIMESTAMP:\r
+ Rational[] times = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
+ inMetadata.setGpsTimestamp(new int[] {times[0].intValue(), times[1].intValue(), times[2].intValue()});\r
+ break;\r
+ case TAG_GPS_DATESTAMP:\r
+ Rational[] dates = readRationalArray(inTagValueOffset, inFormatCode, inComponentCount);\r
+ if (dates != null) {\r
+ inMetadata.setGpsDatestamp(new int[] {dates[0].intValue(), dates[1].intValue(), dates[2].intValue()});\r
+ }\r
+ else {\r
+ // Not in rational array format, but maybe as String?\r
+ String date = readString(inTagValueOffset, inFormatCode, inComponentCount);\r
+ if (date != null && date.length() == 10) {\r
+ inMetadata.setGpsDatestamp(new int[] {Integer.parseInt(date.substring(0, 4)),\r
+ Integer.parseInt(date.substring(5, 7)), Integer.parseInt(date.substring(8))});\r
+ }\r
+ }\r
+ break;\r
+ default: // ignore all other tags\r
+ }\r