经纬度坐标转平面笛卡尔坐标

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

void CTestSizeDlg::OnOK()
{
// TODO: Add extra validation here

double dblX1,dblY1;
double dblLon1 = 114 + (2 + 31.33/60)/60;
double dblLan1 = 22 + (31 + 25.65/60)/60;
Gauss_BL2XY(110,dblLon1,dblLan1,&dblX1,&dblY1);

double dblX2,dblY2;
double dblLon2 = 114 + (3 + 55.43/60 )/60;
double dblLan2 = 22 + (31 + 40.73/60)/60;
Gauss_BL2XY(110,dblLon2,dblLan2,&dblX2,&dblY2);


double dblDist = sqrt((dblX1-dblX2)*(dblX1-dblX2) + (dblY1-dblY2)*(dblY1-dblY2));


double dblXBottom,dblYBottom;
double dblLonBottom = 109 + (37 + 27.11/60)/60;
double dblLanBottom = 17 + (27 + 10.72/60)/60;
Gauss_BL2XY(110,dblLonBottom,dblLanBottom,&dblXBottom,&dblYBottom);

double dblXTop,dblYTop;
double dblLonTop = 109 + (49 + 39.03/60 )/60;
double dblLanTop = 62 + (19 + 47.42/60)/60;
Gauss_BL2XY(110,dblLonTop,dblLanTop,&dblXTop,&dblYTop);

double dblDistNS = dblYTop - dblYBottom;


double dblXLeft,dblYLeft;
double dblLonLeft = 76 + (1 + 41.16/60 )/60;
double dblLanLeft = 33 + (28 + 29.12/60)/60;
Gauss_BL2XY(110,dblLonLeft,dblLanLeft,&dblXLeft,&dblYLeft);

double dblXRight,dblYRight;
double dblLonRight = 135 + (9 + 37.74/60 )/60;
double dblLanRight = 32 + (11 + 55.37/60)/60;
Gauss_BL2XY(110,dblLonRight,dblLanRight,&dblXRight,&dblYRight);

double dblDistEW = dblXRight - dblXLeft;


CString strInfor;
strInfor.Format("[distEW:%f][distNS:%f][XLeft:%f][XRight:%f][YBottom:%f][YTop:%f]",dblDistEW,dblDistNS,dblXLeft,dblXRight,dblYBottom,dblYTop);
TRACE(strInfor);

CDialog::OnOK();
}

BOOL CTestSizeDlg::Gauss_BL2XY(double A2,double F2,double E2,double *S2,double *T2)
{
double B2,H2,I2,J2,K2,L2,M2,N2,O2,P2,Q2,R2;
B2 = (int)A2 + ((int)(A2 * 100) - (int)A2 * 100) / 60 + (A2 * 10000 - (int)(A2 * 100) * 100) / 3600;
//把L0化成度(A2)
//G2 = F2 - B2 ' L -L0
//H2 = G2 / 57.2957795130823 '化作弧度
H2 = (F2 - B2) / 57.2957795130823; //将经差的单位化为弧度
I2 = tan(E2 / 57.2957795130823); //Tan (B)
J2 = cos(E2 / 57.2957795130823); //Cos (B)
K2 = 0.006738525415 * J2 * J2;
L2 = I2 * I2;
M2 = 1 + K2;
N2 = 6399698.9018 / sqrt(M2);
O2 = H2 * H2 * J2 * J2;
P2 = I2 * J2;
Q2 = P2 * P2;
R2 = (32005.78006 + Q2 * (133.92133 + Q2 * 0.7031));
*S2 = ((((L2 - 18) * L2 - (58 * L2 - 14) * K2 + 5) * O2 / 20 + M2 - L2) * O2 / 6 + 1) * N2 * (H2 * J2);
//计算结果,横坐标Y 就是S2
//*S2 = *S2 + 18500000; //在计算的基础上加上了“带号”(18)和“东移”(500KM)
//*S2 = *S2 + (int)(F2/6+1)*1000000+500000;
*S2 = *S2 + (int)(A2/6+1)*1000000+500000;
//计算结果,纵坐标X 就是*T2
*T2 = 6367558.49686 * E2 / 57.29577951308 - P2 * J2 * R2 + ((((L2 - 58) * L2 + 61) * O2 / 30 + (4 * K2 + 5) * M2 - L2) * O2 / 12 + 1) * N2 * I2 * O2 / 2;

return TRUE;
}

相关文档
最新文档