# PlaneADJ **Repository Path**: zhustep/plane-adj ## Basic Information - **Project Name**: PlaneADJ - **Description**: C#写的平面网平差,实现了各种网形的近似坐标计算,约束网和自由网平差,网图绘制功能。 - **Primary Language**: C# - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2024-12-18 - **Last Updated**: 2024-12-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # PlaneADJ #### 介绍 C#写的平面网平差,实现了各种网形的近似坐标计算,约束网和自由网平差,网图绘制功能。 #### 安装教程 无需安装 #### 使用说明 界面使用请参照说明书; 运行代码时,建立工程后,需要安装相应的nuget包 <--- 注意 #### 基于C#的平面网平差软件(代码开源) #### 1 引言 什么是平面网平差?即根据外业测量得到的平面距离和测角观测值,以及必要的起算点,推算出未知点的近似坐标,然后构建平差模型,根据残差加权平方和最小的原则,得到未知点的平面坐标,并进行精度评定。由于坐标参数之间是有相关性的(相对位置关系),因此不能从(0,0)开始迭代,必须计算近似坐标。本软件叫PlaneADJ,功能类似于Cosa(科傻,武大)、SYADJ(铁四院)这样的平面网平差软件。 #### 2 界面版功能介绍 任何算法的设计几乎都可以仿照把大象放进冰箱的思路,PlaneADJ也不例外,其处理流程分为:文件读取、计算近似坐标、平差、结果输出。 (1)文件读取:读取in2格式的平差观测文件; (2)计算近似坐标:实现了方位角+距离推算、角度交会、距离交会、后方交会、自由测站的坐标转换法等。可以推算自由测站网、交叉导线网、混合网、特殊网(边角不同时测量)的近似坐标。 (3)平差:根据经验定权或Helmert方差分量估计定权,确定观测值的权;可做约束网平差(多余起算数据)、自由网平差(必要起算数据)。 (4)输出平差得到的坐标、观测值及其精度信息。 ![输入图片说明](1.png) 主界面 ![输入图片说明](2.png) 参数设置界面 ![输入图片说明](3.png) 绘图界面 #### 3 PlaneADJ中用到的nuget包。 什么是nuget?它相当于python中的库,是别人写好并封装的外部程序集,就不用自己造轮子了,不愧是面向对象语言。nuget包在哪?打开一个C#项目,在【工具-nuget包管理器-管理解决方案的nuget程序包】,即可搜索安装,下载时保持联网。 PlaneADJ中用到了MathNet.Numerics.MKL.Win, ScotPlot.Winforms, Costura.Fody, System.Text.Encoding.CodePages. MathNet.Numerics.MKL.Win是一个MKL矩阵运算库,比C#自带的MathNet要快很多。 ScotPlot.Winforms是一个绘图库,功能强大。 Costura.Fody是一个打包助手,可以直接把所有dll打包进exe,得到一个没有外部依赖的exe程序,把这个exe拖拽到任何其它地方都可以直接运行。 System.Text.Encoding.CodePages是一个文本编码库,读取中文字符串(gb2312)时需要。 PlaneADJ没有把MKL打包进去,因为MKL还需要运行环境,而Fody好像不能把runtimes下的dll打包,所以相当于使用的时MathNet。代码版只需要1、4 #### 4 代码版介绍 代码版中实现了多种方差分量估计定权、改进的抗差估计、附加陀螺边的平面网平差、部分观测值半参数模型的平面网平差。 Plane.cs文件是主要的变量结构和数据,并附加了参考文献。 Program是主程序入口。 其余文件第一行均介绍了文件主要内容。 form_src文件夹下是Winform的脚本,供参考。 #### 5 为什么开源? (1)由于流通的Cosa版本较早,未能处理自由测站网的数据,并且方差分量估计不够智能;SYADJ功能完善,但对于一些特殊网形(比如Cosa的某些算例),不能推算出所有近似坐标。并且这些代码都不开源,因此模仿SYADJ的风格,重新写了一套PlaneADJ,解决上述问题。 (2) 平差领域开源代码较少,且交流氛围惨淡,太多时间浪费在写这些底层代码上,留给做研究的时间不多。所以希望后来者可以不要重蹈覆辙。 软件总有不完善的地方,比如图中的算例结果就和SYADJ有些差异;也希望有人可以从平差算法、代码逻辑方面提出一些优化。 6 开源地址 https://gitee.com/eyeofsunshine/plane-adj