viccch.github.io

平差设计程序最终版

说明

用来处理水准网的间接平差

主要使用C++编写

QT用来处理GUI和交互

Eigen3用来矩阵计算

nlohmann-json用来处理json

输入输出

本程序采用读写文件的方式进行数据交互。通过使用JSON格式的文件作为数据源,避免了通过控制台手工输入数据的低效,同时JSON格式文件的清晰结构的特点,便于程序和人工的修改和读写。

使用JSON格式的优点:①JSON格式是使用JavaScript语言的{}花括号和[]中括号按嵌套的格式将数据组装起来,具有层次结构,在使用时不会混乱。②JSON只是一种数据格式,它与其它任何编程语言都没有关系,可在所有的编程语言中使用,通用性强。③JSON数据是以文本格式存在的,在传输过程中,是以字符串存在的,因此,比较轻量和简洁。

约定通过以上格式传递数据。需要的数据有:已知高程点数目,未知高程点数目,观测边数目,提供观测所设计的所用站点的编号和名称,已知点的高程信息,以及观测边数据信息,观测边信息包括观测边起始点和终止点的编号和名称,观测得到的高程差,以及观测边的长度。

约定的JSON结构如下所示:

{
    "已知点数": 3,
    "未知点数": 1,
    "观测数": 3,
    "点库": [
        {
            "id": 1,
            "name": "A"
        },
        {
            "id": 2,
            "name": "B"
        },
        {
            "id": 3,
            "name": "C"
        },
        {
            "id": 4,
            "name": "D"
        }
    ],
    "已知点数据": [
        {
            "id": 1,
            "高程": 124.678
        },
        {
            "id": 2,
            "高程": 129.800
        },
        {
            "id": 3,
            "高程": 129.538
        }
    ],
    "观测数据": [
        {
            "from": 1,
            "to": 4,
            "from_name": "A",
            "to_name": "D",
            "观测高程差": 4.114,
            "距离": 2
        },
        {
            "from": 4,
            "to": 3,
            "from_name": "D",
            "to_name": "C",
            "观测高程差": 0.758,
            "距离": 4.0
        },
        {
            "from": 4,
            "to": 2,
            "from_name": "D",
            "to_name": "B",
            "观测高程差": 1.030,
            "距离": 1
        }
    ]
}