📄 survey.cpp
字号:
//}
}
}
cl=ExData(SetGridData,&dataport);
Strport.Format("%17.14fE+0%i",dataport,cl);//,point54[j].y);
cl=ExData(GetGridData,&dataport);
strgd.Format("%17.14fE+0%i",dataport,cl);//,point54[j].y);
Strport=Strport+strgd+"\n";
n_File.WriteString(Strport);
}
//'以Y为整数计算X
bfxy = false;
basicData = (long)ceil(point54[3].y / 1000) * 1000 ;
for( j = basicData ;j<= (long)floor(point54[1].y);j+=1000)
{
SetGridData = j;
k++;
Strport.Format("%10i%10s%10i%10i%10i%10i%10i",k,lcode,0,0,0,0,2);
Strport+="\n";
n_File.WriteString(Strport);
if( point54[3].x > point54[0].x )
{
Point1 = point54[0]; Point2 = point54[3];
}
else
{
Point1 = point54[3]; Point2 = point54[0];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(!reSet)
{
if( point54[0].x < point54[1].x )
{
Point1 = point54[0]; Point2 = point54[1];
}
else
{
Point1 = point54[1]; Point2 = point54[0];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(!reSet)
{
if( point54[2].x < point54[3].x )
{
Point1 = point54[2]; Point2 = point54[3];
}
else
{
Point1 = point54[3]; Point2 = point54[2];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
//if(reSet)
//{
// Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
// n_File.WriteString(Strport);
//}
}
}
cl=ExData(GetGridData,&dataport);
Strport.Format("%17.14fE+0%i",dataport,cl);//,point54[j].y);
cl=ExData(SetGridData,&dataport);
strgd.Format("%17.14fE+0%i",dataport,cl);//,point54[j].y);
Strport=Strport+strgd+"\n";
n_File.WriteString(Strport);
if( point54[1].x > point54[2].x )
{
Point1 = point54[2]; Point2 = point54[1];
}
else
{
Point1 = point54[1]; Point2 = point54[2];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(!reSet)
{
if( point54[0].x < point54[1].x )
{
Point1 = point54[0]; Point2 = point54[1];
}
else
{
Point1 = point54[1]; Point2 = point54[0];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(!reSet)
{
if( point54[2].x < point54[3].x )
{
Point1 = point54[2]; Point2 = point54[3];
}
else
{
Point1 = point54[3]; Point2 = point54[2];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
//if(reSet)
//{
// Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
// n_File.WriteString(Strport);
//}
}
}
cl=ExData(GetGridData,&dataport);
Strport.Format("%17.14fE+0%i",dataport,cl);
cl=ExData(SetGridData,&dataport);
strgd.Format("%17.14fE+0%i",dataport,cl);
Strport=Strport+strgd+"\n";
n_File.WriteString(Strport);
}
Strport.Format("%10i%10i%10i%10i%10i%10i%10i\n",-1,0,0,0,0,0,0);
n_File.WriteString(Strport);
//写容差 TOLERANCE
Strport.Format("TOL 3\n");
n_File.WriteString(Strport);
Strport.Format("%10i%10i 2.39264700000000E+00\n",1,2);
n_File.WriteString(Strport);
for(j=2;j<=5;j++)
{
Strport.Format("%10i%10i 0.00000000000000E+00\n",j,2);
n_File.WriteString(Strport);
}
Strport.Format("%10i%10i 2.39264700000000E+02\n",6,2);
n_File.WriteString(Strport);
for(j=7;j<=10;j++)
{
Strport.Format("%10i%10i 2.39264700000000E+01\n",j,2);
n_File.WriteString(Strport);
}
Strport.Format("%10i%10i%10i%10i%10i%10i%10i\n",-1,0,0,0,0,0,0);
n_File.WriteString(Strport);
n_File.WriteString("SIN 3\n");
n_File.WriteString("EOX\n");
n_File.WriteString("EOL\n");
n_File.WriteString("IFO 3\n");
n_File.WriteString("TK.BND XX 4 4 32 1\n");
n_File.WriteString("XMIN 8-1 14-1 18 5 60-1 -1 -1-1 1-\n");
n_File.WriteString("YMIN 8-1 94-1 18 5 60-1 -1 -1-1 2-\n");
n_File.WriteString("XMAX 8-1 174-1 18 5 60-1 -1 -1-1 3-\n");
n_File.WriteString("YMAX 8-1 254-1 18 5 60-1 -1 -1-1 4-\n");
double sminx=0,sminy=0;
double smaxx=0,smaxy=0;
BOOL bf=GetMaxMinData(&sminx,&sminy,&smaxx,&smaxy);
cl=ExData(sminx,&dataport);
Strport.Format("%20.17fE+0%i",dataport,cl);
cl=ExData(sminy,&dataport);
strgd.Format("%20.17fE+0%i",dataport,cl);
Strport=Strport+strgd;
CString sccd;
cl=ExData(smaxx,&dataport);
sccd.Format("%20.17fE+0%i",dataport,cl);
cl=ExData(smaxy,&dataport);
strgd.Format("%20.17fE+0%i",dataport,cl);
Strport=Strport+sccd+strgd+"\n";
if(Strport.GetLength()>80)
{
strgd=Strport.Left(80);
strgd+="\n";
n_File.WriteString(strgd);
strgd=Strport.Right(Strport.GetLength()-80);
strgd+="\n";
n_File.WriteString(strgd);
}
else
{
n_File.WriteString(Strport);
}
// n_File.WriteString(Strport);
n_File.WriteString("TK.TIC XX 3 3 20 4\n");
n_File.WriteString("IDTIC 4-1 14-1 5-1 50-1 -1 -1-1 1-\n");
n_File.WriteString("XTIC 8-1 54-1 18 5 60-1 -1 -1-1 2-\n");
n_File.WriteString("YTIC 8-1 134-1 18 5 60-1 -1 -1-1 3-\n");
for(j=0;j<4;j++)
{
cl=ExData(point54[j].x,&dataport);
Strport.Format("%11i%20.17fE+0%i",j+1,dataport,cl);//,point54[j].y);
cl=ExData(point54[j].y,&dataport);
strgd.Format("%20.17fE+0%i",dataport,cl);//,point54[j].y);
Strport=Strport+strgd+"\n";
n_File.WriteString(Strport);
}
n_File.WriteString("EOI\n");
n_File.WriteString("EOS\n");
n_File.Close();
}
int CSurvey::ExData(double data,double* data1)
{
if(data>10000000)
{ *data1=data/10000000; return 7;}
else if(data>1000000)
{ *data1=data/1000000; return 6;}
else if(data>100000)
{ *data1=data/100000; return 5;}
else if(data>10000)
{ *data1=data/10000;return 4;}
else if(data>1000)
{ *data1=data/1000;return 3;}
else if(data>100)
{ *data1=data/100;return 2;}
else if(data>10)
{ *data1=data/10;return 1;}
else
return 0;
}
BOOL CSurvey::GetMaxMinData(double* minx,double* miny,double* maxx,double* maxy) //四坐标中的最大与最小
{
double gxmin=0;
double gymin=0;
double gxmax=0;
double gymax=0;
gxmin=point54[0].x;
gymin=point54[0].y;
gxmax=point54[0].x;
gymax=point54[0].y;
for(int j=1;j<4;j++)
{
if(gxmin>point54[j].x)
{ gxmin=point54[j].x; }
if(gymin>point54[j].y)
{ gymin=point54[j].y; }
if(gxmax<point54[j].x)
{ gxmax=point54[j].x; }
if(gymax<point54[j].y)
{ gymax=point54[j].y; }
}
*minx=gxmin;
*miny=gymin;
*maxx=gxmax;
*maxy=gymax;
return TRUE;
}
//公里格网生成AML文件
void CSurvey::ExportKilometreGridAml(CString filename) //输出54公里格网
{
struct typePoint Point1;
struct typePoint Point2;
double SetGridData;
double GetGridData;
//Dim StrFileName As String
bool bfxy;
long j=0;
CString Strport;
BOOL reSet;
long basicData;
//'计算54公里格网
CStdioFile n_File;
CFileException e;
if(!n_File.Open(filename,CFile::modeCreate|CFile::modeWrite,&e))
{ return;}
n_File.WriteString("501\n");
for(j=0;j<4;j++)
{
Strport.Format("%.2f,%.2f\n",point54[j].x,point54[j].y);
n_File.WriteString(Strport);
}
Strport.Format("%.2f,%.2f\n",point54[0].x,point54[0].y);
n_File.WriteString(Strport);
n_File.WriteString("END\n");
//'以X为整数计算Y
bfxy = true;
basicData = (long)ceil(point54[0].x / 1000) * 1000;
for(j = basicData;j<=(long)floor(point54[2].x);j+=1000)
{
SetGridData = j;
n_File.WriteString("502\n");
if(point54[3].y < point54[2].y)
{
Point1 = point54[3]; //坐标复制
Point2 = point54[2];
}
else
{
Point1 = point54[2]; //'坐标复制
Point2 = point54[3];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%d,%.8f\n",(int)SetGridData,GetGridData);
n_File.WriteString(Strport);
}
else
{
Point1 = point54[3]; //'坐标复制
Point2 = point54[0];
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%d,%.8f\n",(int)SetGridData,GetGridData);
n_File.WriteString(Strport);
}
else
{
Point1 = point54[2]; //'坐标复制
Point2 = point54[1];
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%d,%.8f\n",(int)SetGridData,GetGridData);
n_File.WriteString(Strport);
}
}
}
if( point54[0].y < point54[1].y)
{
Point1 = point54[0]; //'坐标复制
Point2 = point54[1];
}
else
{
Point1 = point54[1]; //'坐标复制
Point2 = point54[0];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%d,%.8f\n",(int)SetGridData,GetGridData);
n_File.WriteString(Strport);
}
else
{
Point1 = point54[3]; //'坐标复制
Point2 = point54[0];
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%d,%.8f\n",(int)SetGridData,GetGridData);
n_File.WriteString(Strport);
}
else
{
Point1 = point54[2]; //'坐标复制
Point2 = point54[1];
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%d,%.8f\n",(int)SetGridData,GetGridData);
n_File.WriteString(Strport);
}
}
}
n_File.WriteString("END\n");
}
//'以Y为整数计算X
bfxy = false;
basicData = (long)ceil(point54[3].y / 1000) * 1000 ;
for( j = basicData ;j<= (long)floor(point54[1].y);j+=1000)
{
SetGridData = j;
n_File.WriteString("502\n");
if( point54[3].x > point54[0].x )
{
Point1 = point54[0]; Point2 = point54[3];
}
else
{
Point1 = point54[3]; Point2 = point54[0];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
n_File.WriteString(Strport);
}
else
{
if( point54[0].x < point54[1].x )
{
Point1 = point54[0]; Point2 = point54[1];
}
else
{
Point1 = point54[1]; Point2 = point54[0];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
n_File.WriteString(Strport);
}
else
{
if( point54[2].x < point54[3].x )
{
Point1 = point54[2]; Point2 = point54[3];
}
else
{
Point1 = point54[3]; Point2 = point54[2];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
n_File.WriteString(Strport);
}
}
}
if( point54[1].x > point54[2].x )
{
Point1 = point54[2]; Point2 = point54[1];
}
else
{
Point1 = point54[1]; Point2 = point54[2];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
n_File.WriteString(Strport);
}
else
{
if( point54[0].x < point54[1].x )
{
Point1 = point54[0]; Point2 = point54[1];
}
else
{
Point1 = point54[1]; Point2 = point54[0];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
n_File.WriteString(Strport);
}
else
{
if( point54[2].x < point54[3].x )
{
Point1 = point54[2]; Point2 = point54[3];
}
else
{
Point1 = point54[3]; Point2 = point54[2];
}
reSet = CalLineCut(Point1, Point2, SetGridData, &GetGridData, bfxy);
if(reSet)
{
Strport.Format("%.9f,%d\n",GetGridData,(int)SetGridData);
n_File.WriteString(Strport);
}
}
}
n_File.WriteString("END\n");
}
n_File.WriteString("END\n");
n_File.Close();
}
//输出TIC点文件
void CSurvey::ExportTicaml(CString filename)
{
CStdioFile n_File;
CFileException e;
CString strport;
int j=0;
if(!n_File.Open(filename,CFile::modeCreate|CFile::modeWrite,&e))
{ return;}
for(j=0;j<4;j++)
{
strport.Format("%d,%.2f,%.2f\n",j+1,point54[j].x,point54[j].y);
n_File.WriteString(strport);
}
n_File.WriteString("END");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -