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;
|
|
}
|
|
}
|