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 {


Reply via email to