HzCoordTool 坐标系统及转换工具 —— 用户手册
1. 概述
本工具用于测量工作中的坐标系统转换和投影变形计算。主要功能包括:
- 参数计算(四参数、七参数、标准2000)
- 一点一方向计算(旋转+平移,固定缩放)
- 投影变形计算
- 批量坐标转换
- 单点坐标转换
2. 界面布局
┌──────────────────────────────────────────────────────────────┐
│ Ribbon 菜单栏(文件 / 参数计算 / 投影变形计算 / 坐标转换 ...) │
├──────────┬───────────────────────────────────────────────────┤
│ │ │
│ 左侧面板 │ 中间 Tab 表格区域 │
│ │ │
│ - 模型 │ ● 参数计算 ● 投影变形 ● 坐标转换 │
│ - 中央 │ │
│ 子午线 │ +-------+-------+-------+-------+-------+---+ │
│ - 投影 │ | 启用 | 点号 | 源X | 源Y | 目标X |...| │
│ 面高 │ +-------+-------+-------+-------+-------+---+ │
│ - 源坐标 │ │
│ 类型 │ │
│ - 目标 │ │
│ 坐标 ├───────────────────────────────────────────────────┤
│ 类型 │ 日志区(显示操作记录和错误提示) │
├──────────┴───────────────────────────────────────────────────┤
│ 状态栏 │
└──────────────────────────────────────────────────────────────┘
2.1 左侧面板
| 区域 | 说明 |
|---|---|
| 模型 | 选择转换模型:四参(平面)、七参(空间)、标准2000(大地坐标↔投影坐标) |
| 高程拟合 | 固定差 / 平面拟合 / 二次曲面拟合 / TGO拟合,一般选"平面拟合"即可 |
| 中央子午线 | 当前投影带中央子午线,格式如 097:00:00.00000E |
| 投影面高 | 抵偿投影面高程(单位米),用于高程投影变形改正 |
| 参数文件 | 加载已有的 .T47 参数文件 |
| 源坐标类型 | 导入数据的坐标格式:大地坐标(B/L/H)/ 投影坐标(X/Y/H)/ 空间直角 |
| 目标坐标类型 | 要转换成的坐标格式 |
2.2 Ribbon 菜单
| 页签 | 按钮 | 说明 |
|---|---|---|
| 参数计算 | 导入控制点对 | 导入控制点文件(支持 xlsx/csv/txt) |
| 导入参数 | 导入已有的 .T47 参数文件 |
|
| 一点一方向 | 切换一点一方向模式(勾选后表格0列变为下拉框) | |
| 参数计算 | 根据控制点计算转换参数(含一点一方向) | |
| 应用于本项目 | 将计算好的参数应用到坐标转换 | |
| 参数另存为 | 保存参数到 .T47 文件 |
|
| 投影变形计算 | 导入 | 导入坐标文件做投影变形分析 |
| 导出 | 导出变形计算结果 | |
| 投影自动分段 | 按高差阈值或指定段数生成分段行,并按各段 L₀/H₀ 重算变形 | |
| 多段一点一方向 | 基于分段行逐段链式计算,生成坐标转换表结果 | |
| 转到参数计算 | 把变形表的数据转到参数计算页 | |
| 转到坐标转换 | 把变形表的源坐标转到坐标转换页 | |
| 坐标转换 | 导入计算点 | 导入待转换的坐标文件 |
| 坐标计算 | 根据已算参数正算(源→目标) | |
| 坐标反算 | 根据已算参数反算(目标→源) | |
| 保存计算点 | 保存转换结果 | |
| 编辑 | 新增行 | 在当前表格末尾增加空行 |
| 删除选中行 | 删除当前选中的行(支持多选) | |
| 清空表格 | 清空当前表格所有数据 | |
| 帮助 | 帮助 | 查看本手册 |
3. 工作流程
3.1 完整流程(参数计算 → 坐标转换)
① 参数计算(算参数)
│
├─ 导入控制点对(已知源坐标+目标坐标的文件)
├─ 设置模型(四参/七参/标准2000)
├─ 点击"参数计算"
├─ 点击"应用于本项目"
└─ 参数已就绪
│
② 坐标转换(用参数转换) ③ 单点转换(快速试算)
│ │
├─ 导入计算点 ├─ 输入单个点坐标
├─ 点击"坐标计算" ├─ 选择正算/反算
└─ 保存结果 └─ 直接看结果
3.2 一点一方向流程
一点一方向适用于只有旋转和平移的场景(固定缩放 m=1),需要两个已知点——一个作为平移起算点,一个作为定向点:
① 勾选「一点一方向」(参数计算页签 Ribbon 菜单)
│ 表格第0列从复选框变为下拉框
│
② 填写或导入控制点对
│ 至少要两行:起算点(源+目标坐标)+ 定向点(源+目标坐标)
│ 源坐标是已知坐标,目标坐标是要转换到的坐标
│
③ 标记起算点和定向点
│ 每行第0列下拉框选择"起算点"(1行)和"定向点"(1行)
│ 起算点=平移点,定向点=确定旋转方向
│
④ 点击「参数计算」
│ 自动算出旋转角和 dx/dy,显示在参数文本框和日志区
│
⑤ 参数自动生效
│ 计算出的旋转角和 dx/dy 会直接用于坐标转换
│
⑥ 切换到「坐标转换」Tab
│ 导入或输入待转换的坐标,点击「坐标计算」
│ 程序按旋转+平移公式对每个点进行转换
│
⑦ 保存结果
注意:一点一方向模式下,经纬度坐标会自动正算为投影坐标后再计算方位角。起算点和定向点不能重合。目标坐标列(5~7列)必须在点表中有值。
3.3 投影变形流程
① 导入坐标(或手动输入)
② 设置中央子午线和投影面高
③ 自动计算每行的变形值(椭球变形 + 高程变形)
│
├─ 导出结果(含原始坐标、投影后坐标、变形值)
├─ 转到参数计算(生成控制点对,L₀/H₀ 同步到左侧面板,模型切为标准2000)
└─ 转到坐标转换(源坐标前4列转到坐标转换表,L₀/H₀ 同步到左侧面板)
3.4 自动分段与多段一点一方向流程
自动分段用于把一条高差变化较大的线路拆成多个投影面。多段一点一方向则在已经分段的基础上,把后一段接到前一段的坐标框架中。
① 在「投影变形」页导入或填写点表
│
├─ 大地坐标:直接使用 B/L/H 参与分段
└─ 投影坐标:先用左侧面板的中央子午线和投影高反算为 B/L/H
(投影坐标按 X=北坐标、Y=东坐标)
│
② 勾选「自动分段」
│ 表格上方的中央子午线和投影高会禁用
│ 分段结果由下方分段行中的每段 L₀/H₀ 决定
│
③ 设置分段参数
│ 分段数:自动,或指定 2/3/4... 段
│ 高差:段内高差阈值,单位 m
│ 连续:连续超限点数
│
④ 程序生成分段行
│ 每段包含起点~终点、L₀、H₀、点数、起算点、定向点、引用段
│
⑤ 需要人工调整时,编辑分段行后点击「更新」
│
⑥ 点击「多段一点一方向」
│ 程序按分段顺序逐段计算,并把结果写入「坐标转换」表
4. 详细操作指南
4.1 导入文件格式说明
控制点对文件(参数计算用)
文件需要 至少 7 列,逗号/空格分隔:
点号, 源坐标X, 源坐标Y, 源坐标Z, 目标坐标X, 目标坐标Y, 目标坐标Z
如果源/目标是大地坐标(经纬度),格式可以是:
028:42:42.28413N(度:分:秒 带方向)28°42′42.28413″(度分秒符号)28.71174559(十进制小数度)
投影变形导出的结果文件(10列)也可以直接导入控制点:
点号, 纬度B, 经度L, 椭球高H, 投影后X, 投影后Y, 投影后Z, ...
Y062, 028:42:42.28N,097:43:12.13E,4423.7108,3179429.2257,485663.7283,4423.7108, ...
前7列对应:点号 | 源B | 源L | 源H | 目标X | 目标Y | 目标Z
程序会自动识别经纬度还是投影坐标,自动切换坐标类型。
投影变形文件
支持任意列数的坐标文件,程序自动检测第1~3列为 X/Y/Z 或 B/L/H。
投影坐标文件的列含义为:
点号, X(北坐标), Y(东坐标), H
如果导入的是投影坐标,并且要使用自动分段或多段一点一方向,请先确认左侧面板的中央子午线和投影面高是该批原始投影坐标使用的参数。程序会先用这两个参数做高斯反算,再按反算得到的 B/L/H 参与分段和多段计算。
4.2 多行选择与删除
- 按住 Ctrl 键点击行号可多选不连续的行
- 按住 Shift 键点击行号可连续多选
- 右键 → 删除选中行,或点菜单栏的"删除选中行"按钮
- 支持控点点表、转换点表、变形表的所有表格
4.3 投影变形导出
导出时勾选"导出投影后坐标"(默认勾选),导出文件将包含:
# 中央子午线 L₀: 097:52:00.00000E
# 投影面高 H₀: 4200
点号,纬度B,经度L,椭球高H, 投影后X, 投影后Y, 投影后Z, 椭球Δ₁, 高程Δ₂, 变形Δ
Y062, ... , 3179429, 485663, 4423.71, 0.25, -3.51, -3.25
如果当前表中已有分段行,导出文件会保留数据行和分段行;不再输出文件顶部的全局 L₀/H₀ 参数行,也不再导出投影后坐标。每段使用的 L₀/H₀ 会记录在对应分段行中。
4.4 转到参数计算
在变形表右键或 Ribbon 菜单点"转到参数计算":
- 变形表的 L₀/H₀ → 左侧面板中央子午线/投影面高
- 模型自动切换为 标准2000
- 源坐标(原始值)→ 控点点表源列(列2~4)
- 投影后坐标 → 控点点表目标列(列5~7)
- 自动跳转到参数计算页
4.5 转到坐标转换
在变形表右键或 Ribbon 菜单点"转到坐标转换":
- 变形表的 L₀/H₀ → 左侧面板
- 变形表前4列(点号/X/Y/Z)→ 坐标转换表
- 目标列留空,等待参数计算后批量转换
4.6 投影自动分段
在「投影变形」页勾选"自动分段"后,程序会根据点列的高程变化自动生成分段行。勾选后,变形表上方的中央子午线和投影高控件会禁用,每个数据行改由所属分段行中的 L₀/H₀ 控制。
参数含义
| 参数 | 说明 |
|---|---|
| 自动分段 | 勾选后立即按当前参数分段;取消后保留表格数据,但参数控件停用 |
| 分段数 | 选择"自动"时按高差阈值自然分段;选择具体数字时,以该数字作为目标段数 |
| 高差 | 当前段内最大高程与最小高程之差超过该值后,开始判断是否断段 |
| 连续 | 连续超限点数达到该数量时才真正断段,用于避免单个异常点导致误分段 |
| 更新 | 手动编辑分段行后,重新分配数据行并按各段 L₀/H₀ 重算变形值 |
分段结果
分段后,变形表末尾会出现灰色分段行:
| 列 | 分段行内容 |
|---|---|
| 点号 | 分段号:N |
| 源X | 起点~终点 |
| 源Y | 该段中央子午线 L₀ |
| 源Z | 该段投影高 H₀ |
| Δ椭球 | 该段点数 |
| Δ高程 | 起算点 |
| 总变形 | 定向点 |
| 分段号 | 引用段 |
第一段作为主投影面,起算点、定向点、引用段为空。第二段及以后默认使用上一段最后一点作为起算点、上一段倒数第二点作为定向点、上一段流水号作为引用段。
指定段数
选择具体段数时,"分段数"表示目标段数。例如选择 3 段,程序会尽量生成 3 段;若按高差阈值自然分段不足,会在满足最小点数条件的位置补切;若自然分段过多,会优先合并高差较小的相邻段。
手动调整
可以直接编辑分段行的起点~终点、L₀、H₀、起算点、定向点等字段。编辑完成后点击"更新",程序会:
- 按分段行顺序重新编号
- 按起点~终点重新给数据行写入分段号
- 按每段 L₀/H₀ 重新计算 Δ椭球、Δ高程、总变形
- 重新填充分段行的点数、起算点、定向点、引用段
4.7 多段一点一方向
"多段一点一方向"用于把分段后的各段坐标逐段接续起来。入口在「投影变形计算」Ribbon 菜单中。
使用前提
- 变形表中必须已经有分段行
- 每个分段行都要能解析出起点~终点、L₀、H₀
- 第二段及以后需要有效的起算点和定向点
- 起算点、定向点必须能在数据行中找到,且两点距离不能过小
计算规则
第一段直接按该段 L₀/H₀ 高斯正算,作为主坐标框架。第二段及以后按以下方式计算:
- 找到本段的起算点和定向点
- 目标坐标取上一段对同名点的计算结果
- 源坐标用本段 L₀/H₀ 高斯正算
- 由起算点和定向点求旋转角与平移量
- 将本段所有点转换到上一段坐标框架中
如果某段缺少起算点、定向点、点号匹配失败,或依赖的上一段结果无效,程序会中止多段计算,避免后续段混用错误坐标框架。
输出结果
计算完成后,程序会切换到「坐标转换」表,并按分段顺序写入结果。每段前会插入一条灰色参数行,显示该段分段号、L₀ 和 H₀;后面跟随该段的点坐标结果。共同点可能在相邻段中各出现一次,这是为了保留每段的独立计算结果。
5. 常见问题(FAQ)
Q: 文件导入了但表格是空的? A: 检查底部日志区有无错误提示。常见原因:
- 列数不够(控制点需要至少7列)
- 数值格式不对(如中文全角符号)
- 文件被其他程序占用
Q: 经纬度导入后变形值算不出来? A: 确保变形页的中央子午线 L₀ 已正确填写。程序会自动估算,但建议手动核对。
Q: 投影变形列显示红底是什么意思? A: 变形值超过 2.5 cm/km 阈值,表示该点投影变形较大,需要注意。
Q: 中误差显示红底是什么意思? A: 全部点的均方根误差 > 2.5 cm/km,整体投影变形偏大,建议调整投影面高。
Q: 一点一方向模式下「参数计算」按钮不生效? A: 检查是否在控点点表第0列下拉框中同时选择了"起算点"和"定向点",确保两行的源坐标和目标坐标都填写完整。
Q: 一点一方向计算结果怎么用? A: 计算参数后,程序已自动记录旋转角和 dx/dy。切换到坐标转换表格,点击"坐标计算"即可应用。
Q: 自动分段为什么没有分到我设置的段数? A: 先确认"分段数"是否选择了具体数字,而不是"自动"。"自动"模式只按高差阈值自然分段,不保证固定段数;选择具体数字时,程序会以该数字作为目标段数,但仍受有效点数和共同点规则约束。
Q: 投影坐标也能自动分段吗? A: 可以。投影坐标会先用左侧面板的中央子午线和投影面高做高斯反算,得到 B/L/H 后再按高程分段。请确认投影坐标按 X=北坐标、Y=东坐标 填写。
Q: 勾选自动分段后,变形页上方的中央子午线和投影高为什么不能编辑? A: 自动分段后,每段都有自己的 L₀/H₀,数据行会按所属分段重算变形值。为了避免全局 L₀/H₀ 与分段 L₀/H₀ 混用,勾选自动分段时这两个控件会禁用。
Q: 手动改了分段行后,为什么数据行没有变化? A: 手动编辑分段行后需要点击"更新"。更新会重新匹配起点~终点、重编号分段行,并按新的 L₀/H₀ 重算数据行变形值。
Q: 多段一点一方向提示中止怎么办? A: 检查分段行的起点~终点、起算点、定向点是否都能在数据行中找到;第二段及以后必须有有效起算点和定向点,且两点不能重合或距离过小。
6. 注意事项
- 导入前先确定源坐标类型:左侧面板的"源坐标类型"需与文件数据一致,否则解析失败
- "标准2000"模型:适用于大地坐标(经纬度)与投影坐标之间的互相转换,不需要控制点对
- 计算结果需要"应用于本项目" 后,才能在坐标转换中使用(一点一方向参数自动生效,无需此步骤)
- 投影坐标轴方向:坐标转换和投影变形功能中,投影坐标统一按
X=北坐标、Y=东坐标 - 自动分段后的 L₀/H₀:以分段行中的每段 L₀/H₀ 为准,不再使用变形页上方的全局 L₀/H₀
- 空格分隔的文件:如果文件名含有空格,请用引号或重命名文件
- 导出文件为 CSV 格式,可用 WPS/Excel 打开
HzCoordTool v1.0 | 更新日期:2026-06-30