ここでは7つのパラメータによる方法がないので、与えられたパラメータではなく、最初は、地理系回転座標系の座標、その後垂直及び水平補正比を行う投影しました
パブリック 静的 ダブル[]変換(PointF点) { ダブル xParam = 94.362163134086399 。 ダブル yParam = -310.26525523306055 。 ダブル xMultiple = 1.19862910076924 ; ダブル yMultiple = 1 ; // 旋转中心点 ダブル centerX = 114.00092403 。 ダブル centerY = 36.14333070 。 // 旋转角度 ダブル角= 0.064894377180536 。 二重 X =恐らくMath.round(point.X、7)+ 4000000 。 ダブル=恐らくMath.round Y(point.y ,. 7)+3850万; // ダブルX-60139 = + 4000000; // ダブルY = 34944 +3850万; // ガウス投影緯度と経度に逆座標 INT PROJNOと、int型 ZoneWideを; / /// 帯域 ダブル [] =出力新しい新しい ダブル [2 ]; ダブル longitude1、latitude1、longitude0、X0、Y0、XVALはyvalを指定している、であり; // latitude0、 ダブルE1、E2、F、A、EE、NN、T、C 、M、Dは、R、U、FAI、IPI; IPI = 0.0174532925199433; //// 3.1415926535898 / 180.0; A = 6,378,245.0; F = 1.0 / 298.3; //54個の北京座標系パラメータ // A = 6,378,140.0; F = 1 / 298.257; // 80西安パラメータ座標 。ZoneWide = 6; //// 。6テープ幅 PROJNO =(INT)(X- / 1000000L); // 検索バンド番号 (PROJNO - 1)longitude0 = * + ZoneWide ZoneWide / 2 ; longitude0 = longitude0 * IPI; // 中央子午線 X0 = PROJNO 1000000L + * 500000L 、 Y0 = 0 ; XVALは = X-- X0; yvalを指定がY = - Y0 ; // バンド測地 E2 = 2 * F - F * F; E1 =(1.0 - Math.Sqrt(1 - E2))/(1.0 + Math.Sqrt(1 - E2))。 それは E2 /(1 - = E2)を、 M = yvalを指定。 U = M /(*(1 - E2 / 4 - 3 * * E2 E2 / 64 - 5 * E2 * E2 E2 / 256 ))。 HEは、 * Math.Sin(U * 2)+(21 * E1 * E1 / 16 - * 55 * E1 E1 E1 * E1 / - U +(27 E1 * * * E1 E1 / 32 3 * E1 / 2)= 32)* Math.Sin(4 * U) +(151 * E1 * E1 E1 / 96)* Math.Sin(6 * U)+(1097 * E1 E1 E1 * E1 / 512)* Math.Sin (8 * U)。 Cは = *(HE)*彼をMath.Cos Math.Cos(HE)。 T = Math.Tan(HE)*Math.Tan(FAI)。 NN = A / Math.Sqrt(1.0 - E2 * Math.Sin(FAI)* Math.Sin(FAI))。 Rは、( - E2 1)/ Math.Sqrt((1 - E2 * Math.Sin(FAI)* Math.Sin(FAI))*(1 - E2 * Math.Sin(FAI)* Math.Sin(※= FAI))*(1 - E2 * Math.Sin (FAI) * Math.Sin(FAI)))。 D = XVAL / NN。 // 计算经度(経度)纬度(緯度) longitude1 = longitude0 +(D - (1 + 2 * T + C)* D * D * D / 6 +(5 - 2 * C + 28 * T - 3 * C * C + 8 * EE + 24 * T * T)* D * D * D * D * D / 120)/ Math.Cos(FAI)。 latitude1= FAI - (NN * Math.Tan(FAI)/ R)*(D * D / 2 - (5 + 3 * T + 10 * C - 4 * C * C - 9 * EE)* D * D * D * D / 24 +(61 + 90 * T + 298 * C + 45 * Tの*のT - 256 * EE - 3 * C *とC)* D * D * D * D * D * D / 720 )。 // 现状图 出力[0] = longitude1 / IPI * xMultiple + xParam。 出力[ 1] = latitude1 / IPI * yMultiple + yParam。 戻り値の出力; }
およそ20メートル、横方向のずれがありますが、垂直方向の偏差を約3メートルあります。CAD無回転するので、回転補正はそうしませんでした。
参照のため、ここでのコードのみ、より良い提案があるが、我々は一緒に勉強前方に置くことができます