您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 销售管理 > 济业2014-45纵横断面测量数据处理软件
纵横断面测量数据处理软件说明报告编制:陈礼坤审核:贾克永审定:赵振刚共20页中铁工程设计咨询集团有限公司济南设计院2015年01月济南纵横断面测量数据处理软件2.3介绍及使用说明21、软件开发背景在线路测量工作中,断面的测量是一项基本的工作内容,在进行外业数据采集时,一般采用全站仪和GPSRTK进行断面数据测量。在满足目前相关测量规范测量精度要求的前提下,如何提高外业断面数据采集的效率,降低内业数据处理的难度,同时便于进行数据质量的检核,是我们在实际工作中一直思考的问题。为此,根据现有的测量仪器、测量方法以及测量习惯,可以编制一种断面测量数据处理软件,以满足上述要求。在编制此软件之前,在2013年9月份在新建铁路吉林枢纽西环线补充定测工作中,在对GPSRTK采集的断面数据进行内业处理的过程中,其处理过程的复杂性,给我触动最深。由于测区属于丘陵地带,且现场玉米未收割,通视条件差,很多断面数据均是通过GPSRTK采集。但在内业数据的处理至少要经过三个EXCEL表格,通过断面排序、复制、粘贴、高差计算,再距离排序,再复制,粘贴等过程(可现场演示一个断面的处理过程),将只含12个数据的一个断面处理成平时提交给设计专业要求的断面数据格式,就需要两三分钟的时间,中间步骤越多,出错的概率就越大,当测量专业将最后的结果提交给相关设计专业后,设计专业还需要进一步处理,才能画出地面线图,这样处理多个断面的话,测量的内业处理的任务会更重。如果通过软件编制,实现将导出的仪器数据,结合中桩高程,直接绘制出地面线图,同时生成线路专业相关画图软件要求的距离-高差断面数据,就可以大大减少内业数据处理的复杂度,降低内业处理的时间,减少因步骤过多而出错的几率。同时地面线图的绘制,形成直观的数据表现纵横断面测量数据处理软件2.3介绍及使用说明3形式,也有利于数据质量的后期检核。对于用全站仪测量的断面数据,同样可以直接将全站仪导出的断面绘制成地面线图,这样,在我们在外业上,可以将断面数据直接记录在全站仪中,从而减少一个外业记录人员,减少了出错的概率,也不需要处理内业时,再进行断面的人工输入。至于软件的其他功能下面会有详细的介绍。2、软件功能2.1可以将全站仪(如LEICA、TOPCON等)采集的断面测量数据,转换成距离-高差断面数据格式,并可以形成*.dxf格式的图形数据文件和线路设计软件路基助手以及南方CASS支持的.hdm断面数据文件。2.2能够将通过GPSRTK采集的断面测量数据,转换成距离-高差断面数据格式,同时结合中桩数据,生成*.dxf格式的横地面线图和线路设计软件路基助手以及南方CASS支持的.hdm文件。2.3能够直接将已编辑好的横断面数据,结合中桩数据,直接生成*.dxf格式的断面图形文件和.hdm文件。2.4能够根据导入的纵断面测量数据,绘制出*.dxf格式的纵向地面线图。3、软件特色3.1本软件采用易于交互操作的对话框模板和MSFlexGrid控件,在MFC开发环境下利用VC6.0计算机语言进行编写,可在winxp、win7操作系统下正常运行。整个软件的文件数据导入、导出均可直接在图表中呈现,便于数据的检查,如果数据格式错误,程纵横断面测量数据处理软件2.3介绍及使用说明4序将给出友好提示,同时将各种算法的程序实现隐藏在软件界面之下,使软件界面简洁直观,功能清晰、易学易用。3.2在充分考虑了实际作业习惯以及仪器记录数据的特点后,对于同一个断面的距离乱序排列或者左右侧混排的断面数据,软件能自动识别左右侧断面数据,并分别将数据按照由近到远的顺序重新排列。如果数据中还含有距离重复的数据,通过单独编写排序算法,按照先测先排列的原则进行断面数据排列处理。同时允许只有一侧断面数据的输入。允许断面名称列和距离列数据中含有字母,软件通过算法进行自动截取,只保留数字例如下面的GPS测量数据,一般实测的GPS断面数据就是这样的:点名坐标距离高程c112713.50506078.24512.49lb213.494c112713.10506097.604-24.69kx206.926c112713.11506097.641-25.88207.212c112713.12506098.325-27.75207.714c112713.31506039.69226.89206.155c112713.13506099.563-30.09207.682c112713.13506099.563-30.09207.382c112713.14506099.777-30.66207.381c112713.32506039.76450.23206.462c112713.33506145.732100.23206.487c112713.60506077.91813.11ks213.283c112713.15506099.766-50.26207.172纵横断面测量数据处理软件2.3介绍及使用说明5c112713.80506091.736-12.02lb213.534c112713.90506092.046-12.35ks213.374112750.10506047.76412.68lb213.353112750.16506068.98-23.56kx207.389112750.17506069.327-26.22207.811112750.18506070.319-29.01207.76112750.19506070.519-29.62207.311112750.20506070.525-50.13207.09112750.20506047.07213.24ks213.241112750.29506039.73327.31kx206.152112750.30506039.7350.23206.149112750.70506061.582-12.38213.04可以自动识别左右侧断面数据,并分别根据左右侧的数据,自动对距离、高程进行由近及远的排序,同时可以不受第三列距离数据中字符的影响。3.3对于根据传统方式记录的数据,也就是软件导入既有断面数据的时候,可以不需指定左右侧数据,程序可以依据数据格式就自动判别断面数据是位于线路的左侧还是右侧,同时进行里程数据自动排序,以方便进行横断面的绘制。3.4在读入中桩高程数据之前,可以通过编辑框进行中桩高程数据的修正,如果实际需要降低中桩高程,填入负值,如果需要增高中桩高程,则填入正值,然后保存修改后的中桩高程数据。3.5通过引进CadIO动态链接库,在程序中实现CAD部分画图功能,纵横断面测量数据处理软件2.3介绍及使用说明6在导出的*.dxf格式的横断面图形文件时,按照Y坐标不变,每个断面之间间隔20m的顺序从左至右横向排列。3.6进行纵地面线图的绘制时,方格网坐标范围的大小可以根据里程和高程的实际数据范围进行自动调整。同时分别画出纵、横坐标以及坐标刻度。4、软件界面其中左侧是软件功能实现按钮以及项目信息区,右侧是显示测量数据导入、计算结果的显示,需要保存的数据的显示,所见即所得。5、软件开发过程5.5算法设计首先确定软件实现的目标,需要实现一个项目信息的输入,六种格式数据的导入,两种格式数据的导出,一个横断面数据的计算以及每次导入和导出的视图展现等功能。为了在视类展示和编辑数据,采纵横断面测量数据处理软件2.3介绍及使用说明7读入GPS横断面测量数据(天宝、中海达等GPS)读入全站仪横断面测量数据(徕卡、拓普康等全站仪)计算不含中桩横断面数据并显示是否读入中桩高程数据计算含中桩横断面数据并显示保存不含中桩数据的横断面数据保存含中桩的横断面数据否是生成DXF格式断面线图读入既有的中桩高程数据读入既有的横断面数据保存(.hdm)格式数据读入既有的纵断面数据用CEditMSFlexGrid控件,并对其进行二次开发。在ClassView中新增加FreadCouSave类,实现数据的导入,此类将实现允许导入的数据含空格,逗号,将其忽略,从而不影响数据结构,通过相关函数的编制实现不同的功能。具体程序算法框图见下表。5.6关键算法纵横断面测量数据处理软件2.3介绍及使用说明8如何根据不同的断面测量数据,计算出同样格式的横断面数据是软件的核心,面对多个断面数据,如何进行横断面个数的统计和分类;对一个断面的距离乱序排列同时左右侧混排的数据如何进行排序,也是需要考虑的问题。为此编写了相关函数以解决问题。5.7编程实现5.71:新增类FreadCouSave:主要用来导入和导出数据,对于导入的数据格式,对无论是以“,”隔开的数据,还是以制表符、任意空格隔开的数据,均能正确读入,增加了数据编辑方便性和容错能力。在这个类中,主要的函数是FRDuanMData(),其实现代码如下:CStdioFileFile(SFileName4,CFile::modeRead);CStringstrLin,strLinPD,str;//定义字符串变量CStringkongge();Result4.SetSize(10400,-1);intk=0;for(k=0;k10400;k++){Result4.SetAtGrow(k,kongge);}char*d=,\t;//注意指针操作//,*表示“空格”、“,”、“制表符”这三种符号都可以略去。char*p;inti=1,j=0,i2=0,j2=0,i3=0;m_Djsq=0;for(i3=0;i3240;i3++)纵横断面测量数据处理软件2.3介绍及使用说明9{m_jsq[240]=-1;}for(j=0;j240;j++)//循环读取每一行字符,此处最大设置240行{File.ReadString(strLin);charstr2[256]=;strncpy(str2,(LPCTSTR)strLin,sizeof(str2));//计算str2的长度p=strtok(str2,d);str=p;Result4.SetAtGrow(i-1,str);//i-1取值,巧妙的取SetAtGrow(0,str)i2=0;//统计每一个行的数据个数while(p)//p指针本身就可以当判断条件{str=p;Result4.SetAtGrow(i,str);i++;i2=i2+1;}if(i2!=0){m_jsq[j2]=i2;//将每一行的数据个数i2存放在数组m_jsq[j2]中纵横断面测量数据处理软件2.3介绍及使用说明10j2=j2+1;//j2表示行数}}m_Djsq=j2;//断面行数for(j2=0;j2m_Djsq;j2++){CStringstr;str.Format(%d,m_jsq[j2]);Result3.SetAtGrow(j2,str);}//将数字数组转换成字符串数组Result3CStringkongge2();//给kongge2赋值for(intm=0;m10400;m++){if(Result4.GetAt(m)!=kongge2)//数组值可以比较的//m不能错误!nn4=m;elsem=20000;}5.72:在CgridtestDlg类中增加OnCalLC()函数,主要是为了处理多个断面数据,对每一个断面进行统计和分类;对一个断面的距离乱序排列同时左右侧混排的数据进行排序。主要代码示例如下:voidCGridtestDlg::OnCalLC()//计算仪器导出的断面数据并显示纵横断面测量数据处理软件2.3介绍及使用说明11{if(m_Pand==0)//判断是否导入了全站仪断面数据{CStringstrArray,strArray1,strArray2,strArray3,strArray4;inti=0,j=0,k=1;//i是行数intlcjs[161]={0};//统计断面的个数for(i=0;im_nn2/4-1;i++){strArray1=Res.GetAt(i*4+0);//获取第一行第一个数据strArray1.MakeReverse();//转换字符串顺序strA
本文标题:济业2014-45纵横断面测量数据处理软件
链接地址:https://www.777doc.com/doc-2230401 .html