坐标系转换:已知控制点计算七参数并对数据批量转换

本示例从WGS84地理坐标系转换到西安80投影坐标系(中央经线114,三度带投影),提供了多组控制点,我们从中选择了分布均匀的三组控制点参与计算。

七参数计算工具:COORD

数据转换工具:ArcGIS工具箱

1 - 七参数计算

注:如果提供了5个以上控制点,未提供七参数用此方法进行计算;计算工具为COORD。

首先设置好投影,本例中央子午线为114,高斯投影3度带

 

使用Coord七参数计算工具进行计算,如下图选择计算七参数

 

输入三组控制点,B代表纬度,L代表经度,H为高程;X和Y一般会省略掉大数,这里控制点中X省略的38,Y省略了4,需要手动加回来;

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在实际应用中,通常我们只知道三个点在不同坐标系下的坐标,而不知道七个参数的具体值。在这种情况下,我们可以使用三个已知点来计算七个参数,从而实现坐标转换。以下是MATLAB中利用三个已知点实现七参数法坐标转换的示例代码。 ```matlab % 定义三个已知点在坐标系1中的坐标 x1 = [0; 100; 200]; y1 = [0; 200; 100]; z1 = [0; 100; 200]; % 定义三个已知点在坐标系2中的坐标 x2 = [0; 150; 250]; y2 = [0; 250; 150]; z2 = [0; 150; 250]; % 计算坐标差异 dx = mean(x2) - mean(x1); dy = mean(y2) - mean(y1); dz = mean(z2) - mean(z1); d = sqrt(dx^2 + dy^2 + dz^2); % 计算旋转角度 wx = atan2((y2(1)-y2(2))*(z1(1)-z1(3)) - (z2(1)-z2(2))*(y1(1)-y1(3)), (y1(1)-y1(2))*(z1(1)-z1(3)) - (z1(1)-z1(2))*(y1(1)-y1(3))); wy = atan2((z2(1)-z2(2))*(x1(1)-x1(3)) - (x2(1)-x2(2))*(z1(1)-z1(3)), (x1(1)-x1(2))*(z1(1)-z1(3)) - (z1(1)-z1(2))*(x1(1)-x1(3))); wz = atan2((x2(1)-x2(2))*(y1(1)-y1(3)) - (y2(1)-y2(2))*(x1(1)-x1(3)), (y1(1)-y1(2))*(x1(1)-x1(3)) - (x1(1)-x1(2))*(y1(1)-y1(3))); % 计算尺度参数 m = d / sqrt((mean(x1))^2 + (mean(y1))^2 + (mean(z1))^2); % 输出七个参数 fprintf("dx = %.2f, dy = %.2f, dz = %.2f\n", dx, dy, dz); fprintf("wx = %.2f, wy = %.2f, wz = %.2f\n", wx, wy, wz); fprintf("m = %.6f\n", m); % 使用七个参数进行坐标转换 [x2, y2, z2] = coordinate_transform(x1, y1, z1, dx, dy, dz, wx, wy, wz, m); % 输出转换后的坐标 fprintf("转换前的坐标为(%.2f, %.2f, %.2f)\n", x1, y1, z1); fprintf("转换后的坐标为(%.2f, %.2f, %.2f)\n", x2, y2, z2); ``` 以上代码中,我们首先定义了三个已知点在两个坐标系下的坐标,然后根据公式计算了七个参数。最后使用`coordinate_transform`函数进行坐标转换,并输出转换后的坐标。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值