度分秒与经纬度的互转
来源:互联网 发布:电脑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
- 度分秒与经纬度的互转
- 经纬度与度分秒之间的转换
- 十进制经纬度与经纬度度分秒之间的互相转换
- 经纬度"度分秒"与"十进制"之间的转换
- 经纬度"度分秒"与"十进制"之间的转换
- 经纬度十进制与度分秒换算及数据库实现
- 经纬度,将度分秒转换为度
- 经纬度 十进制 和 度分秒 转换
- 经纬度坐标转换函数:度分秒转换成十进制的度(VB)
- GPS怎么把经纬度转换成标准的度分秒单位
- 度转度分秒、度分秒转度
- arcgis arcmap 增加经纬度属性,label 度分秒经纬度 十进制经纬度
- 经纬度中的度分秒转化为小数形式
- 经纬度中的度分秒转化为小数形式
- android 经纬度 double类型 转换成 度分秒
- iOS-将经纬度转化成度分秒格式
- android GPS度分秒与double之间的相互转化
- Excel中度转度分秒
- mac系统:HTTP Status 500 - java.lang.ClassNotFoundException: org.apache.jsp.helloworld_jsp
- Cocos2dx:cocos2d-x-3.2版本学习过程中所遇到的一些问题(每一次都是一次作死的感觉)
- fastJson的使用
- Web性能压力测试工具之WebBench详解
- log4j.properties配置详解
- 度分秒与经纬度的互转
- Android 疯狂造轮子 常用工具类 直接拿来用!
- Fiddler 抓包手机App
- shell脚本进行sftp文件批量上传与下载
- 炒股4大准则
- 第十二周-for循环画三角形
- redis使用watch完成秒杀抢购功能
- Java 除去List中重复的元素
- 欢迎使用CSDN-markdown编辑器