// // Source code recreated from a .class file by IntelliJ IDEA // (powered by FernFlower decompiler) // package com.jisuan.util; import java.text.DecimalFormat; public class Gnss2xy { static double a = 6378.137; static double e = 0.0818192; static double k0 = 0.9996; static double e2; static double e4; static double e6; static double E0; static double N0; static double lat_a; static double lon_a; static double lon_b; static double lat_b; static double xa; static double ya; static double xb; static double yb; static int k; static int sizes; static DecimalFormat df; static int baoxu; public Gnss2xy() { } public static String[] gps_xy(String[] A, String[] B, String jd1, String wd1) { double lon_a1 = Double.parseDouble(A[0]); double lat_a1 = Double.parseDouble(A[1]); double xa1 = 0.0; double ya1 = 0.0; int size2 = A.length; if (size2 == 4) { xa1 = Double.parseDouble(A[2]); ya1 = Double.parseDouble(A[3]); } double lon_b1 = Double.parseDouble(B[0]); double lat_b1 = Double.parseDouble(B[1]); double xb1 = Double.parseDouble(B[2]); double yb1 = Double.parseDouble(B[3]); double lat = Double.parseDouble(wd1); double lon = Double.parseDouble(jd1); String[] realxy = new String[2]; double[] xycs = initiize_ublox_AB(lat_a1, lon_a1, lat_b1, lon_b1, xb1, yb1); if (size2 == 4) { xycs = initiize_ublox_AB2(lat_a1, lon_a1, lat_b1, lon_b1, xa1, ya1, xb1, yb1); } double x0 = xycs[0]; double y0 = xycs[1]; double c = xycs[2]; double s = xycs[3]; double[] xy = new double[2]; double x = ubloxraw2xy(lat, lon)[0] - x0; double y = ubloxraw2xy(lat, lon)[1] - y0; xy[0] = c * x - s * y; xy[1] = s * x + c * y; double x1 = xy[1] * 100.0; double y1 = xy[0] * 100.0; realxy[0] = String.valueOf((int)x1); realxy[1] = String.valueOf((int)y1); return realxy; } public static double[] initiize_ublox_AB(double lat0, double lon0, double latB, double lonB, double xB, double yB) { double[] xycstf = new double[6]; double[] a = ubloxraw2xy(lat0, lon0); double[] b = ubloxraw2xy(latB, lonB); double[] ab = new double[]{b[0] - a[0], b[1] - a[1]}; double the = Math.atan2(ab[0], ab[1]); double thp = Math.atan2(yB, xB); double th = the - thp; double c = Math.cos(th); double s = Math.sin(th); double th_deg = th * 180.0 / Math.PI; xycstf[0] = a[0]; xycstf[1] = a[1]; xycstf[2] = c; xycstf[3] = s; xycstf[4] = th_deg; xycstf[5] = a[2]; return xycstf; } public static double[] initiize_ublox_AB2(double lat0, double lon0, double latB, double lonB, double xA1, double yA1, double xB1, double yB1) { double xA = xA1 / 100.0; double yA = yA1 / 100.0; double xB = xB1 / 100.0; double yB = yB1 / 100.0; double[] xycstf = new double[6]; double[] a = ubloxraw2xy(lat0, lon0); double[] b = ubloxraw2xy(latB, lonB); double[] ab = new double[]{b[0] - a[0], b[1] - a[1]}; double[] AB = new double[]{xB - xA, yB - yA}; double the = Math.atan2(ab[0], ab[1]); double thp = Math.atan2(AB[1], AB[0]); double th = the - thp; double c = Math.cos(th); double s = Math.sin(th); double th_deg = th * 180.0 / Math.PI; double xap = c * yA + s * xA; double yap = -s * yA + c * xA; xycstf[0] = a[0] - xap; xycstf[1] = a[1] - yap; xycstf[2] = c; xycstf[3] = s; xycstf[4] = th_deg; xycstf[5] = a[2]; return xycstf; } public static double[] ubloxraw2xy(double lat, double lon) { double[] xy = new double[3]; double lond = ublox_dm2d(lon); double latd = ublox_dm2d(lat); double[] dxy = utm(latd, lond); xy[0] = dxy[0] * 1000.0; xy[1] = dxy[1] * 1000.0; xy[2] = dxy[2]; return xy; } public static double ublox_d2dm(String deg1) { try { double deg = Double.parseDouble(deg1); double deg0 = Math.floor(deg); double ddeg = deg - deg0; double m = ddeg * 60.0; double ddmm = deg0 * 100.0 + m; return ddmm; } catch (NumberFormatException var11) { return 0.0; } } public static double ublox_dm2d(double ddmm_dot_m) { double d0 = Math.floor(ddmm_dot_m / 100.0); double d = d0 + (ddmm_dot_m - d0 * 100.0) / 60.0; return d; } public static double[] utm(double lat, double lon) { double[] dxy = new double[3]; double zonenum1 = lon / 6.0; if (zonenum1 > 0.0) { zonenum1 = Math.floor(zonenum1); } else { zonenum1 = Math.ceil(zonenum1); } double Zonenum = zonenum1 + 31.0; double lambda0 = ((Zonenum - 1.0) * 6.0 - 180.0 + 3.0) * Math.PI / 180.0; double phi = lat * Math.PI / 180.0; double lambda = lon * Math.PI / 180.0; double v = 1.0 / Math.sqrt(1.0 - e2 * Math.pow(Math.sin(phi), 2.0)); double A = (lambda - lambda0) * Math.cos(phi); double A2 = A * A; double A3 = A2 * A; double A4 = A3 * A; double A5 = A4 * A; double A6 = A5 * A; double T = Math.tan(phi) * Math.tan(phi); double T2 = T * T; double C = e2 * Math.cos(phi) * Math.cos(phi) / (1.0 - e2); double C2 = C * C; double s = (1.0 - e2 / 4.0 - 3.0 * e4 / 64.0 - 5.0 * e6 / 256.0) * phi - (3.0 * e2 / 8.0 + 3.0 * e4 / 32.0 + 45.0 * e6 / 1024.0) * Math.sin(2.0 * phi) + (15.0 * e4 / 256.0 + 45.0 * e6 / 1024.0) * Math.sin(4.0 * phi) - 35.0 * e6 / 3072.0 * Math.sin(6.0 * phi); dxy[0] = E0 + k0 * a * v * (A + (1.0 - T + C) * A3 / 6.0 + (5.0 - 18.0 * T + T2) * A5 / 120.0); dxy[1] = N0 + k0 * a * (s + v * Math.tan(phi) * (A2 / 2.0 + (5.0 - T + 9.0 * C + 4.0 * C2) * A4 / 24.0 + (61.0 - 58.0 * T + T2) * A6 / 720.0)); dxy[2] = Zonenum; return dxy; } static { e2 = e * e; e4 = e2 * e2; e6 = e4 * e2; E0 = 500.0; N0 = 0.0; lat_a = 0.0; lon_a = 0.0; lon_b = 0.0; lat_b = 0.0; xa = 0.0; ya = 0.0; xb = 0.0; yb = 0.0; k = 0; sizes = 2; df = new DecimalFormat("0.0000000"); baoxu = 1; } }