📄 gybl.cpp
字号:
// GyBl.cpp: implementation of the CGyBl class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "坐标转换.h"
#include "GyBl.h"
//#include "Basline.h"
#include "zbxtsz.h"
#include <afxpriv.h>
#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CGyBl::CGyBl()
{
Zbxt_head=NULL;
WorkData.Mode=1;
int i;
for (i=0;i<9;i++) WorkData.Ys[i]=0;
WorkData.Ys[1]=WorkData.Ys[4]=WorkData.Ys[6]=1;
strcpy(WorkData.Zbxt.XtName,"WGS-1984坐标系");
strcpy(WorkData.Zbxt.Xtmode,"系统保留");
WorkData.Zbxt.Ra=63781;
WorkData.Zbxt.Bl=298.257223563;
WorkData.Zbxt.Bl_num=9;
strcpy(WorkData.New_Zbxt.XtName,"WGS-1984坐标系");
strcpy(WorkData.New_Zbxt.Xtmode,"系统保留");
WorkData.New_Zbxt.Ra=63781;
WorkData.New_Zbxt.Bl=298.257223563;
WorkData.New_Zbxt.Bl_num=9;
}
CGyBl::~CGyBl()
{
}
void CGyBl::DfmStr(double aa)
{
double du,fen,miao;
aa=aa*180/PI;
du=floor(aa);
fen=floor((aa-du)*60);
miao=((aa-du)*60-fen)*60;
if (miao>=60) { fen++;miao=0;
if (fen>=60)
{ fen=0;du++;}
}
// d=du+fen/100+miao/10000;
// d=d*nn;
str.Format("%3.0f:%02.0f:%08.5f",du,fen,miao);
}
BOOL CGyBl::zbxt()
{
CZbxtSz dlg;
dlg.DoModal();
return TRUE;
}
BOOL CGyBl::ReadZbxt()
{
FILE *in;
char path[255],pathname[255],*po;
strcpy(pathname,"zbxt.cfg");
in=fopen(pathname,"r+");
if (in==NULL)
{
in=fopen(pathname,"w+");
if (in==NULL) { AfxMessageBox("系统路径错误,请重新安装");return FALSE;}
fprintf(in,"%s","WGS-1984坐标系\n系统保留\n6378137\n298.257223563 9\n");
fprintf(in,"%s","国家1954北京坐标系\n系统保留\n6378245\n298.30 2\n");
fprintf(in,"%s","国家1980西安坐标系\n系统保留\n6378140\n298.257 3\n");
}
fclose(in);
in=fopen(pathname,"r+");
if (in==NULL) return FALSE;
while (!feof(in))
{
if (fgets(path,254,in)==NULL) break;
str=path; str.TrimLeft(); str.TrimRight();
NewZbxt();
strcpy(Zbxt_work->XtName,str); //系统名称
if (fgets(path,254,in)==NULL) break;
str=path; str.TrimLeft(); str.TrimRight();
strcpy(Zbxt_work->Xtmode,str); //系统方式
if (fgets(path,254,in)==NULL) break;
Zbxt_work->Ra=atof(path);
if (fgets(path,254,in)==NULL) break;
po=strtok(path," "); Zbxt_work->Bl=atof(po);
po=strtok(NULL," "); Zbxt_work->Bl_num=atoi(po);
Zbxt_work->Zyzwx=Zbxt_work->Tyg=Zbxt_work->Xp=0;
Zbxt_work->Yp=500000;
if (strcmp(Zbxt_work->Xtmode,"系统保留")!=0)
{
if (fgets(path,254,in)==NULL) break;
Zbxt_work->Zyzwx=atof(path);
if (fgets(path,254,in)==NULL) break;
Zbxt_work->Tyg=atof(path);
if (fgets(path,254,in)==NULL) break;
Zbxt_work->Xp=atof(path);
if (fgets(path,254,in)==NULL) break;
Zbxt_work->Yp=atof(path);
}
}
fclose(in);
return TRUE;
}
BOOL CGyBl::SaveZbxt()
{
FILE *in;
char pathname[255];
strcpy(pathname,"zbxt.cfg");
in=fopen(pathname,"w+");
if (in==NULL) return FALSE;
Zbxt_work=Zbxt_head;
while (Zbxt_work!=NULL)
{
fprintf(in,"%s\n%s\n",Zbxt_work->XtName,Zbxt_work->Xtmode);
fprintf(in,"%.0f\n",Zbxt_work->Ra);
fprintf(in,"%.9f %d\n",Zbxt_work->Bl,Zbxt_work->Bl_num);
if (strcmp(Zbxt_work->Xtmode,"系统保留")!=0)
{
fprintf(in,"%.f\n",Zbxt_work->Zyzwx);
fprintf(in,"%.f\n",Zbxt_work->Tyg);
fprintf(in,"%.f\n",Zbxt_work->Xp);
fprintf(in,"%.f\n",Zbxt_work->Yp);
}
Zbxt_work=Zbxt_work->next;
}
fclose(in);
return TRUE;
}
BOOL CGyBl::DeleteZbxt()
{
while (Zbxt_head!=NULL)
{
Zbxt_work=Zbxt_head->next;
delete Zbxt_head;
Zbxt_head=Zbxt_work;
}
Zbxt_head=NULL;
return TRUE;
}
BOOL CGyBl::NewZbxt()
{
Zbxt_work=new _ZBXT;
if (Zbxt_work==NULL) return FALSE;
Zbxt_work->next=NULL;
if (Zbxt_head==NULL) Zbxt_head=Zbxt_work;
else
{ Zbxt_tail=Zbxt_head;
while (Zbxt_tail->next!=NULL) Zbxt_tail=Zbxt_tail->next;
Zbxt_tail->next=Zbxt_work;
}
return TRUE;
}
double CGyBl::deg(double a2)
{
double d;
double du,fen,miao;
double nn;
if (a2<0) { nn=-1;a2=-a2;} else nn=1;
du=floor(a2); fen=floor((a2-du)*100);
miao=((a2-du)*100-fen)*100;
if (miao>=60) { fen++;miao=0;
if (fen>=60) { fen=0;du++;}
}
d=du+fen/60+miao/3600;
d=d*nn;
return(d);
}
double CGyBl::dfm(double a2)
{
double d;
double du,fen,miao;
double nn;
if (a2<0) { nn=-1;a2=-a2;} else nn=1;
du=floor(a2);
fen=floor((a2-du)*60);
miao=((a2-du)*60-fen)*60;
if (miao>=60) { fen++;miao=0;
if (fen>=60) { fen=0;du++;}
}
d=du+fen/100+miao/10000;
d=d*nn;
return(d);
}
double CGyBl::calL0(double l)
{
/*
double d0,l0;
d0=l*180.0/PI;
double xxx;
l0=0;
//中央子午线计算
if (strcmp(WorkSpaceData.Zbxt.Xtmode,"自定义坐标系统")==0)
{
l0=WorkSpaceData.Zbxt.Zyzwx;
l0=deg(l0);
xxx=WorkSpaceData.Zbxt.Yp;
}
else
{ xxx=500000.000;
{ int tt;
// 3度 6度计算
if (WorkSpaceData.Fdd==0)
l0= (int)floor((d0+1.5)/3)*3;
else
{
tt=(int)floor((d0+6)/6);
l0=6*tt-3;
}
}
}
l0=l0 *PI/180;
// vSetSystem(WorkSpaceData.Zbxt.Ra,1/WorkSpaceData.Zbxt.Bl,0,l0,0,xxx,1);
return l0;
*/
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -