package urt; public class xytognss { /**µØÇò³àµÀ°ë¾¶(km)*/ static double EARTH_RADIUS = 6378.137; /**µØÇòÿ¶ÈµÄ»¡³¤(km)*/ public final static double EARTH_ARC=111.199; /**ת»¯Îª»¡¶È(rad)*/ public static double rad(double d) { return d*Math.PI/180.0; } /** *ÇóÒ»¸öBµãxy×ø±êתΪ¾­Î³¶È *Aµãlng1 ¾­¶È *Aµãlat1 γ¶È *x0Ô­µãµÄ×ø±êx *y0Ô­µã×ø±êy *BµãµÄx×ø±ê *BµãµÄy×ø±ê *ABµÄ¼Ð½Çazimuth * */ public static String[] ConvertDistanceToLogLat( String lng2, String lat2, String x0, String y0, String x, String y, String azimuth1) { String[] jwd=new String[2]; double xA=Double.parseDouble(x0); double yA=Double.parseDouble(y0); double xB=Double.parseDouble(x); double yB=Double.parseDouble(y); double lng1=Double.parseDouble(lng2); double lat1=Double.parseDouble(lat2); double azimuth=Double.parseDouble(azimuth1); double distance_cm=Math.sqrt((xB-xA)*(xB-xA)+(yB-yA)*(yB-yA)); double distance=distance_cm/100; double m2km = 1.0/1000; //¶È·Öת¶È double lat0_deg = GnssToXY.ublox_dm2d(lat1); double lng0_deg = GnssToXY.ublox_dm2d(lng1); double dtheta=Math.atan2(yB-yA, xB-xA); azimuth = rad(azimuth); double theta1 = azimuth+ dtheta; // ½«¾àÀëת»»³É¾­¶ÈµÄ¼ÆË㹫ʽ double lon = lng0_deg + (distance * Math.sin(theta1))*m2km/ (EARTH_ARC * Math.cos(rad(lat0_deg))); // ½«¾àÀëת»»³Éγ¶ÈµÄ¼ÆË㹫ʽ double lat = lat0_deg + (distance * Math.cos(theta1))*m2km/ EARTH_ARC; jwd[0] =String .format("%.6f",ublox_d2dm(lon)); jwd[1] = String .format("%.6f",ublox_d2dm(lat)); return jwd; } /**¶Èת¶È·Ö*/ public static double ublox_d2dm(double deg) { double deg0 =Math.floor(deg); double ddeg = deg-deg0; double m = ddeg*60; double ddmm = deg0*100+m; return ddmm; } /**¾­Î³¶È¶È·ÖתΪ¶ÈÊä³ö*/ public static String jwdzd(String gps_weidu,String gsp_jingdu) { double wdd=Double.parseDouble(gps_weidu); double jdd=Double.parseDouble(gsp_jingdu); double jdj=GnssToXY.ublox_dm2d(jdd); double wdw=GnssToXY.ublox_dm2d(wdd); String jd=String .format("%.6f",jdj); String wd=String .format("%.6f",wdw); String mes="¾­¶È£»Î³¶È£º"+jd+";"+wd; return mes; } /**¾­Î³¶È¶È·Öת¶È*/ public static String[] dd2d(String gps_weidu,String gsp_jingdu) { String[] jwd=new String[2]; double wdd=Double.parseDouble(gps_weidu); double jdd=Double.parseDouble(gsp_jingdu); double jdj=GnssToXY.ublox_dm2d(jdd); double wdw=GnssToXY.ublox_dm2d(wdd); jwd[0]=String .format("%.6f",jdj); jwd[1]=String .format("%.6f",wdw); return jwd; } /**¾­Î³¶È¶È·Öת¶ÈdoubleÊä³ö * retrun ¾­¶È£¬Î³¶È*/ public static double[] dd2d_double(String gps_weidu,String gsp_jingdu) { double[] jwd=new double[2]; double wdd=Double.parseDouble(gps_weidu); double jdd=Double.parseDouble(gsp_jingdu); jwd[0]=GnssToXY.ublox_dm2d(jdd); jwd[1]=GnssToXY.ublox_dm2d(wdd); return jwd; } }