测量平差程序设计2摘要.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
测量平差程序设计第二讲 平差数据读入 1.概述 录入数据格式确定后的工作,是在分析数据编排格式特点的基础上,设计读入数据的方法。程序读入数据文件是经过分解、判读、统计的过程,将各类信息分别保存在设计的储存变量中。 显然读入方法是多样的,复杂程度也因方法不同而异,设计目标应是力求简单易懂。 平差数据读入 2.数据识别方法 识别数据行类型的方法多样,例如一种方法是从数据的特点着手,如逗号分隔的第二个字符串若是“l”或“s”,该行就是观测值信息,反之就是先验精度信息或已知点信息。区别后两者,可以根据字符串长度来识别,先验精度信息行中三个字符串都是单字符,与已知点信息长度差距明显。 平差数据读入 2.数据识别方法 另一种方法是由数据文件中三种数据行的位置着手,如先验精度信息是数据文件的第一行,并且只有一行。随之出现的即是已知数据信息。已知数据信息的行数等于已知点数,随着控制网不同而异,但是测站信息就是其结束的标志。 两种方法中后者相对简单,因而示例程序采用了根据数据排列顺序着手的方案,主要程序语句如下: 平差数据读入 3.读入数据程序代码 K=0:j=0:p=0‘ k是已知点计数变量,j是测站计数变量,p是字符行数据类型标识变量。 Do While Not ts.AtEndOfStream ‘循环条件是没有到文件结尾。 Rows = Rows + 1 数据文件行数记数。 B = ts.ReadLine ‘逐行读取数据。 If B Then 平差数据读入 B = Trim(B) 删除B中可能存在的前导和尾随空格。 B= Replace(B, Chr(32), ) 删除B中间可能存在的空格。 B = Replace(B, ,, ,) 统一逗号格式。 B = LCase(B) ’B中可能包含字母,在这里统一将大写字母转为小写,可使观测数据录入时,不要求区分字母大小写。 平差数据读入 comma = Len(B) - Len(Replace(B, ,, )) 统计1行中逗号的数量。 If comma = 0 And p = 0 Then MsgBox 数据第一行格式不对,请检查: End 第一行数据格式不对,出现这种情况,通常是读错文件。 If comma 0 And comma 2 Then MsgBox 数据第 Rows 行格式不对,请检查: End 除了测站外,每一行中应有两个逗号,有逗号但数目不等于2,则该行数据有问题。 平差数据读入 m(1) = InStr(B, ,) 查B行中第一个逗号的左数位置,并保存在数组变量m(1)中。 If m(1) 0 Then 字符串中有逗号,下面提取逗号分隔的三个字符串。 tr(1) = Mid(B, 1, m(1) - 1) 提取从指定位置1开始的指定数目字符。 平差数据读入 m(2) = InStr(m(1) + 1, B, ,) 查找下一个逗号的位置。 tr(2) = Mid(B, m(1) + 1, m(2) - m(1) - 1) tr(3) = Right(B, Len(B) - m(2)) 以从字符串右边起,提取指定数目字符的方法,提取B行中最后一个字符串 平差数据读入 If p = 0 Then ‘识别变量p的初始值为0,表示读到的是第一行。下面分别保存先验精度指标 ma = Val(tr(1)) ms = Val(tr(2)) mk = Val(tr(3)) p = 1 改变p值使上面语句不能再次执行 平差数据读入 Else‘行中有逗号但p0,说明不是第一行,而是已知点或者观测值信息,两者同样以p值区分。 If p = 1 Then 读到的是已知点坐标行,将已知坐标存入相应的数组。 k = k + 1‘读到一个已知点,对已知点计数变量k递增1。 ReDim Preserve ym(k) 平差数据读入 ym(k) = tr(1)‘存已知点名 ReDim Preserve xo(k) xo(k) = Val(tr(2))‘存已知点x坐标 ReDim Preserve yo(k) yo(k) = Val(tr(3)) ‘存已知点y坐标。 平差数据读入 Else‘ p = 2读到的是观测值行,下面根据识别符作相应处理 If tr(2) = l Then读到方向观测值 nl(j) = nl(j) + 1‘测站j最大方向号值递增1 ReDim Preserve lb(nl(j)) lb(nl(j)) = tr(1)‘存照准点名。 ReDim Preserve l(nl(j)) l(nl(j)) = Val(tr(3))‘存方向值。 平差数据读入 Else tr(2) =“s”,读到的是边长观测值 ns(j) = ns(j) + 1测站j最大边长号值递增1 ReDim Pre

文档评论(0)

三四五 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档