工程测量 课程设计 控制网优化设计.doc_第1页
工程测量 课程设计 控制网优化设计.doc_第2页
工程测量 课程设计 控制网优化设计.doc_第3页
工程测量 课程设计 控制网优化设计.doc_第4页
工程测量 课程设计 控制网优化设计.doc_第5页
已阅读5页,还剩72页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

控制网优化设计专业名称:测绘工程09-1班指导教师:吴兆福作者:王震阳 20094176工程控制网优化设计 科傻软件的使用分析2020年1月17日77一、 可傻软件介绍3二、 兼容的数据格式4三、 主要功能6四、 软件使用过程8五、 使用心得191、 可傻软件介绍 科傻系统(COSA)是“地面测量工程控制与施工测量内外业一体化和数据处理自动化系统”的简称,包括COSAWIN和COSA-HC两个子系统。COSAWIN在IBM兼容机上运行。COSAWIN系统除具有概算、平差、精度评定及成果输出等功能外,还提供了许多实用的功能,如网图显绘、粗差剔除、方差分量估计、贯通误差影响值计算及闭合差计算等。该系统不同于其它现有控制网平差系统的最大特点是自动化程度高,通用性强,处理速度快,解算容量大。其自动化表现在通过和COSA子系统COSA-HC相配合,可以做到由外业数据采集、检查到内业概算、平差和成果报表输出的自动化数据处理流程;其通用性表现在对控制网的网形、等级和网点编号没有任何限制,可以处理任意结构的水准网和平面网,无须给出冗余的附加信息;其解算速度快,解算容量大表现在采用稀疏矩阵压缩存储、网点优化排序和虚拟内存等技术,在主频166MHZ的586微机上,解算500个点的平面和水准控制网不到1分钟;在具有20MB剩余硬盘空间的微机上,可以解算多达5000个点的平面控制网。图1(程序主界面)图1(科傻软件主界面)2、 兼容的数据格式 科傻文件为标准的ASC码文件,可以使用任何文本文件编辑器打开,平常我们将打开方式设置为以“文本文档的形式打开”即可。对于不同的功能对应不同格式的文件,下面将主要的文件格式进行详细说明。1. 控制网观测文件,取名规则为“网名.in1”和“网名.in2”,分别是高程观测文件和平面观测文件的命名格式,其实的“英文字母代表in”输入的意思。图2(高程观测文件格式及内容)图3(平面观测文件格式及内容) 上图中文件的第一部分(示例图2中为前两行)为:已知点点名,高程。第二部分(示例图2中从第三行开始)为:测段起点点名,测段终点点名,高差,距离(单位KM),测站数,精度号。第一部分每一个已知点占一行末尾没有任何符号,第二部分每一测段信息占一行,末尾没有任何符号。“”里的内容为选择项,根据需要可写可不写。 上图中第一部分为控制网的已知数据,包括先验的方向观测精度,先验测边精度和已知点坐标。第二部分为控制网的观测数据,包括方向、边长、方位角观测值。为了文件的简洁和统一,我们将已知边和已知方位角也放到测站观测数据中,它们和相应的观测边和观测方位角有相同的“观测值类型”,但其精度值赋“0”,即权为无穷大。第一部分的排列顺序为:第一行为方向中误差,测边固定误差,测边比例误差。若为纯测角网,则测边固定误差和比例误差不起作用;若为纯测边网,方向误差也不起作用,这时可输一个默认值“1”。程序始终将第一行的方向中误差值作为单位权中误差。若只有一种(或称为一组)测角、测边精度,则可不输入精度号。这时,从第二行开始为已知点点号及其坐标值,每一个已知点数据占一行。若有几种测角测边精度,则需按精度分组,组数为测角、测边中最多的精度种类数,每一组占一行,精度号输1、2、.(参见表2-2)。如两种测角精度,三种测边精度,则应分成三组。第二部分的排列顺序为:第一行为测站点点号,从第二行开始为照准点点号,观测值类型,观测值和观测值精度。每一个有观测值的测站在文件中只能出现一次。没有设站的已知点(如附和导线的定向点)和未知点(如前方交会点)在第二部分不必也不能给出任何虚拟测站信息。观测值分三种,分别用一个字符(大小写均可)表示:L表示方向,以度分秒为单位。S表示边长,以米为单位。A表示方位角,以度分秒为单位。观测值精度与第一部分中的精度号相对应,若只有一组观测精度,则可省略;否则在观测值精度一栏中须输入与该观测值对应的精度号(参见表2-2)。已知边长和已知方位角的精度值一定要输“0”。在同测站上的方向和边长观测值按顺时针顺序排列,边角同测时,边长观测值最好紧放在方向观测值的后面。如果边长是单向观测,则只需在一个测站上给出其边长观测值。若是对向观测的边,则按实际观测情况在每一测站上输入相应的边长观测值,程序将自动对往返边长取平均值并作限差检验和超限提示;如果用户已将对向边长取平均值,则可对往返边长均输入其均值,或第一个边长(如往测)输均值,第二个边长输一个负数如“-1”。对向观测边的精度高于单向观测边的精度,但不增加观测值个数。2. 对高程控制网的平差结果文件,和对平面控制网的平差结果文件,命名规则分别为,“网名.OU1”(如图4)和“网名.OU2”(如果5),其中的OU为“out”的意思,意为输出的文件。图4(高程网平差后输出的内容)上图为高程观测文件.in1平差之后的输出结果。最左列为序号,第二列为点名,第三列为平差后的高程值。图5(平面网平差后的输出结果) 上图为平面观测文件.in2平差后的输出结果最左边为观测点点名,第二列为X坐标,最右列为Y坐标。3. 程序生成的概算文件,命名规则为“网名.XYH”(如图6)。图6(概算文件的生成) 上图为用符合导线观测文件生成的概算文件,当平面观测文件中的方向、边长观测值需要概算时,调用此功能可自动生成概算用文件中的近似坐标部分,若有该网的高差观测值文件,则同时生成近似高程。自动生成概算所需要文件“网名.XYH”后,还须人工编辑该文件,如添加每个网点的近似高程,对于精度要求较高的平面网,还要输入每个测站上的觇标高、大地水准面差距以及垂线偏差的子午分量和卯酉分量等附加量,以便对观测值作三差改正。对于一般网,可不考虑三差改正,不必输后四项,即上述附加量均自动作“0”处理。4. 计算闭合差线路文件“网名.CLI”,该文件的格式(如图7)为CLI文件的结构如下:1,DXF3D4P1P2P3F2F12,DX.图7(某符合导线的闭合差线路文件格式及内容)根据闭合差线路文件,自动计算出导线和多边形的角度闭合差、坐标闭合差和全长闭合差,并进一步根据多边形角度闭合差计算方向观测值精度,对闭合差进行评价和超限提示。计算结果存放于闭合差结果文件“网名.CLO”中见图8。图8(某符合导线的闭合差结果文件)5.高程闭合差线路文件“网名.GCI”,该文件是用于存储闭合环线路(见图9)。图9(高程闭合差线路文件)高程闭合差结果文件“网名.GCO”(见图10)。图10(高程闭合差结果文件)6. 贯通误差引导文件“网名.GTI”。该文件主要为隧道施工控制网而设计的,其实质是根据控制网的洞口点和定向点精度、贯通点的位置以及贯通面的方向,在完成网平差之后,直接估算隧道贯通误差影响值。与其对应的输出文件为“网名.GTO”。7. “网名.MAP”,该文件(如图11)用于支持控制网的图形显示。图11(某测土导线网的图形)8. 如观测网中含有粗差,则会生成“网名.OUC”的文件(如图12)。图12(剔除出差时生成的文件)9. 高程控制网和平面控制网观测方案文件分别为:“网名.OB1”,“网名.OB2”。图123、 导入观测数据该程序支持导入两种类型的观测文件,原始观测数据文件和处理过的历史观测数据文件。导入原始观测数据文件夹有三种方法,1.在快捷菜单中选择“导入观测数据-导入原始数据文件夹”2.在“开始-功能-导入观测文件”3.快捷键“Ctrl+O”(字母O)。在选择了观测文件夹后,会弹出一个确认对话框(见图4)显示程序找到的当前文件夹中所有文件。图4(导入观测文件)如果确定需要的观测文件都在上图中的列表框中,则点击确定,如果出现图5情况,则说明,导入失败。失败原因见图5。图5(导入数据失败警告)如果导入数据成功则没有任何提示,这是点击快捷菜单中的“刷新”,则会有图形显示出来。如果想对以往数据进行研究而又没有以往原始观测数据文件夹,那么此时程序提供了导入历史数据文件夹的功能,因为当一个项目的原始观测数据文件夹导入程序后,程序在指定目录下建立了该数据文件夹,文件夹以日期为单位进行存储(见图6、7)。导入该数据文件夹后即可对历史项目进行重新研究等工作。图6(历史数据文件夹)图7(导入历史数据文件夹)4、 绘制沉降分析图该系统可绘制三类图形,1.各个单独观测点位的历史沉降走势图(见图6)。该图以观测时间为横轴,以点位高程为纵轴。根据相邻两次观测高程的高差除以这两次观测时间间隔就可以得到该点位在本段时间内的沉降速度,如果该沉降值大于预先设置的阈值(该阈值用户可以在开始-设置警戒值里面进行设置,如果不设置系统默认为10mm/年),则该段曲线以用户设置的线条颜色(该线条颜色用户可以在开始-设置线条颜色里设置,如果不设置系统默认为红色)突出显示,如果该沉降速度没有超出用户设置的阈值,则以用户设置的颜色(用户可以在开始-设置线条颜色里设置该类线条颜色,如果不设置系统默认为蓝色)显示。该图形曲线上面的一行数字为观测时间的月份,曲线下面的一行数字为观测月份的第几天。如果当前观测值算的沉降速度超过阈值则日期以红色显示,如果没有超过阈值则以蓝色显示。在图形的最左边显示的是该点历史沉降走势图的属性信息,包括观测起始、结束日期,观测时间跨度,观测期数,累计高差,当前阈值,平均沉降速度等。图8(单独点位历史沉降走势图)上图是某沉降观测项目中H1观测点位的历史走势图。在客户区的左侧信息栏可以看出,该点位于2010年1月7号开始观测,最后一此观测日期为2010年7月31号,一共观测了12期,持续了204天。当前阈值(下面会有关于阈值的详细介绍)设定为10mm/年,红色线段表示沉降速度超过阈值。同时在打开此图的时候,系统会发出声音,也代表着有超过阈值现象的产生。该点位的平均沉降速度为12.70mm/年。上图是该项目中H17号点位的历史沉降图。该图的沉降速度为8.06mm/年。目前已经观测13期,共231天。该图是该项目中H26号观测点位,沉降速度为22.98mm/年。一共观测9期,共166天。该图是该项目中的H3观测点位,沉降速度比较均匀,共观测了14期,231天。平均沉降速度为18.01mm/年。2. 某一观测时间观测到的所有点位的沉降量图(见图7)。 系统根据单期观测数据绘制了以观测点位为横轴,以每个观测点位的沉降值为纵轴的某一观测时刻所有点位沉降图,简称整体变形图。该图的绘制原理为,如果第一期观测了10个点位H1-H10,第二期也观测了10期,但是观测的点位和上次观测的点位不是完全一样,观测的点位为H2-H11,那么第二期和上一期相比有9个点位H2-H10是相同的,那么根据这9个同名点的两次高程数据可以计算出从第一次观测时间到第二次观测时间的一组沉降值,这组沉值,以改组点号为横轴,以改组沉降值为纵轴则可以绘出该时间的整体沉降图,将改组沉降值再除以时间间隔就能得到一组沉降速度,如果沉降速度超过设定的阈值,则将该沉降线段以红色的警戒色显示,同时系统会发出声音提示。一次类推可以绘出从第二期开始的所有整体沉降图。图9(某一观测时间观测到的所有点的沉降量图)该图是该项目在2010年5月7号的整体沉降图,该期观测的点位和上次(2010年3月25号)观测的点位有16个是同名点。因此可以绘制出16个点位的沉降图。图中红色线段和红色点位代表红色标记出来的点位沉降值大于用于设定的阈值2mm(指本次观测时间和上次观测时间相比沉降值如果大于2mm则警示用户)。图中的左侧为信息栏,主要有观测日期、是否发现可以点位(以及可疑点位的点名)、当前阈值、最大沉降值、最小沉降值、平均沉降值、最大沉降差等。在图中的最下侧从左到右分别是点位具体沉降值。最上侧从左到右分别是点位的点名,上下对应。图10(20100125各点位沉降量图表)该图的显示的观测时间为2010年1月25号,从图中可以看出所有线条都为蓝色(线条颜色可以自定义,默认为蓝色),说明该期观测的数据中和上期是同名点的15个点位观测值相比沉降值都没有超过用户设定的阈值。在客户区的左下侧为为该图提供数据支持的数据源保存的目录,如想打开该数据源可以根据左下侧显示的文件路径打开,或者先点击快捷菜单的打开数据报告或者使用快捷键Ctr+Y打开数据源,然后打开对应文件夹即可。但是由于该系统生成的所有非excel文件均使用了.atj为后缀名,打开前需将打开方式设置为文本文档格式。图11(20100507各点位沉降量表图)该图是该项目在2010年5月7号的整体沉降图,该期观测的点位和上次(2010年3月25号)观测的点位有16个是同名点。图12(20100525各点位沉降量表图)该图是该项目在2010年5月25号的整体沉降图,该期观测的点位和上次(2010年5月7号)观测的点位有15个是同名点。图13(2010各点位沉降量图)上图是该项目在2010年6月11号的整体沉降图,该期观测的点位和上次(2010年5月25号)观测的点位有17个是同名点。该图显示改期观测数据应该是有问题的。图中的H10点和H11点沉降值分别达到了+39.70mm和-90.10mm。最大沉降差达到了129.80mm。在不到一个月的时间内沉降值这么大肯定是有问题的。要么是本期观测数据有问题,要么是该建筑物的该两个点位确实在不同方向(一个向上,一个向下)上发生了较大的沉降。因此分析出这种原因后应该对加密观测次数,尤其是H10和H11点位要重点观测,找出问题的原因。3. 高阶拟合图该系统利用高阶函数法对单点历史走势图(历史走势图)进行了拟合,拟合的主要目的是对点位沉降走势的预测分析。以时间为横轴以纵轴为高程将原有观测数据构成一个n-1(假设观测n期)阶的方程。然后绘制出曲线,再将时间作为未知数,输入任意时间即可反求出高程。在第十一章会详细介绍该程序拟合的详细方法。图14(H23高阶拟合图)上图是该项目中H23号点位的高阶拟合图。图中红色曲线是H23观测点位未拟合前的走势图,蓝色图线为该点位拟合后的走势图,绿色则为该点位预测走势图。由于预测图线变化范围会远远大于非拟合图像,为了方便对曲线进行对比观察,因此该图是动态的,鼠标中间滑轮向上滚动图形缩小,向下滚动图像放大,鼠标右击则弹出设置缩放倍率对话框,系统默认为1.在这里可以输入非0以上的任意缩放倍率。若要查询任意时间点的高程,只需将鼠标移动到该曲线的上面左击即可显示该点代表的时间和高程。图中有两条水平的绿色线条切线,这两天切线切与高阶拟合曲线,最高和最低水平切线分别代表拟合曲线的最大高程和最小高程值。由于拟合后的曲线质量取决于观测成果质量的高低和观测目标所处沉降的阶段。因此在放缩倍率为默认的1的情况下这两条绿色的切线不一定都能在客户区显示,为了能够看见这是可以滚动鼠标中间滑轮或者直接右击鼠标在弹出的设置缩放对话框中输入缩放倍率。在这两天切线的最左端是用红色字体表示的高程值。图15(鼠标右击可以设置缩放倍率)图16(在高阶拟合图中任何位置鼠标左击即可获取该点时间和高程)图17(H26高阶拟合图)5、 设置线条颜色 为了突出个性化的特点,本系统提供了设置线条颜色的功能。上图(图18)展示的是设置线条颜色的方法。用户可以设置自己喜欢的线条颜色。6、 设置阈值在开始-设置警戒值里可以打开此功能。首先介绍什么是阈值。阈值在这里表示两个量,点位的沉降值和沉降速度,如果程序在处理数据的过程中检测到要监测的数据值超过该值则会以一定的方式提醒用户。如果某次观测过程中发现某点位的沉降量超过该阈值(系统默认为2mm),则系统会提示用户。如果某一段时间内某观测点位的沉降速度超过该阈值(系统默认为10mm/年),则系统会以某种方式提醒用户。图19(设定阈值)7、 生成数据报告系统生成的报告分为6个文件夹存储,分别为,成果报告,点号汇总,点名和高程,点位历史高程,临时路径,同名点高差。图20(数据源内的所有文件夹)在成果报告文件夹了存放着生成的两个excel文件和一个高阶拟合参数文件(见图25)。但是需要注意的是,该文件夹的产生是随着导入观测数据的进行而建立的,但是里面的excel成果报告的存在是需要用户自己手动操作。在点号汇总文件夹里,存放了一个点号.atj的文件,文件中存放了,一个项目中所有的观测点位。该文件的产生是伴随着导入观测文件夹的进行而进行自动生成的,不需要人工干预。点名和高程文件夹的产生是随着观测数据的导入而建立,该文件夹里存放了所有观测期数的观测文件,基本上算是对原始观测文件的备份,如果原始数据文件丢失但是曾经在程序里运行过,那么该文件可以作为原始数据文件使用。图21(点名和高程文件夹内容)临时路径文件文件夹里面存放了一个名为Path,atj的文件。该文件指向原始数据的存储位置(见图22),实质是存储的原始数据的全路径。该文件的建立是在导入观测数据后完成的。图22(临时路径文件夹里Path.atj文件内容)同名点高差文件夹中存放了以观测日期为名字的多个文件(见图23),文件个数为一个项目的观测期数。但由于第一期观测数据不可能有高差,因此第一期观测数据内容为空的,之所以把第一个空文件放在这里,是因为虽然该文件为空的里面不能给程序提供数据,但是程序可以在该文件的文件名中获取第一次观测时间信息,因此用户千万不可将此空文件删除,否则会造成系统将第一次观测时间识别为第二次观测时间,总的观测次数减少一次,观测时间跨度也不准确。该文件夹为程序绘制整体沉降图提供了数据源,是程序的核心数据文件。每个同名点高差文件中的数据格式及内容见图24。图23(同名点高差文件夹里内容)图24(同名点高差文件夹下文件中的数据格式及内容) 点位历史高程文件夹里面(见图25)存放了所有观测点位的历史高程信息。该文件夹随着导入观测数据的进行而产生,为程序绘制点位历史走势图提供数据源,是支持系统绘制图形的核心文件夹。该文件夹内的所有文件都有点名命名。每个文件中的数据格式及内容见图26.图25(点位历史高程文件夹内容)图26(点位历史高程内文件的数据格式及内容)8、 生成Excel报表 在快捷菜单项“导出excel报告”里可以选择生成两种excel报告(见图27)。程序设计的最初生成excel报告是由主程序独立处理,该程序对excel的操作是通过ODBC(开放数据库借口)实现的,因此速度非常慢,处理一个项目大概15期的数据需要6、7分钟。如果两个excel都一个一个由主程序处理则耗时将达到14分钟,并且在处理的时候无法进行其他操作,会出现假死的情况。为了解决这个问题,作者又写了两个副程序,SOS_1。exe和SOS_2.exe,这两个程序和主程序SOS.exe放在同一个目录下即可。当需要生成excel报表时,主程序调用这两个副程序,两个副程序分别处理沉降数据报表和历史高程报表。这样完成一个项目的两个excel报表总共花费时间只有6、7分钟,时间节约了一半,同时还不影响主程序进行其他操作。在完成以后附程序会自动消失。图27(成果报告文件夹内容)上图是成果报告文件夹里的内容,其中有个高阶拟合参数.atj的文件存储的是各个点位高阶拟合的系数,就是每一个点位都可以用一个高阶方程式表示,这个高阶方程的系数在这里叫做高阶拟合参数。根据这些参数可以构建一个方程,然后反求出任意时刻的点位高程,这也就是高程预测的原理。图28(沉降数据报告内容) 上图是生成的沉降数据报表,该项目一共观测了14期则一共有14个子表,每个表都是有观测日期命名的。每个表表头从左到右分别是:点位、沉降值、观测时间、观测点位序号、最大沉降值、最小沉降值、平均沉降值、当前阈值、是否可疑、最大沉降差、偏离值。偏离值在这里是指某一个观测点位的沉降值和该期所有观测点位平均沉降值的差值,该值反映了建筑物沉降的均衡程度。每一个子表都有一个整体沉降图与之对应,系统提供了截屏的功能,用户需要将对应的沉降图截屏然后粘贴于提示位置即可。是否可疑是指某观测点位的沉降值是否超过用户设定的阈值,如果超过则该点位可以点,否则不可疑。图29(历史高程报告内容)上图为历史高程报告,一个项目中有多少个观测点位就有多少个子表,子表的名字为观测点位名。每个子表的表头从左到右分别为:日期、高程、沉降量、累计沉降量、当前沉降速度、平均速度、累计时间、是否可疑。该表其实反映的是任意观测点位的历史走势情况,可以用于观测数据的后处理和研究,同时通过此类的数据分析也可以对某一观测项目成果质量进行分析。9、 保存与打开系统提供了保存于打开保存的项目的功能,在“开始-保存”即可使用此功能,该保存功能保存的是一个.sos的文件,默认文件名为MySos.sos,其实质为保存了当前项目的所在路径。该文件可以用txt打开。当需要打开已经保存的文件时,想启动SOS程序,然后再选择“开始-打开”,在弹出的对话框中找到保存的文件即可。图31(项目的保存)10、 关注、留言 计算机在网络连通的状态下,选择开始-关注/留言选项可以打开作者主页,在这里可以留下您的宝贵意见和有关程序方面的问题。如果发现bug,也请您及时反映到该主页,以帮助作者对程序的进一步完善。/931964335/infocenter11、 附录:部分功能实现的代码上图为该系统用到的所有类1. 导入原始观测数据文件夹CString strdire;/定义路径名的公用部分void CSOSView:OnOpenFiles() /打开文件处理数据。该函数为此系统的核心部分 for(int i=0;i50;i+)HNumi=0;/将每个点的观测期数初始化为0次;i=0;/定义观测文件的个数/选择观测数据文件夹CString strFilePath = _T();/用来保存文件路径BROWSEINFO bi;char Buffer512;/初始化入口参数bi开始bi.hwndOwner = NULL;bi.pidlRoot = NULL;bi.pszDisplayName = Buffer;/此参数如为NULL则不能显示对话框bi.lpszTitle = 选择路径沉降数据所在文件夹;bi.ulFlags = BIF_RETURNONLYFSDIRS;bi.lpfn = NULL;bi.iImage = 0;/初始化入口参数bi结束LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);/调用显示选择对话框if(pIDList)/选择到路径(即:点了确定按钮)SHGetPathFromIDList(pIDList, Buffer);/取得文件夹路径到Buffer里strFilePath = Buffer;/将路径保存在一个CString对象里else/取消选择 return;/CFileFind ff; CString strname;/MessageBox输出路径。BOOL bFound; bFound = ff.FindFile(strFilePath + *.* );/找第一个文件 FileList fl;while(bFound)/如果找到,继续 bFound = ff.FindNextFile(); CString sFilePath = ff.GetFilePath(); if (i100&sFilePath.Right(4)=.txt)/最大只支持100个观测文件,只支持txt文件 if (atoi(sFilePath.Right(12)20000101)/过滤文件,使文件名介于2000-2050,也就是该程序用到2050年该升级strNamei+=sFilePath;Httimei-1=sFilePath.Right(12).Left(8);/获取观测时间,默认排序为文价排序,但是文件排序遵循时间排序,因此排序为时间排序CPublic:m_Httimei-1=Httimei-1; fl.OnButton1(sFilePath);/值的传递 if (i=0)MessageBox(没有找到数据文件!);return;ff.Close(); Invalidate();fl.DoModal();/打开对话框显示文件/创建文件夹CreateDirectory(C:WINDOWSSOS,NULL);CTime mytime=CTime:GetCurrentTime();CString strtime;strtime.Format(%d-%d-%d,mytime.GetYear(),mytime.GetMonth(),mytime.GetDay();strdire=C:WINDOWSSOS安淘今测绘+strtime;/今天的数据则创建一个今天的文件夹CreateDirectory(strdire,NULL); CreateDirectory(strdire+点号汇总,NULL); CreateDirectory(strdire+临时路径,NULL); CreateDirectory(strdire+点位历史高程,NULL); CreateDirectory(strdire+同名点高差,NULL); CreateDirectory(strdire+点名和高程,NULL); CreateDirectory(strdire+成果报告,NULL);/创建文件夹结束/将文件路径保存在创建的文件夹中CStdioFile file;if(!file.Open(strdire+临时路径Path.atj,CFile:modeWrite|CFile:modeCreate|CFile:typeText)MessageBox( 保存路径失败!,SOS);return;file.SeekToEnd();tryCString tempstring;for (int kkk=0;kkk933);return; /创建完毕CStringArray array_name;/临时存储所有点名(含重名点)bool b_name=false;/用于判断是否重名点for (int FileNum=0;FileNum934);return; CString temp_name; while(file.ReadString(temp_name)/对于某一个文件中的文件获取数据行数 if (temp_name.Left(2)!=测) temp_name.Left(3).TrimLeft(); temp_name.Left(3).TrimRight(); array_name.Add(temp_name.Left(3); file.Close();int i_Size=array_name.GetSize();for (int ti=0;titi;ai-) CString first=array_name.ElementAt(ti); first.TrimLeft(); first.TrimRight(); CString second=array_name.ElementAt(ai); second.TrimRight(); second.TrimLeft();if (0=first.CompareNoCase(second) array_name.RemoveAt(ai);for (int ri=0;ri1002);int point_num;/定义点位总个数point_num=0;/初始化为0个/CString temp_of_point_num;/临时字符串,用于处理点位个数while(file_all_name.ReadString(Hnamepoint_num) point_num+;file_all_name.Close();/依次读取文件for (int k=0;ki;k+)if(!file.Open(strNamek,CFile:modeRead|CFile:typeText)MessageBox(打开文件失败);iopenfile=0;return;elseiopenfile=1;/CString temp;while(file.ReadString(temp)CPublic:fileNumk+;/判断当前打开的文件中数据的个数file.SeekToBegin();for (int ii=0;iiCPublic:fileNumk;ii+)file.ReadString(Htempdatakii);/获取数据,第K+1个文件夹中的ii+1行数据CString si;/用于获取点名si=Htempdatakii.Left(3);si.TrimRight();if (si.Left(2)!=测&si.Left(1)!=H)MessageBox(出现此情况有以下两种情况:n1.格式不被兼容,请先将格式转换为所支持格式。n2.您重复导入观测数据n帮助:931964335,SOS警告:,MB_ICONSTOP);file.Close();return;file.Close();/结束i的for循环/建立单独点历史观测数据CStdioFile file2;/用于创建点位历史沉降数据for (int iname=0;iname失败的点号为:+Hnameiname);return;file2.Close();for (int ig=0;igi;ig+)/循环观测文件个数,第ig+1个观测文件for (int ig2=0;ig2CPublic:fileNumig;ig2+)/循环每个观测文件中数据行数,第ig2+1行数据for (int ig3=0;ig3point_num;ig3+)/循环点名个数,第ig3个点名,点名循序是以点名文件中的循序来定义 CString str=Htempdataigig2.Left(3); str.TrimRight();if (Hnameig3=str) file2.Open(strdire+点位历史高程+Hnameig3+.atj,CFile:modeWrite|CFile:typeText); file2.SeekToEnd(); file2.WriteString(Httimeig+ +Htempdataigig2.Mid(3,18)+n); file2.Close();/创建以时间为文件名的文档,每个文档中存放同名点在该时刻与上一时刻的高差CStdioFile file3;/用于处理同名点高差,该数据作为同一时刻整体沉降图的数据源CStdioFile file4;/用于创建点名和高程文件, 并写入,从原始文件中写入,相当于copyCStdioFile file5;/用于打开原始观测文件for (int kg=0;kg1276,SOS);return;while(file5.ReadString(tempstr)if (tempstr.Left(2)!=测)file4.WriteString(tempstr.Left(3)+ +tempstr.Mid(3,18)+n);if(!file3.Open(strdire+同名点高差+strNamekg.Right(12).Left(8)+.atj,CFile:modeCreate|CFile:typeText)MessageBox((以日期为文件名)创建高差文件.atj失败!,SOS);/创建高差文件return;file3.Close();file4.Close();file5.Close();CStdioFile file6;/用于管理点名和高差,存在在临时内存中,该管理为file7服务。CString tempname5050;/临时存储点名/行存储顺序,列存储点名数据CString tempdata5050;/临时存储高程数据/行存储顺序,列存储高程数据CString tempfile6;/用于打开点名和高程文件int tempi50=0;for (int kdian=0;kdian1297,SOS);/读取点名文件return;while(file6.ReadString(tempfile6) if (tempfile6.GetLength()5)tempfile6.Left(3).TrimRight();tempfile6.Mid(3,18).TrimRight();tempnamekdiantempikdian+=tempfile6.Left(3);/存储各个日期的点名 tempdatakdiantempikdian-1=tempfile6.Mid(3,18);/

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论