Fork me on GitHub
监测点号去重

监测点号去重

测量工作中,如:竖向位移监测、水平位移监测、轴力监测等,在点号的保存过程中,经常会有重复或者不需要的点号,这就需要将其去除,再进行平差计算、保存。

下面是我自己写的一个函数,以水准监测为例,希望对大家有点帮助。

首先,已知水准监测点闭合环上的点号数组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;
}

循环运算,直到把需要删除的点号全部删除完

posted on 2013-07-27 10:12  HackerVirus  阅读(255)  评论(0编辑  收藏  举报