⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 survey.cpp

📁 能够实现一些常用的地图转换
💻 CPP
📖 第 1 页 / 共 4 页
字号:
				//}
            }
        }
		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 + -