📄 convert.cpp
字号:
fread(&j,sizeof(int),1,in);
m_Grid5.SetRows(j);
for (i=0;i<j-1;i++)
{
m_Grid5.SetRow(i+1);
for (k=1;k<=7;k++)
{
if (k==1) fread(buf,20,1,in);
else { fread(&xx,sizeof(double),1,in);
if (xx!=0)
{
if ((k<=4)||(k==7))
sprintf(buf,"%.3f",xx);
else
sprintf(buf,"%.8f",xx);
}
else strcpy(buf,"");
}
m_Grid5.SetCol(k); m_Grid5.SetText(buf);
}
}
fclose(in);
}
}
void CConvert::WriteData()
{
int i,j,k;
CString str;
double xx;
FILE *in;
in =fopen ("data","w+");
//m_Grid1
j=m_Grid1.GetRows();
fwrite(&j,sizeof(int),1,in);
for (i=0;i<j-1;i++)
{
m_Grid1.SetRow(i+1);
for (k=1;k<=5;k++)
{
m_Grid1.SetCol(k); str=m_Grid1.GetText();
xx=atof(str);
if (k==1) fwrite(str,20,1,in);
else fwrite(&xx,sizeof(double),1,in);
}
}
//m_Grid2
j=m_Grid2.GetRows();
fwrite(&j,sizeof(int),1,in);
for (i=0;i<j-1;i++)
{
m_Grid2.SetRow(i+1);
for (k=1;k<=5;k++)
{
m_Grid2.SetCol(k); str=m_Grid2.GetText();
xx=atof(str);
if (k==1) fwrite(str,20,1,in);
else fwrite(&xx,sizeof(double),1,in);
}
}
//m_Grid3
j=m_Grid3.GetRows();
fwrite(&j,sizeof(int),1,in);
for (i=0;i<j-1;i++)
{
m_Grid3.SetRow(i+1);
for (k=1;k<=5;k++)
{
m_Grid3.SetCol(k); str=m_Grid3.GetText();
xx=atof(str);
if (k==1) fwrite(str,20,1,in);
else fwrite(&xx,sizeof(double),1,in);
}
}
//m_Grid4
j=m_Grid4.GetRows();
fwrite(&j,sizeof(int),1,in);
for (i=0;i<j-1;i++)
{
m_Grid4.SetRow(i+1);
for (k=1;k<=7;k++)
{
m_Grid4.SetCol(k); str=m_Grid4.GetText();
xx=atof(str);
if (k==1) fwrite(str,20,1,in);
else fwrite(&xx,sizeof(double),1,in);
}
}
//m_Grid5
j=m_Grid5.GetRows();
fwrite(&j,sizeof(int),1,in);
for (i=0;i<j-1;i++)
{
m_Grid5.SetRow(i+1);
for (k=1;k<=7;k++)
{
m_Grid5.SetCol(k); str=m_Grid5.GetText();
xx=atof(str);
if (k==1) fwrite(str,20,1,in);
else fwrite(&xx,sizeof(double),1,in);
}
}
fclose(in);
}
void CConvert::Changejs()
{
CString str;
double L0,L1;
// double yyy,yyy1;
double x1,y1,z1,x2,y2;
double b1,l1,h1;//,b2,l2;
int i,j;
double MM;
if (GyBl.WorkData.Mode==2)
MM=0.9996;
else
MM=1;
switch (k_mode)
{
case 1:
L0=CallL0(0,0);
j=m_Grid1.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid1.SetRow(i+1);
m_Grid1.SetCol(2); str=m_Grid1.GetText(); x1=atof(str);
m_Grid1.SetCol(3); str=m_Grid1.GetText(); y1=atof(str);
GyBl.Zbxt_work= &GyBl.WorkData.Zbxt;
// 长半径 扁率 中央纬度 经度 Y 正家 X 增加 比例 投影高
Converting.vSetSystem(GyBl.Zbxt_work->Ra,GyBl.Zbxt_work->Bl,0,L0,
GyBl.Zbxt_work->Xp,GyBl.Zbxt_work->Yp,MM,GyBl.Zbxt_work->Tyg);
Converting.XYBL(x1,y1,&b1,&l1);
L1=CallL0(l1,1);
GyBl.Zbxt_work= &GyBl.WorkData.New_Zbxt;
// 长半径 扁率 中央纬度 经度 Y 正家 X 增加 比例 投影高
Converting.vSetSystem(GyBl.Zbxt_work->Ra,GyBl.Zbxt_work->Bl,0,L1,
GyBl.Zbxt_work->Xp,GyBl.Zbxt_work->Yp,MM,GyBl.Zbxt_work->Tyg);
Converting.BLXY(b1,l1,&x2,&y2);
m_Grid1.SetCol(4); str.Format("%.3f",x2);m_Grid1.SetText(str);
m_Grid1.SetCol(5); str.Format("%.3f",y2);m_Grid1.SetText(str);
}
break;
case 2:
j=m_Grid2.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid2.SetRow(i+1);
m_Grid2.SetCol(2); str=m_Grid2.GetText(); b1=Deg(atof(str));
m_Grid2.SetCol(3); str=m_Grid2.GetText(); l1=Deg(atof(str));
L1=CallL0(l1,0);//转换为幅度
GyBl.Zbxt_work= &GyBl.WorkData.Zbxt;
// 长半径 扁率 中央纬度 经度 Y 正家 X 增加 比例 投影高
Converting.vSetSystem(GyBl.Zbxt_work->Ra,GyBl.Zbxt_work->Bl,0,L1,
GyBl.Zbxt_work->Xp,GyBl.Zbxt_work->Yp,MM,GyBl.Zbxt_work->Tyg);
Converting.BLXY(b1*PI/180,l1*PI/180,&x2,&y2);
m_Grid2.SetCol(4); str.Format("%.3f",x2);m_Grid2.SetText(str);
m_Grid2.SetCol(5); str.Format("%.3f",y2);m_Grid2.SetText(str);
}
break;
case 3:
L0=CallL0(0,0);
j=m_Grid3.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid3.SetRow(i+1);
m_Grid3.SetCol(2); str=m_Grid3.GetText(); x1=atof(str);
m_Grid3.SetCol(3); str=m_Grid3.GetText(); y1=atof(str);
GyBl.Zbxt_work= &GyBl.WorkData.Zbxt;
// 长半径 扁率 中央纬度 经度 Y 正家 X 增加 比例 投影高
Converting.vSetSystem(GyBl.Zbxt_work->Ra,GyBl.Zbxt_work->Bl,0,L0,
GyBl.Zbxt_work->Xp,GyBl.Zbxt_work->Yp,MM,GyBl.Zbxt_work->Tyg);
Converting.XYBL(x1,y1,&b1,&l1);
m_Grid3.SetCol(4); str.Format("%.8f",Dfm(b1*180/PI));m_Grid3.SetText(str);
m_Grid3.SetCol(5); str.Format("%.8f",Dfm(l1*180/PI));m_Grid3.SetText(str);
}
break;
case 4:
L0=CallL0(0,0);
j=m_Grid4.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid4.SetRow(i+1);
m_Grid4.SetCol(2); str=m_Grid4.GetText(); b1=atof(str);
m_Grid4.SetCol(3); str=m_Grid4.GetText(); l1=atof(str);
m_Grid4.SetCol(4); str=m_Grid4.GetText(); h1=atof(str);
GyBl.Zbxt_work= &GyBl.WorkData.Zbxt;
// 长半径 扁率 中央纬度 经度 Y 正家 X 增加 比例 投影高
Converting.vSetSystem(GyBl.Zbxt_work->Ra,GyBl.Zbxt_work->Bl,0,L0,
GyBl.Zbxt_work->Xp,GyBl.Zbxt_work->Yp,MM,GyBl.Zbxt_work->Tyg);
Converting.BLHXYZ(Deg(b1)*PI/180,Deg(l1)*PI/180,h1,&x1,&y1,&z1);
m_Grid4.SetCol(5); str.Format("%.3f",x1);m_Grid4.SetText(str);
m_Grid4.SetCol(6); str.Format("%.3f",y1);m_Grid4.SetText(str);
m_Grid4.SetCol(7); str.Format("%.3f",z1);m_Grid4.SetText(str);
}
break;
case 5:
L0=CallL0(0,0);
j=m_Grid5.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid5.SetRow(i+1);
m_Grid5.SetCol(2); str=m_Grid5.GetText(); x1=atof(str);
m_Grid5.SetCol(3); str=m_Grid5.GetText(); y1=atof(str);
m_Grid5.SetCol(4); str=m_Grid5.GetText(); z1=atof(str);
GyBl.Zbxt_work= &GyBl.WorkData.Zbxt;
// 长半径 扁率 中央纬度 经度 Y 正家 X 增加 比例 投影高
Converting.vSetSystem(GyBl.Zbxt_work->Ra,GyBl.Zbxt_work->Bl,0,L0,
GyBl.Zbxt_work->Xp,GyBl.Zbxt_work->Yp,MM,GyBl.Zbxt_work->Tyg);
Converting.XYZBLH(x1,y1,z1,&b1,&l1,&h1);
m_Grid5.SetCol(5); str.Format("%.8f",Dfm(b1*180/PI));m_Grid5.SetText(str);
m_Grid5.SetCol(6); str.Format("%.8f",Dfm(l1*180/PI));m_Grid5.SetText(str);
m_Grid5.SetCol(7); str.Format("%.3f",h1); m_Grid5.SetText(str);
}
break;
}
}
void CConvert::Onchange()
{
Changejs();
}
void CConvert::OnInput()
{
// int i,j,k;
char buf[255],*po;
// double xx;
CFileDialog dlgFile(TRUE, "*", NULL, OFN_FILEMUSTEXIST|OFN_HIDEREADONLY,
"导入数据 (*.*)|*.*||", NULL);
if ( dlgFile.DoModal() != IDOK ) return ;
// RET=main(dlgFile.GetPathName());
FILE *in;
switch (k_mode)
{
case 1:
break;
case 2:
m_Grid2.SetRows(1);
in=fopen(dlgFile.GetPathName(),"r+");
if (in==NULL) break;
while (!feof(in))
{
if (fgets(buf,254,in)==NULL) break;
if (strlen(buf)>10)
{
m_Grid2.SetRows(m_Grid2.GetRows()+1);
po=strtok(buf," ");if (po==NULL) break;
m_Grid2.SetRow(m_Grid2.GetRows()-1);
m_Grid2.SetCol(1); m_Grid2.SetText(po);
po=strtok(NULL," ");if (po==NULL) break;
m_Grid2.SetCol(2); m_Grid2.SetText(po);
po=strtok(NULL," ");if (po==NULL) break;
m_Grid2.SetCol(3); m_Grid2.SetText(po);
}
}
fclose(in);
break;
case 5:
m_Grid5.SetRows(1);
in=fopen(dlgFile.GetPathName(),"r+");
if (in==NULL) break;
while (!feof(in))
{
if (fgets(buf,254,in)==NULL) break;
if (strlen(buf)>10)
{
m_Grid5.SetRows(m_Grid5.GetRows()+1);
po=strtok(buf," ");if (po==NULL) break;
m_Grid5.SetRow(m_Grid5.GetRows()-1);
m_Grid5.SetCol(1); m_Grid5.SetText(po);
po=strtok(NULL," ");if (po==NULL) break;
m_Grid5.SetCol(2); m_Grid5.SetText(po);
po=strtok(NULL," ");if (po==NULL) break;
m_Grid5.SetCol(3); m_Grid5.SetText(po);
po=strtok(NULL," ");if (po==NULL) break;
m_Grid5.SetCol(4); m_Grid5.SetText(po);
}
}
fclose(in);
break;
}
}
void CConvert::OnOutput()
{
double b1,l1,x,y,h,z;
int i,j;
// char buf[255],*po;
// double xx;
char FileName[100];
CString str;
FILE *out;
switch (k_mode)
{
case 1:
strcpy(FileName,"换算结果.1");
out=fopen(FileName,"w+");
if (out==NULL) break;
j=m_Grid1.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid1.SetRow(i+1);
m_Grid1.SetCol(2); str=m_Grid1.GetText(); b1=atof(str);
m_Grid1.SetCol(3); str=m_Grid1.GetText(); l1=atof(str);
m_Grid1.SetCol(4); str=m_Grid1.GetText(); x=atof(str);
m_Grid1.SetCol(5); str=m_Grid1.GetText(); y=atof(str);
m_Grid1.SetCol(1); str=m_Grid1.GetText();
fprintf(out,"%8s %16.3f %16.3f %16.3f %16.3f\n",str,b1,l1,x,y);
}
fclose(out);
break;
case 2:
strcpy(FileName,"换算结果.2");
out=fopen(FileName,"w+");
if (out==NULL) break;
j=m_Grid2.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid2.SetRow(i+1);
m_Grid2.SetCol(2); str=m_Grid2.GetText(); b1=atof(str);
m_Grid2.SetCol(3); str=m_Grid2.GetText(); l1=atof(str);
m_Grid2.SetCol(4); str=m_Grid2.GetText(); x=atof(str);
m_Grid2.SetCol(5); str=m_Grid2.GetText(); y=atof(str);
m_Grid2.SetCol(1); str=m_Grid2.GetText();
fprintf(out,"%8s %16.8f %16.8f %16.3f %16.3f\n",str,b1,l1,x,y);
}
fclose(out);
break;
case 3:
strcpy(FileName,"换算结果.3");
out=fopen(FileName,"w+");
if (out==NULL) break;
j=m_Grid3.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid3.SetRow(i+1);
m_Grid3.SetCol(2); str=m_Grid3.GetText(); b1=atof(str);
m_Grid3.SetCol(3); str=m_Grid3.GetText(); l1=atof(str);
m_Grid3.SetCol(4); str=m_Grid3.GetText(); x=atof(str);
m_Grid3.SetCol(5); str=m_Grid3.GetText(); y=atof(str);
m_Grid3.SetCol(1); str=m_Grid3.GetText();
fprintf(out,"%8s %16.3f %16.3f %16.8f %16.8f\n",str,b1,l1,x,y);
}
fclose(out);
break;
case 4:
strcpy(FileName,"换算结果.4");
out=fopen(FileName,"w+");
if (out==NULL) break;
j=m_Grid4.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid4.SetRow(i+1);
m_Grid4.SetCol(2); str=m_Grid4.GetText(); b1=atof(str);
m_Grid4.SetCol(3); str=m_Grid4.GetText(); l1=atof(str);
m_Grid4.SetCol(4); str=m_Grid4.GetText(); h=atof(str);
m_Grid4.SetCol(5); str=m_Grid4.GetText(); x=atof(str);
m_Grid4.SetCol(6); str=m_Grid4.GetText(); y=atof(str);
m_Grid4.SetCol(7); str=m_Grid4.GetText(); z=atof(str);
m_Grid4.SetCol(1); str=m_Grid4.GetText();
fprintf(out,"%8s %16.8f %16.8f %16.3f %16.3f %16.3f %16.3f\n",str,b1,l1,h,x,y,z);
}
fclose(out);
break;
case 5:
strcpy(FileName,"换算结果.5");
out=fopen(FileName,"w+");
if (out==NULL) break;
j=m_Grid5.GetRows();
for (i=0;i<j-1;i++)
{
m_Grid5.SetRow(i+1);
m_Grid5.SetCol(2); str=m_Grid5.GetText(); b1=atof(str);
m_Grid5.SetCol(3); str=m_Grid5.GetText(); l1=atof(str);
m_Grid5.SetCol(4); str=m_Grid5.GetText(); h=atof(str);
m_Grid5.SetCol(5); str=m_Grid5.GetText(); x=atof(str);
m_Grid5.SetCol(6); str=m_Grid5.GetText(); y=atof(str);
m_Grid5.SetCol(7); str=m_Grid5.GetText(); z=atof(str);
m_Grid5.SetCol(1); str=m_Grid5.GetText();
fprintf(out,"%8s %16.3f %16.3f %16.3f %16.8f %16.8f %16.3f\n",str,b1,l1,h,x,y,z);
}
fclose(out);
break;
}
str.Format("输出文件 %s",FileName);
AfxMessageBox(str);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -