资源简介
本程序包含了数据的输入,输出,法方程的建立,近似高程的计算,残差计算,精度评定估计与平差结果输出,用到了最小二乘计算,水准网粗差探测,自由网平差,拟稳平差,抗差估计,闭合差的计算与检验等等。比较全面。值得参考。
代码片段和文件信息
// LevelingAdjust.cpp: implementation of the CLevelingAdjust class.
//
//////////////////////////////////////////////////////////////////////
#include
#include
#include
#include “LevelingAdjust.h“
#include “math.h“
#include “string.h“
#include “public.h“
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CLevelingAdjust::CLevelingAdjust()
{
m_Lnumber=0;
m_Pnumber=0;
m_StablePnumber=0;
}
CLevelingAdjust::~CLevelingAdjust()
{
if(m_Lnumber>0)
{
delete []StartP;
delete []EndP;
delete []L;
delete []P;
delete []V;
}
if(m_Pnumber>0)
{
delete []Height;
delete []ATPA;
delete []ATPL;
delete []dX;
for(int i=0; i if(Pname[i]!=NULL)delete[](Pname[i]);
delete []Pname;
}
}
//////////////////////////////////////////////////////////////////////////
// 原始数据输入函数
void CLevelingAdjust::Inputdata(char *datafile)
{
FILE *fp;
if((fp=fopen(datafile“r“))==NULL)
{
MyBreak(“\n 数据文件打不开!“);
exit(0);
}
fscanf(fp“%d%d%d“&m_Lnumber&m_Pnumber&m_knPnumber);
int unPnumber=m_Pnumber-m_knPnumber;
Height=new double [m_Pnumber];
dX=new double [m_Pnumber];
ATPA=new double [m_Pnumber*(m_Pnumber+1)/2];
ATPL=new double [m_Pnumber];
StartP=new int [m_Lnumber];
EndP=new int [m_Lnumber];
L=new double [m_Lnumber];
V=new double [m_Lnumber];
P=new double [m_Lnumber];
fscanf(fp“%lf“&m_Sigma);
Pname=new char* [m_Pnumber];
for(int i=0;i {
// GetStationNumber函数根据Pname[i]是否为NULL
// 确定Pname[i]是否为点名地址
Pname[i] = NULL;
}
char buffer[100]; //临时数组,保存从文件中读到的点名
// 读取已知高程数据
for( i=0;i<=m_knPnumber-1;i++)
{
fscanf(fp“%s“buffer);
int c=GetStationNumber(buffer);
fscanf(fp“%lf“&Height[c]);
}
// 读取观测数据
for(i=0;i {
fscanf(fp“%s“buffer); //读取高程起点名
StartP[i]=GetStationNumber(buffer);
if(StartP[i]<0)
{
fprintf(resultfp“\n数据文件出错:“);
fprintf(resultfp“\n第%d个高差的起始点名为\“%s\““i+1buffer);
fclose(resultfp);
exit(0);
}
fscanf(fp“%s“buffer);//读取高程终点
EndP[i]=GetStationNumber(buffer);
if(EndP[i]<0)
{
fprintf(resultfp“\n数据文件出错:“);
fprintf(resultfp“\n第%d个高差终点的点名为\“%s\““i+1buffer);
fclose(resultfp);
exit(0);
}
fscanf(fp“%lf%lf“&L[i]&P[i]); //读取高差值与路线长度
P[i]=1.0/P[i];
}
fclose(fp);
}
//////////////////////////////////////////////////////////////////////////
// 原始数据写到结果文件
void CLevelingAdjust::Printdata()
{
int i;
fprintf(resultfp“\n 观测值总数: %d 总点数: %d 已知点数:%d \n“
m_Lnumber m_Pnumberm_knPnumber);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-05-05 23:57 水准网平差\
目录 0 2013-05-05 23:57 水准网平差\Debug\
文件 17862 2013-04-30 15:32 水准网平差\Debug\LevelingAdjust.sbr
文件 20046 2007-06-29 16:31 水准网平差\Debug\MyCpp.obj
文件 0 2007-06-29 16:31 水准网平差\Debug\MyCpp.sbr
文件 18863 2008-12-25 17:47 水准网平差\Debug\probability.obj
文件 0 2008-12-25 17:47 水准网平差\Debug\probability.sbr
文件 17774 2008-12-25 17:47 水准网平差\Debug\public.obj
文件 0 2008-12-25 17:47 水准网平差\Debug\public.sbr
文件 50176 2013-04-30 15:32 水准网平差\Debug\vc60.idb
文件 53248 2013-04-30 15:32 水准网平差\Debug\vc60.pdb
文件 140288 2013-04-30 15:32 水准网平差\Debug\第4章高程网平差.bsc
文件 245854 2008-12-25 17:47 水准网平差\Debug\第4章高程网平差.exe
文件 275964 2008-12-25 17:47 水准网平差\Debug\第4章高程网平差.ilk
文件 18466 2008-12-25 17:47 水准网平差\Debug\第4章高程网平差.obj
文件 244328 2013-04-30 15:32 水准网平差\Debug\第4章高程网平差.pch
文件 558080 2008-12-25 17:47 水准网平差\Debug\第4章高程网平差.pdb
文件 0 2008-12-25 17:47 水准网平差\Debug\第4章高程网平差.sbr
文件 15631 2013-04-30 15:33 水准网平差\LevelingAdjust.cpp
文件 2108 2011-11-29 18:55 水准网平差\LevelingAdjust.h
文件 1232 2007-06-17 23:57 水准网平差\ReadMe.txt
文件 297 2007-06-17 23:57 水准网平差\StdAfx.cpp
文件 667 2007-06-17 23:57 水准网平差\StdAfx.h
文件 6341 2008-03-08 01:48 水准网平差\probability.cpp
文件 1388 2008-03-08 01:48 水准网平差\probability.h
文件 5915 2008-12-25 17:39 水准网平差\public.cpp
文件 1720 2008-12-23 22:17 水准网平差\public.h
文件 3660 2008-12-25 17:47 水准网平差\第4章高程网平差.cpp
文件 3913 2008-04-02 21:41 水准网平差\第4章高程网平差.dsp
文件 555 2003-09-25 07:57 水准网平差\第4章高程网平差.dsw
文件 148480 2013-04-30 16:20 水准网平差\第4章高程网平差.ncb
............此处省略21个文件信息
- 上一篇:SBDART运用文件
- 下一篇:选择题答题程序
评论
共有 条评论