上传代码
This commit is contained in:
63
src/main/java/com/nis/util/ImageGeo.java
Normal file
63
src/main/java/com/nis/util/ImageGeo.java
Normal file
@@ -0,0 +1,63 @@
|
||||
package com.nis.util;
|
||||
|
||||
import com.drew.metadata.*;
|
||||
import com.drew.metadata.exif.*;
|
||||
import com.drew.imaging.jpeg.*;
|
||||
import com.drew.lang.*;
|
||||
import java.io.*;
|
||||
|
||||
public class ImageGeo {
|
||||
public double lat = 0.0;
|
||||
public double lon = 0.0;
|
||||
public double alt = 0.0;
|
||||
public boolean error = false;
|
||||
|
||||
public ImageGeo(String filename) {
|
||||
try {
|
||||
error = false;
|
||||
File jpegFile = new File(filename);
|
||||
Metadata metadata = JpegMetadataReader.readMetadata(jpegFile);
|
||||
|
||||
GpsDirectory gpsdir = (GpsDirectory) metadata
|
||||
.getDirectory(GpsDirectory.class);
|
||||
Rational latpart[] = gpsdir
|
||||
.getRationalArray(GpsDirectory.TAG_GPS_LATITUDE);
|
||||
Rational lonpart[] = gpsdir
|
||||
.getRationalArray(GpsDirectory.TAG_GPS_LONGITUDE);
|
||||
String northing = gpsdir
|
||||
.getString(GpsDirectory.TAG_GPS_LATITUDE_REF);
|
||||
String easting = gpsdir
|
||||
.getString(GpsDirectory.TAG_GPS_LONGITUDE_REF);
|
||||
|
||||
try {
|
||||
alt = gpsdir.getDouble(GpsDirectory.TAG_GPS_ALTITUDE);
|
||||
} catch (Exception ex) {
|
||||
}
|
||||
|
||||
double latsign = 1.0d;
|
||||
if (northing.equalsIgnoreCase("S"))
|
||||
latsign = -1.0d;
|
||||
double lonsign = 1.0d;
|
||||
if (easting.equalsIgnoreCase("W"))
|
||||
lonsign = -1.0d;
|
||||
lat = (Math.abs(latpart[0].doubleValue())
|
||||
+ latpart[1].doubleValue() / 60.0d + latpart[2]
|
||||
.doubleValue() / 3600.0d) * latsign;
|
||||
lon = (Math.abs(lonpart[0].doubleValue())
|
||||
+ lonpart[1].doubleValue() / 60.0d + lonpart[2]
|
||||
.doubleValue() / 3600.0d) * lonsign;
|
||||
|
||||
if (Double.isNaN(lat) || Double.isNaN(lon))
|
||||
error = true;
|
||||
} catch (Exception ex) {
|
||||
error = true;
|
||||
}
|
||||
System.out.println(filename + ": (" + lat + ", " + lon + ")");
|
||||
}
|
||||
|
||||
public static void main(String[] args) {
|
||||
ImageGeo imageGeo = new ImageGeo(ImageGeo.class.getResource("IMAG0068.jpg").getFile());
|
||||
System.out.println(imageGeo.lon+","+imageGeo.lat);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user