/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package app.navigps.coordinates; /** * * @author vara */ //ddmm.sss dddmm.sss //$GPGLL,3907.360,N,12102.481,W,183730,A*33 public class PointXY { private double latitude; private double longitude; /** * * @param coordX * @param coordY */ public PointXY(double coordX,double coordY){ latitude = coordX; longitude = coordY; } /** * * @return */ public double getLatitude() { return latitude; } /** * * @param latitude */ public void setLatitude(double latitude) { this.latitude = latitude; } /** * * @return */ public double getLongitude() { return longitude; } /** * * @param longitude */ public void setLongitude(double longitude) { this.longitude = longitude; } @Override public String toString(){ return "Latitude : "+getLatitude()+" Longitude : "+getLongitude(); } /** * */ public static class Conversion{ /** * * @param deg * @param min * @param sec * @return */ public static double convertDMSToDecimalDegree(int deg,int min,double sec){ return ( ((min*60)+sec)/3600 )+deg; } /** * * @param deg * @param min * @param sec * @param deg2 * @param min2 * @param sec2 * @return */ public static PointXY convertDMSToDecimalDegree(int deg,int min,double sec, int deg2,int min2,double sec2){ return new PointXY(PointXY.Conversion.convertDMSToDecimalDegree(deg,min,sec), PointXY.Conversion.convertDMSToDecimalDegree(deg2,min2,sec2)); } /** * * @param ddms * @return */ public static String convertDecimalDegreeToDMS(double ddms){ int degree = (int)ddms; double tmpmin = (ddms - (int)ddms)*60; double sec = (tmpmin-(int)(tmpmin))*60; return degree+","+(int)(tmpmin)+","+sec; } /** * * @param ddmsLat * @param ddmsLon * @return */ public static String convertDecimalDegreeToDMS(double ddmsLat,double ddmsLon){ return "latitude: "+PointXY.Conversion.convertDecimalDegreeToDMS(ddmsLat)+" ; "+ "longitude: "+PointXY.Conversion.convertDecimalDegreeToDMS(ddmsLon); } /** * * @param ddms * @return */ public static double convertNmeaDMSToToDecimalDegree(double ddms){ int deg = (int)ddms/100; return deg + ( ddms-(deg*100) )/60; } /** * * @param ddmsLat * @param ddmsLon * @return */ public static PointXY convertNmeaDMSToToDecimalDegree(double ddmsLat,double ddmsLon){ return new PointXY(PointXY.Conversion.convertNmeaDMSToToDecimalDegree(ddmsLat), PointXY.Conversion.convertNmeaDMSToToDecimalDegree(ddmsLon)); } /** * * @param ddmsLat * @param orientLat * @param ddmsLon * @param orientLon * @return */ public static PointXY convertNmeaDMSToToDecimalDegree(double ddmsLat,char orientLat, double ddmsLon,char orientLon){ return new PointXY(PointXY.Conversion.convertNmeaDMSToToDecimalDegree(ddmsLat)*PointXY.Conversion.checkOrientation(orientLat), PointXY.Conversion.convertNmeaDMSToToDecimalDegree(ddmsLon)*PointXY.Conversion.checkOrientation(orientLon)); } private static int checkOrientation(char orient){ int i=1; switch(orient){ case 'S': i*=-1; break; case 'W': i*=-1; break; default: } return i; } } }