(工程)坐标转换类别和方法

本文详细介绍五种常用的坐标转换方法:三参数法、七参数法、四参数加高程拟合、一步法及校正参数法,并对每种方法的适用场景、参数意义进行了深入解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 绪论

在上一篇文章中,讲到了经纬度坐标转换为工程坐标,其中不可避免的涉及到坐标系之间转换参数的求解。在工程中时常使用不同的坐标转换方法。武汉大学张晓东课题组的此篇文章,空间坐标与投影系统系列(三):坐标转换,详细阐述了坐标转换的定义和一般方法。

但在实际的工程中,我们使用的方法有以下几种:

  1. 三参数转换法
  2. 七参数转换法
  3. 四参数转换+高程拟合
  4. 一步法
  5. 校正参数

他们本质上是两种类型,

  1. 两个三维直角坐标系之间的转换 ——>7个参数
  2. 两个平面直角坐标系之间的转换 ——>4个参数

在这里插入图片描述

结合工程中使用条件,他们被简化、组合,从而形成了以上5种不同的坐标系转换方法(叫法)。接下来对5种方法坐标转换的原理、使用条件做出总结和资料聚合。关于他们的代码实现,可以参考我的这篇文章:工程坐标转换方法C#代码实现

在这里插入图片描述


2. 三参数法

三参数,是指坐标系的 X、Y、Z三个轴的平移参数 Δ x , Δ y , Δ z \Delta x, \Delta y, \Delta z Δx,Δy,Δz。是七参数方法的简化。
要求已知一个国家坐标点即可。因此,这一个点的坐标对应值相减,即可得到这三个参数 Δ x , Δ y , Δ z \Delta x, \Delta y, \Delta z Δx,Δy,Δz

这种转换方式多运用于信标,SBAS,固定差改正以及精度要求不高的地方即最远点间的距离不大于30Km1。在RTK模式下,作用距离在5km范围较平坦的地方(基站开机模式)。随着移动站离基准站距离的增加,精度越来越低,一般3km精度能在5cm以内


3. 七参数法

七参数法,是指坐标系X、Y、Z三个轴的平移参数 Δ x , Δ y , Δ z \Delta x, \Delta y, \Delta z Δx,Δy,Δz,加上三个轴的旋转 θ x , θ y , θ z \theta_x, \theta_y, \theta_z θx,θy,θz,再加上尺度参数 m m m
至少三个已知坐标点,已知点可以是国家坐标系下的坐标,或着是与WGS-84坐标系之间存在很小旋转坐标系下的坐标,4个点时,可以检验已知点的正确性。此方法解算模型严谨,因此要求已知点的坐标精度高,一般在大范围作业时使用,当已知点精度不高时,不推荐使用七参数

3.1 布尔莎模型

七参数法,本质上是两个三维直角坐标系之间的转换。当两个直角坐标系的三个轴旋转变换很小时,才能够使用2。公式如下:
[ X Y Z ] = [ Δ x Δ y Δ z ] + ( 1 + m ) [ 1 θ z − θ y − θ z 1 θ x θ y − θ x 1 ] [ X 0 Y 0 Z 0 ] \left[\begin{array}{l} X \\ Y \\ Z \end{array}\right]=\left[\begin{array}{l} \Delta x \\ \Delta y \\ \Delta z \end{array}\right]+(1+m)\left[\begin{array}{ccc} 1 & \theta_z & -\theta_y \\ -\theta_z & 1 & \theta_x \\ \theta_y & -\theta_x & 1 \end{array}\right]\left[\begin{array}{l} X_0 \\ Y_0 \\ Z_0 \end{array}\right] XYZ=ΔxΔyΔz+(1+m)1θzθyθz1θxθyθx1X0Y0Z0

3.2 代码实现

关于布尔莎模型的代码实现,网上很多例子,pythonC++都有实现,不在赘述。

3.3 大角度坐标系七参数计算

当两个直角坐标系三个轴旋转变换 θ x , θ y , θ z \theta_x, \theta_y, \theta_z θx,θy,θz不在是微小量时,上述布尔莎模型模型就失效了,一般工程中并不会设计此问题。但也不排除一些特殊情况下,需要计算大角度坐标系转换七参数,多在学术研究中体现。知网上能检索到一大把,但一般都需要迭代实现3


4. 四参数+高程拟合

4.1 四参数

四参数,是指 两个平面直角坐标系之间的参数,X、Y轴平移参数 Δ x , Δ y \Delta x, \Delta y Δx,Δy,加上坐标轴旋转参数 θ \theta θ,再加上尺度因子 K K K
要求两个任意坐标点,精度在小范围内可靠。

四参数求解,相对简单,很多博客也做出很好的解答,同时也有代码实现:

4.2 高程拟合

上述四参数求解后,对于高程,没有继续深入的讲解,因为四参数本质上是平面的坐标转换。但工程中不可缺少高程的求解。对于不同的条件,也就是不同数量的已知点,我们可以使用不同的高程拟合方式。
这里,我并不会详细的讲述测量中高程的定义,因为它包含正高和正常高,是高程系统之间的转换。只需要知道需要高程转换这么一个步骤。

4.3 高程拟合方法

高程拟合常用方法有以下四种:

  1. 固定差改正:接收机测到的高程加上固定常数作为使用高程,常数可以为负数。
  2. 平面拟合:对应于多个水准点处的高程异常,生成一个最佳的拟合平面,当此平面平行于水平面时,平面拟合等同于固定差改正。
  3. 曲面拟合:对应于多个水准点处的高程异常,生成一个最佳的拟合抛物面。曲面拟合对起算数据要求比较高,如果拟合程度太差,可能造成工作区域中的高程改正值发散。
  4. 带状拟合:已知两个水准点,虚拟出一个水准点,变成3个水准点后再进行平面拟合。

求解他们的所需点数如下表所示:

高程拟合方法所需点数
固定改正差1
平面拟合3
曲面拟合6
带状拟合3

他们之间的关系可以使用下图展示:
高程拟合

5. 一步法

所谓“一步法”,其实是测量中常见的术语,适合中小区域(一般为10km*10km的范围内)。参数形式和标准七参数一样,还有“两步法”的叫法,与之相应的也有“经典三维”。他们都是在测绘时,手簿的内置坐标转换方法,其本质上是,当有不同已知点数量,或者不同要求精度时,七参数、四参数、高程拟合的不同组合形式

知乎大佬三维地图技术社区对此有过详细解释:坐标转换与参数计算介绍,测绘人必备知识点!现在总结如下,此小节图片来源于这位大佬的文章

  1. “一步法”,忽略源椭球和目标椭球之间的差异,在投影坐标转地方坐标时,使用四参数+高程拟合
    在这里插入图片描述

  2. “两步法”,考虑源椭球和目标椭球之间的差异,在椭球的空间直角坐标系转换时使用7参数,且在投影坐标转地方坐标时,使用四参数+高程拟合
    在这里插入图片描述

6. 校正参数

校正参数,用于计算两坐标系统之间的平面、高程平移参数。它是在上述方法计算完成后,输入一个已知点,计算校正,调整参数的一个过程。通常在以下两种情况,可以使用校正参数。

  1. 只有一个BJ-54、国家-80坐标或只有一个和WGS-84坐标系旋转很小的坐标系下的坐标,基准站架设好后,移动站可以直接到一个已知点,当前点的WGS-84坐标,并已知点的当地坐标,计算得出已知坐标和当前坐标的改正量dx、dy、dz,根据此,校验参数。
  2. 假设已建好一个项目,参数计算完以后,正常工作了一段时间,由于客观原因,第二次作业不想把基准站架设在和第一次同样的位置,此时,可以用到点校正功能,只需要将基准站任意架设,打开第一次使用的项目,到一个已知点上校正坐标即可。校正方法和第一种情况相同。

7. 总结

综上所述,关于工程坐标系的转换方法、类别过程可以用如下图示,不同的方法组合成了不同的工程叫法。
在这里插入图片描述


  1. 空间坐标与投影系统系列(四):七参数转换实例 ↩︎

  2. 误差理论与测量平差基础 ↩︎

  3. 知网检索:‘大角度’ and ‘七参数’ ↩︎

### 如何启动和运行 Open WebUI 前端项目 要成功启动并运行 Open WebUI 的前端部分,可以按照以下方法操作: #### 1. **环境准备** 确保已经安装 Docker 并能够正常工作。如果尚未完成此步骤,则需先配置好 Docker 环境[^2]。 可以通过以下命令拉取官方提供的 Open WebUI 镜像: ```bash docker pull ghcr.io/open-webui/open-webui:main ``` 该命令会下载最新的 `open-webui` 容器镜像至本地环境中。 --- #### 2. **容器启动参数** 为了使前端应用正常运行,需要指定一些必要的启动选项。以下是推荐使用的命令结构: ```bash docker run --rm -it \ -p 7860:7860 \ -v $(pwd)/data:/app/data \ -e OPEN_WEBUI_HOST=0.0.0.0 \ -e OPEN_WEBUI_PORT=7860 \ ghcr.io/open-webui/open-webui:main ``` 上述命令解释如下: - `-p 7860:7860`: 将宿主机的 7860 端口映射到容器内的相同端口。 - `-v $(pwd)/data:/app/data`: 绑定挂载数据目录以便保存持久化信息。 - `-e OPEN_WEBUI_HOST=0.0.0.0`: 设置监听地址为所有网络接口。 - `-e OPEN_WEBUI_PORT=7860`: 明确指明服务绑定的具体端口号。 --- #### 3. **解决可能存在的依赖问题** 在某些情况下,可能会因为缺少特定模块或者路径错误而导致程序无法加载完全。例如,在 IDEA 中调试时发现缺失 `open_webui` 模块的情况,这通常是因为项目的 Python 虚拟环境未正确初始化所致[^3]。 此时建议重新创建虚拟环境,并手动激活后再尝试安装所需包: ```bash pip install -r requirements.txt ``` 另外需要注意的是,若存在跨域资源共享 (CORS) 方面的问题,则应调整 FastAPI 或中间件的相关设置以兼容浏览器请求行为[^4]。 --- #### 4. **高级功能扩展** 对于希望进一步定制化的开发者来说,还可以利用 Plugins 插件机制实现更多个性化需求。比如借助 Pipelines 工具链引入额外的功能组件,如用户速率限制、日志记录分析以及多语言支持等功能[^5]。 具体而言,只需编辑对应配置文件并将目标插件加入其中即可生效。 --- ### 总结 综上所述,通过合理运用 Docker 技术配合恰当的服务部署策略,完全可以顺利搭建起一套完整的 Open WebUI 开发测试平台。与此同时,针对可能出现的各种异常状况也提供了相应的解决方案供参考。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值