Author: rgauss
Date: Mon Jul 30 18:18:34 2012
New Revision: 1367205
URL: http://svn.apache.org/viewvc?rev=1367205&view=rev
Log:
TIKA-915: Image geodata being rounded to integers
- Added decimal formatting to GeotagHandler rather than test since the
metadata-extractor is adding false precision
Modified:
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/jpeg/JpegParserTest.java
Modified:
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java?rev=1367205&r1=1367204&r2=1367205&view=diff
==============================================================================
---
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
(original)
+++
tika/trunk/tika-parsers/src/main/java/org/apache/tika/parser/image/ImageMetadataExtractor.java
Mon Jul 30 18:18:34 2012
@@ -18,6 +18,7 @@ package org.apache.tika.parser.image;
import java.io.File;
import java.io.IOException;
+import java.text.DecimalFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Iterator;
@@ -57,6 +58,7 @@ public class ImageMetadataExtractor {
private final Metadata metadata;
private DirectoryHandler[] handlers;
+ private static final DecimalFormat GEO_DECIMAL_FORMAT = new
DecimalFormat("#.######"); // 6 dp seems to be reasonable
/**
* @param metadata to extract to, using default directory handlers
@@ -438,8 +440,8 @@ public class ImageMetadataExtractor {
public void handle(Directory directory, Metadata metadata) throws
MetadataException {
GeoLocation geoLocation = ((GpsDirectory)
directory).getGeoLocation();
if (geoLocation != null) {
- metadata.set(TikaCoreProperties.LATITUDE,
geoLocation.getLatitude());
- metadata.set(TikaCoreProperties.LONGITUDE,
geoLocation.getLongitude());
+ metadata.set(TikaCoreProperties.LATITUDE,
GEO_DECIMAL_FORMAT.format(new Double(geoLocation.getLatitude())));
+ metadata.set(TikaCoreProperties.LONGITUDE,
GEO_DECIMAL_FORMAT.format(new Double(geoLocation.getLongitude())));
}
}
}
Modified:
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/jpeg/JpegParserTest.java
URL:
http://svn.apache.org/viewvc/tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/jpeg/JpegParserTest.java?rev=1367205&r1=1367204&r2=1367205&view=diff
==============================================================================
---
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/jpeg/JpegParserTest.java
(original)
+++
tika/trunk/tika-parsers/src/test/java/org/apache/tika/parser/jpeg/JpegParserTest.java
Mon Jul 30 18:18:34 2012
@@ -17,7 +17,6 @@
package org.apache.tika.parser.jpeg;
import java.io.InputStream;
-import java.text.DecimalFormat;
import java.util.Arrays;
import java.util.List;
@@ -33,8 +32,6 @@ import org.xml.sax.helpers.DefaultHandle
public class JpegParserTest extends TestCase {
private final Parser parser = new JpegParser();
- private DecimalFormat geoDecimalFormatter = new DecimalFormat("#.#####");
-
public void testJPEG() throws Exception {
Metadata metadata = new Metadata();
metadata.set(Metadata.CONTENT_TYPE, "image/jpeg");
@@ -93,8 +90,8 @@ public class JpegParserTest extends Test
parser.parse(stream, new DefaultHandler(), metadata, new
ParseContext());
// Geo tags
- assertEquals("12.54321", geoDecimalFormatter.format(new
Double(metadata.get(Metadata.LATITUDE))));
- assertEquals("-54.1234", geoDecimalFormatter.format(new
Double(metadata.get(Metadata.LONGITUDE))));
+ assertEquals("12.54321", metadata.get(Metadata.LATITUDE));
+ assertEquals("-54.1234", metadata.get(Metadata.LONGITUDE));
// Core EXIF/TIFF tags
assertEquals("100", metadata.get(Metadata.IMAGE_WIDTH));
@@ -139,8 +136,8 @@ public class JpegParserTest extends Test
parser.parse(stream, new DefaultHandler(), metadata, new
ParseContext());
// Geo tags should be there with 5dp, and not rounded
- assertEquals("51.57576", geoDecimalFormatter.format(new
Double(metadata.get(Metadata.LATITUDE))));
- assertEquals("-1.56789", geoDecimalFormatter.format(new
Double(metadata.get(Metadata.LONGITUDE))));
+ assertEquals("51.575762", metadata.get(Metadata.LATITUDE));
+ assertEquals("-1.567886", metadata.get(Metadata.LONGITUDE));
}
public void testJPEGTitleAndDescription() throws Exception {