当前位置:文档之家› 解析空三航带法区域网平差程序设计

解析空三航带法区域网平差程序设计

解析空三航带法区域网平差程序设计随着新一代GPS系统在各个方面的高速发展,摄影测量技术已经被运用于国土资源监测、气象监测和天体科学等多个领域之中。

摄影测量技术也被逐渐运用到测绘科学中,丰富测绘学科测量技术手段的同时,摄影测量促进测量学的发展。

从摄影测量应用到生产的各个环节,人们对摄影测量的精度要求从未停止过,工程项目对摄影测量的测量精度也提出更高的要求。

本文通过摄影测量的解析空中三角测量方法,在整个目标范围内,将航测线路的模型点作为摄影测量辅助位置观测值,在一个区域范围内,利用多条航带构建一个模型网,再进行整体平差计算出区域网内各航带位置的改正系数,从而解算出航带中各个加密点的三维地表位置数据。

以这种数学模型和平差方法為基础,研究相应的算法,编写出相应的程序进行测试,通过实例计算并对最终结果进行精度评定。

1 Visual Studio简介1.1 什么是Visual StudioC# 编程语言作为美国Microsoft Corporation为Visual Studio (以下简称VS)开发环境下推出的一种简洁、类型安全的面向对象的计算机编程语言,软件程序开发的相关工作人员可以通过它编写在.NET Framework上运行的各种安全、可靠的应用程序。

1.2 C#所具有的特点C#具有以下突出特点:(1)C#的语法结构简单明了。

其最大的特点就是不允许对计算机系统的内存进行控制,去掉了复杂的指针操作。

(2)彻底的面向对象设计。

C#编程语言拥有面向对象的计算机语言的全部特征:封装、继承和多态。

(3)与Web紧密结合。

C#编程语言支持绝大多数的Web标准,例如HTML、XML、SOAP等语言。

(4)强大的安全机制。

能够自动处理在程序设计中常见的问题,较为高级的垃圾回收机制让普通编码基本忽略内存释放问题。

(5)兼容性好。

由于C#编程语言应用着.NET的编程语言规范设计(CLS),因此可以与其他的编程语言进行开发的组件相互兼容。

(6)灵活的版本處理技术。

由于C#作为一门开发语言本身就带有了针对版本管理系统,因此程序员能够更加容易地开发程序和更好的维护程序的后期使用情况。

(7)完善的错误、异常处理机制。

C#提供系统多线程控制,可能是所有语言中多线程和异步变成最方便的。

(8)易有经验的程序员学习。

C#能够适应C或者C++语言设计的函数,所以不会丢失C或者C++本身带有的作用。

由于C#和它们之间的继承的关系,C#对于C或者C++就功能方面很类似,精通相关语言的程序工作人员能够很方便的转向C#。

2 解析摄影测量区域网空中三角测量航带法空三测量是解析空三测量加密的三种方法之一,该方法的主要研究对象是单条航空摄影航带所构建的模型。

首先,将单个独立模型经由模型连接的方法连成一整个航带模型,每一条航带模型都是有很多个单个模型组合成,而每个独立模型由许多个立体像对构成,最后获得构成航带自由网的模型,将整个航带模型作为单个模型进行航带自由网进行绝对定向。

由于每个单个模型中的许多立体像对中都存在着误差,积累下来的误差会随着立体像对的组合不断的传递到下一个层次中,由立体像对积累到单个独立模型,再由单个独立模型整合到自由网,在这过程中产生的误差甚至会使整个航带自由网的结果发生巨大的扭曲变形。

所以在航带模型经过绝对定向之后,针对模型的线性改正将会是重中之重,这是解算出加密点的地面摄影测量坐标必不可少的步骤。

3 航带法空中三角测量区域网平差程序设计3.1 技术路线3.2 程序的界面设计界面是表现软件好坏最直观的的形式,界面的好与不好直接表达了使用者对软件的感受。

高质量的界面可以给使用者带来轻松快乐的想法,反之对于低水平的设计,会让使用者在直觉上产生反感,再有效的功能都会在使用者的担心和放弃中流逝。

对于本次航带法区域网平差程序的设计,我将做一个能够按步骤显示计算进度流程的设计,运用多个C#的DatagridView控件,一步一步的表示出计算的步骤,在计算的过程中也加入了许多MessageBox消息弹出窗口的提示。

设计的思想是将两条航带的数据经过相对定向计算,模型拼接已经绝对定向的解算后,寻找两条航带的连接点,并用Excel表格进行数据的保存,然后选择特定的控制点和经过绝对定向解算之后的模型点,作为一条航带的数据,分别对两条航带和连接点进行数据的导入。

对于存储航带数据的Excel表格将设置为sheet1存储控制点的坐标数据,sheet2将存储与控制点对应的模型点的坐标数据,而对于存储连接点数据的Excel表格将设置为sheet1存储第一条下连接点坐标数据,sheet2存储第二条航带上连接点坐标,然后根据第三章所建立的数学模型设计的相关代码来计算这个航带网所需的非线性改正数,然后每一步都将根据所需的要求使用DatagridView来显示解算的结果,最终求出这两条航带的改正系数,如图2所示。

3.3 数据的导入和保存以对程序中第一条航带的数据导入、导出数据作为例子表示:(1)运用IO流的方式打开处理好的Excel表格文件,并将表格数据导入new_openfile中:OpenFileDialog new_openfile = new OpenFileDialog();new_openfile.Filter = “(EXCEL)*.xls|*.xls";(2)判断表格的数据是否为空new_openfile.ShowDialog()== DialogResult.OK(3)若导入的数据不为空,则将对Excel表格的文件的位置进行获取并连接到Excel文件的数据库中,建立ss作为读取表格中sheet的数据,sc作为读取文件位置的数据:string ss = null;string cs = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + new_openfile.FileName + ";Excel 8.0;HDR=Yes;IMEX=1";OleDbConnection CNN = new OleDbConnection(cs);CNN.Open();(4)历遍Excel文件的Sheet,并显示每个Sheet名:DataTable ttable = CNN.GetSchema("Tables");foreach (DataRow row in ttable.Rows)if (row["Table_Type"].ToString()== "TABLE")ss = "select * from [sheet1$]";OleDbCommand CMD = new OleDbCommand(ss,CNN);OleDbDataReader RAD = CMD.ExecuteReader();DataTable tab = new DataTable();(5)建立一个名为row的数组,并将数据导入for (int i = 0; i RAD.FieldCount; i++)tab.Columns.Add(RAD.GetName(i),RAD.GetField¬Type (i));DataRow row1;while (RAD.Read()){row1 = tab.NewRow();for (int j = 0; j tab.Columns.Count; j++){row1[j] = RAD.GetValue(j);}tab.Rows.Add(row1);}(6)之后将读取到的数据导入dataGridView 中,最后将数据值读入相对于的数组中:dataGridView1.DataSource = tab;kzddata1 = new double[dataGridView1.RowCount - 1,dataGridView1.ColumnCount];for (int i = 0; i dataGridView1.RowCount - 1; i++){for (int j = 0; j dataGridView1.ColumnCount; j++){kzddata1[i,j] = Convert.ToDouble(dataGridView1 [j,i].Value); }}(7)导出数据的将以文本文档的格式表现联立txt文档文件,并对其进行保存的操作:SaveFileDialog new_save = new SaveFileDialog(); //需要建立文件的写入流,然后输入正确的内容即可new_save.Filter = "(文本文档)*.txt|*.txt";if(new_save.ShowDialog()== DialogResult.OK){string fname = new_save.FileName;//建立IO流与文件的联系FileStream f1 = new FileStream(fname,FileMode. Create);StreamWriter f11 = new StreamWriter(f1);//输入相关的内容f11.Flush();//流清空f11.Close();//连接关闭f1.Close();//流关闭}本程序的作业流程是将像片数据经过航带空三测量计算后得出的模型点坐标进行整理和分析,对上下两条航带取所需要模型点和两条航带的连接点整理。

按固定的格式保存至Except文件中,將整理好的数据导入到相对应的数组中,对导入的数组数据处理,再对两条航带进行分析和利用数学模型建立相对应的代码,利用航带的上下连接点计算两条航带的非线性更正数,通过非线性改正数对各个航带的独立存在模型点进行非线性改正获取最终成果,最后将结果保存至txt文档中。

4 实例计算分析4.1 程序调试结果分析经过解析空三绝对定向过后得到的模型点坐标和控制点坐标,以及经过航带网设计后的上下航带的连接点数据的整理,以第一条航带建立Excel表格为基础,选择sheet1保存控制点数据,sheet2保存模型点的数据,在本次存储航带连接点过程中,以sheet1存储第一条航带下连接点数据,sheet2存储第二条航带上连接点数据。

由此,将三个表格数据导入到程序中进行计算,最终计算航带的模型点坐标经过非线性改正后的结果。

以下为程序运行的结果,如图3所示。

4.2 精度评定以下为经过计算过后的非线性改正数:(1)第一条航带的非线性改正数,如表1所示。

(2)第二条航带的非线性改正数,如表2所示。

5 结论本文设计了解析空三航带法区域网平差程序,通过航带法空中三角测量的优点来建立航带法空中三角测量区域网平差模型。

相关主题