如何在java中将度数分钟转换为十进制

这是一个基本的gps应用程序,我从这种格式28“41’44.13597的图片的元数据中获取纬度信息。

我需要将相同的信息转换为十进制,out将以十进制格式显示数据,如28.705450。

请通过代码或任何参考帮助

提前致谢

/** answer=hour+minutes/60+seconds/3600 */ public double convertHourToDecimal(String degree) { if(!degree.matches("(-)?[0-6][0-9]\"[0-6][0-9]\'[0-6][0-9](.[0-9]{1,5})?") throw new IllegalArgumentException(); String[] strArray=degree.split("[\"']"); return Double.parseDouble(strArray[0])+Double.parseDouble(strArray[1])/60+Double.parseDouble(strArray[2])/3600; } 

将分钟除以60. ,将秒除以3600. ,然后将三者加在一起。

我不知道任何会为你做这个的java库,但是从度数转换为十进制度的公式是:degree +(minutes / 60)+(seconds /(60 * 60))

 package newstract; import java.io.File; import java.util.Date; import com.drew.imaging.jpeg.JpegMetadataReader; import com.drew.metadata.Directory; import com.drew.metadata.Metadata; import com.drew.metadata.exif.ExifDirectory; import java.text.SimpleDateFormat; import com.drew.metadata.exif.GpsDirectory; public class GetTagInfo { public static void main(String[] args) { System.out.println("Picture Tagged Details"); try{ File jpegFile = new File("DSC_0060.JPG"); Metadata metadata = JpegMetadataReader.readMetadata(jpegFile); Directory exifDirectory = metadata.getDirectory(ExifDirectory.class); SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss"); Date myDate = exifDirectory.getDate(ExifDirectory.TAG_DATETIME); System.out.println(sdf.format(myDate)); SimpleDateFormat sdf1 = new SimpleDateFormat("MM/dd/yyyy"); Date myDate1 = exifDirectory.getDate(ExifDirectory.TAG_DATETIME); System.out.println(sdf1.format(myDate1)); SimpleDateFormat sdf2 = new SimpleDateFormat("hh:mm:ss"); Date myDate3 = exifDirectory.getDate(ExifDirectory.TAG_DATETIME); System.out.println(sdf2.format(myDate3)); Directory gpsDirectory = metadata.getDirectory(GpsDirectory.class); // Boolean b = (gpsDirectory.containsTag(GpsDirectory.TAG_GPS_LATITUDE)); // System.out.println(GpsDirectory.TAG_GPS_LATITUDE);+ String s = gpsDirectory.getDescription(2); System.out.println(s); SplitString1 w = new SplitString1(); w.doit(s); Iterator directories = metadata.getDirectoryIterator(); while (directories.hasNext()) { GpsDescriptor directory = (GpsDescriptor) directories.next(); System.out.print(directory.getGpsLatitudeDescription()); } } // close of catch catch (Exception e) { System.err.println(e.getMessage()); //System.err.println(tag.getDirectoryName() + " " + tag.getTagName() + " (error)"); } } } class SplitString1 { public void doit(String lat) { String str = lat; String [] temp = null; String dtemp = null; //temp = str.split("[\"]|\"[\']"); temp = str.split("[\"]|[\']" ); dtemp = str.replace("\"", "°"); System.out.println("Formated DCM : "+dtemp); dump(temp); } public void dump(String []s) { for (int i = 0 ; i < s.length ; i++) { System.out.println("\ndegree : "+s[0]); System.out.println("\nminutes : "+s[1]); System.out.println("\nsecond : "+s[2]); String deg = s[0] ; int ndeg = Integer.parseInt(deg); String min = s[1] ; double nmin = Double.parseDouble(min); String sec = s[2] ; double nsec = Double.parseDouble(sec); double decimaldms = (ndeg+(nmin/60)+(nsec/3600)); System.out.println("\nfinaldecimal : "+decimaldms); } } // Decimal degrees = whole number of degrees, plus minutes divided by 60, //plus seconds divided by 3600 }