度分秒与经纬度的互转

来源:互联网 发布:电脑usb分享网络给手机 编辑:程序博客网 时间:2024/05/17 06:10

当需要一个功能去网上搜的时候,大部分的资料不详细,不明所以,所以我会把自己实现的功能一个个的记下来,方便将来自己用得上。

这个需求是往照片里面写经纬度,照相机是自己写的,图片已经有了路径,现在就是将高德得到的gps写进去,然后将来将图片里面的gps读出来再上传到服务器的需求。涉及到了照片里面的度分秒与经纬度的互转。

1、将gps写入图片

  try {        ExifInterface exif = new ExifInterface(jpegPath);        // 写入经度信息        exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE,                GPSUtils.gpsInfoConvert(lng));        exif.setAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF,                lng > 0 ? "E" : "W");        //写入纬度信息        exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE,                GPSUtils.gpsInfoConvert(lat));        exif.setAttribute(ExifInterface.TAG_GPS_LATITUDE_REF,                lat > 0 ? "N" : "S");        //执行保存        exif.saveAttributes();    } catch (IOException e) {        e.printStackTrace();    }

2、从图片读出的度分秒

try {        String jpegPath = "图片路径.../lala.jpg";        double Latitude=0;        double Longitude=0;        ExifInterface exiftest= new ExifInterface(jpegPath);        String attrLONGITUDE=exiftest.getAttribute(ExifInterface.TAG_GPS_LONGITUDE);        String attrLATITUDE=exiftest.getAttribute(ExifInterface.TAG_GPS_LATITUDE);        String attrLONGITUDE_REF = exiftest.getAttribute(ExifInterface.TAG_GPS_LONGITUDE_REF);        String attrLATITUDE_REF = exiftest.getAttribute(ExifInterface.TAG_GPS_LATITUDE_REF);        if((attrLATITUDE !=null)                && (attrLATITUDE_REF !=null)                && (attrLONGITUDE != null)                && (attrLONGITUDE_REF !=null))        {            if(attrLATITUDE_REF.equals("N")){                Latitude = GPSUtils.convertToDegree(attrLATITUDE);            }            else{                Latitude = 0 - GPSUtils.convertToDegree(attrLATITUDE);            }            if(attrLONGITUDE_REF.equals("E")){                Longitude = GPSUtils.convertToDegree(attrLONGITUDE);            }            else{                Longitude = 0 - GPSUtils.convertToDegree(attrLONGITUDE);            }        }    } catch (IOException e) {        e.printStackTrace();    }

3、GPSUtils

public class GPSUtils {    //gps转照片的度分秒    public static String gpsInfoConvert(double gpsInfo) {        gpsInfo = Math.abs(gpsInfo);        String dms = Location.convert(gpsInfo, Location.FORMAT_SECONDS);        String[] splits = dms.split(":");        String[] secnds = (splits[2]).split("\\.");        String seconds;        if (secnds.length == 0) {            seconds = splits[2];        } else {            seconds = secnds[0];        }        return splits[0] + "/1," + splits[1] + "/1," + seconds + "/1";    }    //照片的度分秒转gps    public static Double convertToDegree(String stringDMS){        Float result = null;        String[] DMS = stringDMS.split(",", 3);        String[] stringD = DMS[0].split("/", 2);        Double D0 = new Double(stringD[0]);        Double D1 = new Double(stringD[1]);        Double FloatD = D0/D1;        String[] stringM = DMS[1].split("/", 2);        Double M0 = new Double(stringM[0]);        Double M1 = new Double(stringM[1]);        Double FloatM = M0/M1;        String[] stringS = DMS[2].split("/", 2);        Double S0 = new Double(stringS[0]);        Double S1 = new Double(stringS[1]);        Double FloatS = S0/S1;        result = new Float(FloatD + (FloatM/60) + (FloatS/3600));        return (double) result;    }}

转载请注明:http://blog.csdn.net/ning_gg/article/details/53160411
如有错误,还请指正。

0 0
原创粉丝点击