目录

  • 1、题目
  • 2、分析及源码
  • 3、随笔

1、题目

有测边网如下图所示。网中A、B、C、D为已知点,P1、P2、P3、P4为待定点,现用某测距仪观测了13条边长,测距精度 = 3mm+1*10-6s,起算数据及观测边长见下,按间接平差法求待定点坐标平差值及其中误差。

起算数据

边长 坐标方位角
X Y m °      ′      ″
A 53743.136 61003.826 7804.558 138   00   08.6
B 47943.002 66225.854
C 40049.229 53782.790 7889.381 113   19   50.8
D 36924.728 61027.086

观测数据

编号 边观测值(m) 编号 边观测值(m) 编号 边观测值(m)
1 5760.705 6 8720.162 11 5487.073
2 5187.342 7 5598.570 12 8884.589
3 7838.880 8 7494.881 13 7228.367
4 5483.158 9 7493.323
5 5731.788 10 5438.380

2、分析及源码

由题意有n=13,t=8,选待定点P1,P2,P3,P4的坐标为参数。
P1的近似坐标由己知点A、B和观测边S1,S2交会计算得。同理,由P1、A、S3、S4交会计算P2的近似坐标;由P1、P2、S10、S5交会计算P3的近似坐标;由P1、P3、S12、S9交会计算P4的近似坐标。
点击这里查看具体解题过程
这里不过多叙述解题过程,需要的同学请点击上方链接,我们具体讲讲程序怎么写。
首先,我们定义如下类:

  • 点类:存储点的点号,坐标,以及判断该点是否已知
  • 边观测值类:用来推算近似坐标,存储三角形的三个点以及三边长度
  • 距离类:起点和终点,以及两点间的距离
class CLevelPoint//点类
{public:CLevelPoint(void);~CLevelPoint(void);
public:CString strID;//点号double x;//x坐标double y;//y坐标bool flag;//判断该点是否已知,1为已知,0为未知
};
class CdHObs//边观测值类
{public:CdHObs(void);~CdHObs(void);
public:CLevelPoint *PointOne, *PointTwo,*PointThree;//三角形三个点double S1,S2,S3;//路线长度
};
class CDistance//距离类
{public:CDistance(void);~CDistance(void);
public:CLevelPoint *StartPoint, *EndPoint;//起点和终点double distance;//两点间距离
};
CLevelPoint::CLevelPoint(void)
{strID = _T("");x = 0;y = 0;flag = 0;
}
CLevelPoint::~CLevelPoint(void)
{}
CdHObs::CdHObs(void)
{S1 = 0;S2 = 0;S3 = 0;
}
CdHObs::~CdHObs(void)
{}
CDistance::CDistance(void)
{distance = 0;
}
CDistance::~CDistance(void)
{}

然后声明存储数据的数组,以及用得到的各种方法和计算平差时用得到的变量。

{public:CTrilateralNets(void);~CTrilateralNets(void);private:
CLevelPoint *pUnknownPoint;//未知点数组int iUnknownPointCount;//未知点个数CLevelPoint *pKnownPoint;//已知点数组int iKnownPointCount;//已知点个数CdHObs *pdHObs;//边观测值数组int idHObsCount;//边观测值个数CDistance *pDistance;//边长类int iDistanceCount;//边长个数private:CLevelPoint *SearchKnownPointUsingID(CString strID);//根据点号查找已知点,返回该点指针CLevelPoint *SearchUnknownPointUsingID(CString strID);//根据点号查找未知点,返回该点指针CLevelPoint *SearchPointUsingID(CString strID);//根据点号查找点,返回该点指针private:CString *CTrilateralNets::SplitString(CString str, char split, int iSubStrs);//字符串分割函数public:void SetKnownPointSize(int size);//设置已知点数组大小void SetUnknownPointSize(int size);//设置未知点数组大小void SetdHObsSize(int size);//设置边观测值数组大小void SetDistanceSize(int size);//设置距离值数组大小public:BOOL LoadObsData(const CString& strFileName);//导入观测数据函数void CalculateApproximateH(void);//求待测点近似坐标void RigorousAdjust(const CString& strFileName);//平差计算主函数public:void FormErrorEquation();//组成误差方程void CTrilateralNets::Weight();//组成权阵void EquationCompute();//计算法方程void Accuracy_Assessment();//精度评定void OutMatrixToFile(const CMatrix& mat, CStdioFile& SF);//把矩阵输出到文件中private:/*l为常数项矩阵,B为系数矩阵,P为权阵,BT为B的转置,NBB为法方程系数阵,NBBl为NBB的逆矩阵x为未知数近似值的改正数,v为观测值改正数,vT为v的转置,r为vtPv,Qxx为协因数阵*/CMatrix l, B, P, BT, NBB, NBBl, x, v, vT, r, Qxx;double r0;//r0为单位权中误差double *Qx = new double[iUnknownPointCount];//*Qx为未知点高程中误差
};
CTrilateralNets::CTrilateralNets(void)
{}
CTrilateralNets::~CTrilateralNets(void)
{//释放动态数组内存if (pUnknownPoint != NULL){delete[] pUnknownPoint;pUnknownPoint = NULL;}if (pKnownPoint != NULL){delete[] pKnownPoint;pKnownPoint = NULL;}if (pdHObs != NULL){delete[] pdHObs;pdHObs = NULL;}
}
//设置已知点数组大小
void CTrilateralNets::SetKnownPointSize(int size)
{pKnownPoint = new CLevelPoint[size];//已知点数组
}
//设置未知点数组大小
void CTrilateralNets::SetUnknownPointSize(int size)
{pUnknownPoint = new CLevelPoint[size];//已知点数组
}
//设置边观测值数组大小
void CTrilateralNets::SetdHObsSize(int size)
{pdHObs = new CdHObs[size];
}
//设置边长总数数组大小
void CTrilateralNets::SetDistanceSize(int size)
{pDistance = new CDistance[size];
}
//根据点号从已知点数组中找到控制点,并返回该点指针
CLevelPoint *CTrilateralNets::SearchKnownPointUsingID(CString strID)
{for (int i = 0; i < iKnownPointCount; i++){if (strID == pKnownPoint[i].strID)//当点号与已知点点号相同时,返回该点的指针return &pKnownPoint[i];}return NULL;
}
//根据点号从未知点数组中找到控制点,并返回该点指针
CLevelPoint *CTrilateralNets::SearchUnknownPointUsingID(CString strID)
{for (int i = 0; i < iUnknownPointCount; i++){if (strID == pUnknownPoint[i].strID)//当点号与已知点点号相同时,返回该点的指针return &pUnknownPoint[i];}return NULL;
}
//根据点号从未知点和已知点中找到控制点,并返回该点指针
CLevelPoint *CTrilateralNets::SearchPointUsingID(CString strID)
{CLevelPoint *pCP = NULL;//定义一个空指针pCP = SearchKnownPointUsingID(strID);//试探该点是否已知if (pCP == NULL)//如果pCP为空,则pCP为未知点pCP = SearchUnknownPointUsingID(strID);return pCP;
}
//字符串分割函数
CString *CTrilateralNets::SplitString(CString str, char split, int iSubStrs)
{int iPos = 0;//分割符位置int iNums = 0;//分割符的总数CString strTemp = str;CString strRight;//计算子字符串的数量while (iPos != -1){iPos = strTemp.Find(split);if (iPos == -1)break;strRight = strTemp.Mid(iPos + 1, str.GetLength());strTemp = strRight;iNums++;}if (iNums == 0)//没有找到分隔符{//子字符串数就是字符串本身iSubStrs = 1;return NULL;}//子字符串数组iSubStrs = iNums + 1;//子字符串的数量=分割符数量+1CString* pStrSplit;pStrSplit = new CString[iSubStrs];strTemp = str;CString strLeft;for (int i = 0; i < iNums; i++){iPos = strTemp.Find(split);//左子串strLeft = strTemp.Left(iPos);//右子串strRight = strTemp.Mid(iPos + 1, strTemp.GetLength());strTemp = strRight;pStrSplit[i] = strLeft;}pStrSplit[iNums] = strTemp;return pStrSplit;
}
//导入观测数据函数
BOOL CTrilateralNets::LoadObsData(const CString& strFileName)
{CStdioFile sf;//创建文件对象//以读的方式打开文件if (!sf.Open(strFileName, CFile::modeRead))return false;CString strLine;BOOL bEOF = sf.ReadString(strLine);//读取第一行,已知点个数iKnownPointCount = _ttoi(strLine);//存取已知点个数SetKnownPointSize(iKnownPointCount);//设置已知点数组大小//开始读取已知点数据int n = 0;for (int i = 0; i < iKnownPointCount; i++)//根据已知点个数,读取已知点数据{sf.ReadString(strLine);CString *pstrData = SplitString(strLine, ',', n);pKnownPoint[i].strID = pstrData[0];//存取已知点点号pKnownPoint[i].x = _tstof(pstrData[1]);//存取已知点x坐标pKnownPoint[i].y = _tstof(pstrData[2]);//存取已知点y坐标pKnownPoint[i].flag = 1;//标记为已知点delete[] pstrData;pstrData = NULL;}//开始读取未知点数据sf.ReadString(strLine);//读取未知点个数iUnknownPointCount = _ttoi(strLine);//存取未知点个数SetUnknownPointSize(iUnknownPointCount);//设置未知点数组大小sf.ReadString(strLine);CString *pstrData1 = SplitString(strLine, ',', n);//读取并保存未知点点号for (int i = 0; i < iUnknownPointCount; i++)//根据未知点个数,读取未知点数据{pUnknownPoint[i].strID = pstrData1[i];//存取未知点点号}delete[] pstrData1;pstrData1 = NULL;//开始读取高差观测值数据sf.ReadString(strLine);//读取边观测值个数idHObsCount = _ttoi(strLine);//存取边观测值个数SetdHObsSize(idHObsCount);//设置边观测值数组大小//读取并保存边观测值数据for (int i = 0; i < idHObsCount; i++){sf.ReadString(strLine);CString *pstrData2 = SplitString(strLine, ',', n);pdHObs[i].PointOne = SearchPointUsingID(pstrData2[0]);//存取1点信息pdHObs[i].PointTwo = SearchPointUsingID(pstrData2[1]);//存取2点信息pdHObs[i].PointThree = SearchPointUsingID(pstrData2[2]);//存取3点信息pdHObs[i].S1 = _tstof(pstrData2[3]);//存取12路线长度pdHObs[i].S2 = _tstof(pstrData2[4]);//存取13路线长度pdHObs[i].S3 = _tstof(pstrData2[5]);//存取23路线长度delete[] pstrData2;pstrData2 = NULL;}//开始读取两点间距离sf.ReadString(strLine);//读取距离个数iDistanceCount = _ttoi(strLine);//存取距离个数SetDistanceSize(iDistanceCount);//设置距离数组大小//读取并保存距离数据for (int i = 0; i < iDistanceCount; i++){sf.ReadString(strLine);CString *pstrData3 = SplitString(strLine, ',', n);pDistance[i].StartPoint = SearchPointUsingID(pstrData3[0]);//存取1点信息pDistance[i].EndPoint = SearchPointUsingID(pstrData3[1]);//存取2点信息pDistance[i].distance = _tstof(pstrData3[2]);//存取12距离delete[] pstrData3;pstrData3 = NULL;}sf.Close();return true;
}
//求待测点近似坐标
void CTrilateralNets::CalculateApproximateH(void)
{int i = 0;double s = 0, h = 0, a = 0, S = 0;for (i = 0; i < 3; i++){double dy = 0, dx = 0;S = (pdHObs[i].S1*pdHObs[i].S1 + pdHObs[i].S2*pdHObs[i].S2 - pdHObs[i].S3*pdHObs[i].S3)/(2*pdHObs[i].S1);s = fabs(S);h = sqrt(pdHObs[i].S2*pdHObs[i].S2 - s*s);if (pdHObs[i].PointOne->x > pdHObs[i].PointTwo->x){dy = pdHObs[i].PointTwo->y - pdHObs[i].PointOne->y;dx = pdHObs[i].PointTwo->x - pdHObs[i].PointOne->x;}else{dy = pdHObs[i].PointOne->y - pdHObs[i].PointTwo->y;dx = pdHObs[i].PointOne->x - pdHObs[i].PointTwo->x;}a = atan(dy / dx) * 180 / pi;if (dx > 0)a = dy > 0 ? a : a + 360;elsea = a + 180;pdHObs[i].PointThree->x = pdHObs[i].PointOne->x + s*cos(a*pi / 180) + h*cos((a+90)*pi / 180);pdHObs[i].PointThree->y = pdHObs[i].PointOne->y + s*sin(a*pi / 180) + h*sin((a+90)*pi / 180);}double dy = 0, dx = 0;S = (pdHObs[i].S1*pdHObs[i].S1 + pdHObs[i].S2*pdHObs[i].S2 - pdHObs[i].S3*pdHObs[i].S3) / (2 * pdHObs[i].S1);s = fabs(S);h = sqrt(pdHObs[i].S2*pdHObs[i].S2 - s*s);if (pdHObs[i].PointOne->x > pdHObs[i].PointTwo->x){dy = pdHObs[i].PointTwo->y - pdHObs[i].PointOne->y;dx = pdHObs[i].PointTwo->x - pdHObs[i].PointOne->x;}else{dy = pdHObs[i].PointOne->y - pdHObs[i].PointTwo->y;dx = pdHObs[i].PointOne->x - pdHObs[i].PointTwo->x;}a = atan(dy / dx) * 180 / pi;if (dx > 0)a = dy > 0 ? a : a + 360;elsea = a + 180;pdHObs[i].PointThree->x = pdHObs[i].PointOne->x + s*cos(a*pi / 180) - h*cos((a + 90)*pi / 180);pdHObs[i].PointThree->y = pdHObs[i].PointOne->y + s*sin(a*pi / 180) - h*sin((a + 90)*pi / 180);
}
//组成误差方程
void CTrilateralNets::FormErrorEquation()
{l.SetSize(iDistanceCount, 1);//设置常数项l的大小for (int i = 0; i < iDistanceCount; i++){double l0 = sqrt(pow(pDistance[i].EndPoint->x - pDistance[i].StartPoint->x, 2)+ pow(pDistance[i].EndPoint->y - pDistance[i].StartPoint->y, 2));l(i, 0) = pDistance[i].distance - l0;//计算l中各项的值}B.SetSize(iDistanceCount, iUnknownPointCount*2);//设置系数B的大小for (int i = 0; i < iDistanceCount; i++){for (int j = 0; j < iUnknownPointCount*2; j++){B(i, j) = 0;//先给B初值}}for (int i = 0; i < iDistanceCount; i++){double c = 0, d = 0;double S0 = sqrt(pow(pDistance[i].EndPoint->x - pDistance[i].StartPoint->x, 2)+ pow(pDistance[i].EndPoint->y - pDistance[i].StartPoint->y, 2));c = (pDistance[i].EndPoint->x - pDistance[i].StartPoint->x) / S0;d = (pDistance[i].EndPoint->y - pDistance[i].StartPoint->y) / S0;int a = 0;for (int j = 0; j < iUnknownPointCount; j++){if (pDistance[i].StartPoint->strID == pUnknownPoint[j].strID){B(i, a) = -c;B(i, a + 1) = -d;break;}a += 2;}a = 0;for (int j = 0; j < iUnknownPointCount; j++){if (pDistance[i].EndPoint->strID == pUnknownPoint[j].strID){B(i, a) = c;B(i, a + 1) = d;break;}a += 2;}}
}
//组成权阵
void CTrilateralNets::Weight()
{P.SetSize(iDistanceCount, iDistanceCount);//设置权阵P的大小double a = 0.003, b = 0.000001;for (int i = 0; i < iDistanceCount; i++){for (int j = 0; j < iDistanceCount; j++){P(i, j) = 0;//先给P初值}}for (int i = 0; i < iDistanceCount; i++){double ms = a + b*pDistance[i].distance;P(i, i) = 0.01*0.01 / (ms*ms);}
}
//组成法方程
void CTrilateralNets::EquationCompute()
{BT = ~B;//计算B的转置NBB = BT*P*B;//计算NBBNBBl = NBB.Inv();//计算NBB的逆矩阵x = -1 * NBBl*BT*P*l;//计算x}
//精度评定
void CTrilateralNets::Accuracy_Assessment()
{v = B*x + l;//计算改正数vvT = ~v;r = vT*P*v;r0 = sqrt(r(0, 0)*1.0 / (iDistanceCount - iUnknownPointCount * 2));//计算单位权中误差r0Qxx = NBB.Inv();//计算协因数阵int a = 0;for (int i = 0; i < iUnknownPointCount; i++)//计算未知点高程中误差{Qx[i] = sqrt(pow(sqrt(Qxx(a, a))*r0, 2) + pow(sqrt(Qxx(a + 1, a + 1))*r0, 2));a += 2;}
}
//把矩阵输出到文件中
void CTrilateralNets::OutMatrixToFile(const CMatrix& mat, CStdioFile& SF)
{CString strLine, strTmp;for (int i = 0; i < mat.Row(); i++){strLine.Empty();for (int j = 0; j < mat.Col(); j++){strTmp.Format(_T("%8.4f"), mat(i, j));strLine = strLine + strTmp;}SF.WriteString(strLine + _T("\r\n"));}
}
void CTrilateralNets::RigorousAdjust(const CString& strFileName)
{//开始输出平差结果CStdioFile SF;CString strLine;setlocale(LC_ALL, "");if (!SF.Open(strFileName, CFile::modeCreate | CFile::modeWrite))return;CalculateApproximateH();FormErrorEquation();Weight();EquationCompute();Accuracy_Assessment();SF.WriteString(_T("——测边网间接平差结果——\n"));strLine.Format(_T("已知点个数:%d\n"), iKnownPointCount);SF.WriteString(strLine);strLine.Format(_T("已知点点号及坐标:\n"));SF.WriteString(strLine);for (int i = 0; i < iKnownPointCount; i++){strLine.Format(_T("%s,%.4lf,%.4lf\n"), pKnownPoint[i].strID, pKnownPoint[i].x,pKnownPoint[i].y);SF.WriteString(strLine);}strLine.Format(_T("未知点个数:%d\n"), iUnknownPointCount);SF.WriteString(strLine);SF.WriteString(_T("未知点近似坐标:\r\n"));for (int i = 0; i < iUnknownPointCount; i++){strLine.Format(_T("%s,%.4lf,%.4lf\n"), pUnknownPoint[i].strID, pUnknownPoint[i].x, pUnknownPoint[i].y);SF.WriteString(strLine);}SF.WriteString(_T("\r\n"));SF.WriteString(_T("B矩阵:\r\n"));OutMatrixToFile(B, SF);SF.WriteString(_T("常数项l矩阵(dm):\r\n"));OutMatrixToFile(l*10, SF);SF.WriteString(_T("\r\nP矩阵:\r\n"));OutMatrixToFile(P, SF);SF.WriteString(_T("N矩阵:\r\n"));OutMatrixToFile(NBB, SF);SF.WriteString(_T("N矩阵的逆矩阵:\r\n"));OutMatrixToFile(NBBl, SF);SF.WriteString(_T("x矩阵:\r\n"));OutMatrixToFile(x, SF);SF.WriteString(_T("\r\n"));SF.WriteString(_T("边观测值改正数(dm):\r\n"));OutMatrixToFile(v*10.0, SF);strLine.Format(_T("单位权中误差:%.2lf(dm)\r\n"), r0*10.0);SF.WriteString(strLine);SF.WriteString(_T("Qxx矩阵:\r\n"));OutMatrixToFile(Qxx, SF);SF.WriteString(_T("\r\n"));SF.WriteString(_T("未知点坐标中误差(dm):\r\n"));for (int i = 0; i < iUnknownPointCount; i++){strLine.Format(_T("%.2lf\n"), (double)(Qx[i] * 10));SF.WriteString(strLine);}SF.WriteString(_T("\r\n"));SF.WriteString(_T("边长平差值(m):\r\n"));for (int i = 0; i < iDistanceCount; i++){strLine.Format(_T("%.4lf\n"), pDistance[i].distance + v(i, 0));SF.WriteString(strLine);}SF.WriteString(_T("\r\n"));SF.WriteString(_T("坐标平差值(m):\r\n"));int a = 0;for (int i = 0; i < iUnknownPointCount; i++){strLine.Format(_T("%s,%.4lf,%.4lf\n"), pUnknownPoint[i].strID, pUnknownPoint[i].x + x(a,0), pUnknownPoint[i].y + x(a+1,0));a += 2;SF.WriteString(strLine);}SF.WriteString(_T("\r\n"));SF.Close();
}

MFC的窗口比较简陋,如下图。

文件读取为Button1,平差计算为Button2。我这里写的方法是在文件读取时就进行了平差计算并输出结果,而在平差计算时就是打开输出的结果文件。

void CTrilateralNetsDlg::OnBnClickedButton1()
{// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CFileDialog dlgFile(TRUE, _T("txt"), NULL,OFN_EXPLORER, _T("(文本文件)|*.dat")); //创建打开文件对话框if (dlgFile.DoModal() == IDCANCEL) return;//如果选择取消按钮,则退出CString strFileName = dlgFile.GetPathName();//获取选择的文件的名称CTrilateralNets la;la.LoadObsData(strFileName);la.RigorousAdjust(_T("测边网间接平差计算结果.txt"));setlocale(LC_ALL, "");   //设置语言环境CStdioFile sf;  //创建文件对象//以读的形式打开文件,如果打开失败则返回if (!sf.Open(strFileName, CFile::modeRead)) return;CString strLine;strFileContent.Empty();BOOL bEOF = sf.ReadString(strLine);//读取第一行strFileContent += strLine + _T("\r\n");while (bEOF){bEOF = sf.ReadString(strLine);if (bEOF)strFileContent += strLine + _T("\r\n");}sf.Close();UpdateData(FALSE);//关闭文件
}void CTrilateralNetsDlg::OnBnClickedButton2()
{// TODO: 在此添加控件通知处理程序代码UpdateData(TRUE);CString strFileName = (_T("测边网间接平差计算结果.txt"));//获取选择的文件的名称setlocale(LC_ALL, "");  //设置语言环境CStdioFile sf;  //创建文件对象//以读的形式打开文件,如果打开失败则返回if (!sf.Open(strFileName, CFile::modeRead)) return;CString strLine;strFileOutput1.Empty();BOOL bEOF = sf.ReadString(strLine);//读取第一行strFileOutput1 += strLine + _T("\r\n");while (bEOF){bEOF = sf.ReadString(strLine);if (bEOF)strFileOutput1 += strLine + _T("\r\n");}sf.Close();UpdateData(FALSE);//关闭文件
}

读取的文件格式如下:

输出的文件格式如下(只截取了部分):

文中用到的计算矩阵的代码已上传,需要的自行下载。

3、随笔

写的稍微有些简陋,分享出来给大家学习讨论。这是一年前做课设时写的,也不知道会不会有学弟学妹看到,哈哈,以后有时间好好学习学习,然后把绘图功能完善一下。

【MFC】测边网平差计算相关推荐

  1. matlab边角网间接平差计算,12.2测边网与边角网间接平差

    §12.2测边网与边角网间接平差 测边网或边角网(其实是测方向),都是把所测方向和边作为平差元素,因此这类网只要按边长观测值.方向观测值列出误差方程式,就可组成法方程式,-- 误差方程式的总数等于网中 ...

  2. 【转】秩亏自由网平差

    秩亏自由网平差 在前面介绍的经典平差中,都是以已知的起算数据为基础,将控制网固定在已知数据上.如水准网必须至少已知网中某一点的高程,平面网至少要已知一点的坐标.一条边的边长和一条边的方位角.当网中没有 ...

  3. 三角网导线平差实例_网平差三角网三边导线网.doc

    网平差三角网三边导线网 五.三角网平差 图-1表示在高级点A.B下加密新点P1,P2的三角网,网中观测了12个方向值L1L2,...,L12.试平差此三角网,求:(1)待定点P1及P2的坐标平差值及其 ...

  4. lisp方格网法计算土方量_CAD土方软件方格网法与三角网法相结合,准确计算土方量...

    在场地平整土方测量中,方格网法和三角网法是用得最多的两种方法,它们各有优点,又各有缺点:用方格网法做的土方成果直观易懂,是绝大部分客户的首选方法,但传统的方格网法测量土方量,是在特定位置(方格点上)测 ...

  5. RFT属于软件测试管理工具,IBM Rational FunctionalTester RFT 软件功能测试工具_FunctionalTester_领测软件测试网...

    发表于:2016-11-17作者:石 芮, 王 莹, 和点击数:1614 本文基于 IBM Rational Functional Tester 实现了高效的自动化测试日志框架,对自动化测试开发人员具 ...

  6. Gamit10.6基线解算和网平差

    文章目录 一.解算说明与数据准备 二.数据处理与配置 1.解算工作目录创建 2.解算配置 三.数据解算 四.网平差 1.创建工作目录和参数配置 2.网平差解算 一.解算说明与数据准备 所用系统:Cen ...

  7. 计算机网络网速,科普 | 宽带的分类及网速计算

    原标题:科普 | 宽带的分类及网速计算 说到宽带,大部分朋友可能第一时间想到的就只有WIFI,不少人认为WIFI就是宽带,其实不是这样的.宽带的种类也分很多种,种类的不同网速也有所差别.今天小智就给大 ...

  8. 测试手机速度的软件叫什么,怎样用手机测wifi网速 手机测网速用什么软件

    毋庸置疑,手机上有许多功能是我们经常会忽视的.比如用手机测wifi网速就是它隐藏的一个功能,也是大家经常会忽视的.那么怎样用手机测wifi网速呢?有什么软件可以用呢?下面就让我们来一览究竟吧! 一.怎 ...

  9. 测速网宽带提速自动生效方案

    ⚠️ 注意 本文仅仅只是解决路由器/光猫重启后宽带提速失效的问题,并非测速网宽带提速的破解. 寻找提速接口 测速网提供了宽带提速的服务,但是在购买提速服务后如果重启了光猫或者路由器就可能出现提速失效的 ...

  10. 领测软件测试网42期(北京站)测试技术沙龙圆满成功

    2013年1月12日,元旦刚过,领测软件测试网(http://www.ltesting.net/),在微软亚洲研究院南楼(一号楼)举行了13年首场软件测试技术沙龙. 会议13:30举行,最早的软件测试 ...

最新文章

  1. Hadoop生态组件-HIVE学习
  2. 入侵无需密码? 雅虎数据泄露调查新进展
  3. Algorithm:C++语言实现之概率算法相关问题(计算机中的概率事件、C语言中的随机事件、产生二维随机数、圆内均匀取点)
  4. 回调函数到底是怎么一回事呢
  5. 为什么《梦幻西游》能这么长寿(二):拆解其交易系统的高深之处
  6. java程序启动命令_如何用java启动windows命令行程序
  7. Java中遍历删除ArrayList中多个元素
  8. 2017.10.29 染色方案 思考记录
  9. 【笔试/面试】—— linux(rpm)
  10. html鼠标悬停下划线消失,CSS3 2个实用的鼠标悬停文本下划线动画效果
  11. 常用iOS开发网站资源
  12. 华为云计算认证为什么这么火,网络工程师必看云计算怎么学
  13. 华为USG防火墙搭建IPsec***实战
  14. 赠人玫瑰,手有余香,今日份黑科技软件五款奉上
  15. dellr720服务器做系统,DellR720服务器操作系统的安装与重装
  16. Excel中DATEDIF函数的使用方法基础篇
  17. 第十五章 输入/输出
  18. Jsrpc学习——Cookie变化的网站破解教程
  19. java 对话框计算器,《Java程序设计》第16周礼拜四:GUI编程及文件对话框的使用 计算器...
  20. java switch case null_如何在switch中使用null

热门文章

  1. 苹果cms影视源码的安装和使用
  2. can通信中如何设置屏蔽验收码的总结
  3. android人脸建模软件,AI人工智能+面部照片3D建模,3D版捏脸美颜软件羽迹试试成功面世...
  4. 视频教程-三天掌握三菱FX系列PLC视频教程-单片机/工控
  5. jquery weui 图片浏览器Photo Browser 如何使用?
  6. windows上搭建NFS服务器--haneWIN
  7. Excel 空值填充
  8. 用WinRAR加密压缩文件
  9. linux虚拟机简单部署以及安装可视化界面
  10. 数字化建筑与数字化建造,数字化建筑设计与建造