如何在Excel中将GNSS采集的X/Y坐标投影至点集最远两点连线上
Excel端GNSS点位投影到两点连线实现方案
前置准备
先将点位CSV数据导入Excel,默认列布局如下:
| 列号 | 列含义 | 数据范围 |
|---|---|---|
| A | Point ID | 2~31行 |
| B | northing(北坐标) | 2~31行 |
| C | easting(东坐标) | 2~31行 |
原始点位数据参考:
Point ID,northing,easting 0,1035968.533,2345983.331 1,1035982.422,2345983.331 2,1035994.228,2345982.637 3,1036006.728,2345980.554 4,1036017.839,2345976.387 5,1036037.978,2345977.081 6,1036046.311,2345984.72 7,1036057.422,2345993.054 8,1036069.922,2346001.387 9,1036089.367,2346002.081 10,1036103.256,2346002.081 11,1036116.45,2346012.498 12,1036129.644,2346011.109 13,1036147.006,2346004.165 14,1036158.811,2345998.609 15,1036176.867,2345993.748 16,1036188.672,2345993.054 17,1036205.339,2345990.276 18,1036215.061,2345981.942 19,1036230.339,2345984.72 20,1036240.756,2345995.831 21,1036256.728,2345999.998 22,1036272.006,2346000.692 23,1036285.2,2345993.054 24,1036301.172,2345988.887 25,1036319.922,2345985.415 26,1036331.033,2345979.165 27,1036344.922,2345976.387 28,1036359.506,2345970.831 29,1036372.7,2345956.248
步骤1:确定投影基线的两个端点
投影基线为点集中距离最远的两个点的连线,可通过两种方式识别:
- 本次样本快速适配:提供的点位数据中最远两点为ID0(起始点)和ID29(末尾点),可直接作为基线端点
- 通用自动识别:在空白单元格输入数组公式(输入后按
Ctrl+Shift+Enter生效)得到最大点间距,匹配对应两点即可:=MAX(SQRT((B2:B31-TRANSPOSE(B2:B31))^2 + (C2:C31-TRANSPOSE(C2:C31))^2))
步骤2:配置公共计算参数
在Excel空白区域(比如H1:H4单元格)存储基线公共参数,避免重复计算:
| 单元格 | 存储内容 | 公式 |
|---|---|---|
| H1 | 基线起点P0的北坐标 | =B2(可替换为识别到的其他起点) |
| I1 | 基线起点P0的东坐标 | =C2 |
| H2 | 基线终点P1的北坐标 | =B31(可替换为识别到的其他终点) |
| I2 | 基线终点P1的东坐标 | =C31 |
| H3 | 基线向量北分量dx | =H2-H1 |
| I3 | 基线向量东分量dy | =I2-I1 |
| H4 | 基线长度平方 | =H3^2+I3^2 |
步骤3:批量计算投影后坐标
直接在对应列写入公式,下拉填充即可批量得到所有点的投影结果:
- 投影比例t(D列,t=0对应基线起点,t=1对应基线终点):D2单元格输入公式后下拉
=((B2-$H$1)*$H$3 + (C2-$I$1)*$I$3)/$H$4 - 投影后北坐标(E列):E2单元格输入公式后下拉
=$H$1 + D2*$H$3 - 投影后东坐标(F列):F2单元格输入公式后下拉
=$I$1 + D2*$I$3 - (可选)沿基线到起点的距离(G列):如果需要直接得到沿连线的累积距离,G2输入公式后下拉
=D2*SQRT($H$4)
精度说明
以上公式基于向量投影原理计算,无精度损失,完全匹配Python实现的计算结果,可保留GNSS原始坐标的毫米级精度,适配后续所有计算需求。
内容的提问来源于stack exchange,提问作者JRFount
相关产品推荐
相关产品推荐

