监测点号去重
测量工作中,如:竖向位移监测、水平位移监测、轴力监测等,在点号的保存过程中,经常会有重复或者不需要的点号,这就需要将其去除,再进行平差计算、保存。
下面是我自己写的一个函数,以水准监测为例,希望对大家有点帮助。
首先,已知水准监测点闭合环上的点号数组CString * spoint;
通过平差计算,知道各点高程,但点号数组中有转点,即“TP”开头的点号。
但不需要将其显示及保存
//删除转点TP***
void CCJCompute::Deletepoint(int sum)
{
int k=0;
for(int i=0;i<sum-k-1;i++)
{
//判断点号是否为转点
if(spoint[i].Left(2)==_T("TP"))
{
//将数组多有点号、变化量、累计变化量、变化速率等都往前移动一位
for(int j=i;j<sum-k-1;j++)
{
spoint[j]=spoint[j+1];
height[j]=height[j+1];
variation[j]=variation[j+1];
a_variation[j]=a_variation[j+1];
rate[j]=rate[j+1];
}
k++;
}
}
//判断改正后的数组中是否还有转点,进行循环运算
for(int i=0;i<sum-k-1;i++)
{
if(spoint[i].Left(2)==_T("TP"))
{
Deletepoint(sum-k);
}
}
return;
}
循环运算,直到把需要删除的点号全部删除完