北京54坐标系转80西安坐标系的简便方法

本文详细介绍了使用COORD软件进行1954年北京坐标系到1980西安坐标系转换的过程,包括搜集高等级三角点、下载并使用COORD软件、设置中央子午线、计算七参数、进行坐标转换等步骤,并强调了转换前通过已知点对比转换精度的重要性。
          BJ54转西安80另一种方法:

        1。首先在测量区域内搜集三到五个高等级三角点,当然根据工作要求,实在没有办法搜集稍低等级的已知点也可以。最少要保证三个。要保证已知点具有两套坐标,既要有1954年北京坐标系,而且要有1980西安坐标系。

       2。从网上下载一个COORD的坐标转换软件。

       3。打开COORD程序,首先新建一个文件,根据测区内经纬度,设定“中央子午线”的经度。然后选择“计算七参数”。(根据矿业权核查指南要求:小于400平方公里也可以用四参数,大于400平方公里要用七参数转换。四参数用到两个已知点就行了。七参数要用到三个已知点。)

       4。七参数计算很简单,就是输入三个具有54和80的对应点。确定后点击计算就行了。就会自动计算出七参数。

       5。然后选上七参数,就可以进行坐标转换了。如图:

                               未命名

    在转换前,最好通过已知点,对比转换后的精度。转换后,坐标平面最大误差不超过2CM,精度相对来说还是很高的。

### 实现北京54坐标系到WGS84的换 为了实现从北京54坐标系到WGS84坐标换,可以采用布尔莎七参数模型来完成这一过程。该模型是一种广泛应用的地心坐标变换方法,适用于不同坐标系统之间的相互换[^1]。 以下是具体的Python代码示例: ```python import math # 定义常量 a_bj54 = 6378245.0 # 长半轴长度 (m) f_bj54 = 1 / 298.3 # 扁率 e2_bj54 = 2*f_bj54 - f_bj54**2 # 第一偏心率平方 a_wgs84 = 6378137.0 # WGS84椭球体长半径(m) b_wgs84 = 6356752.3142 # WGS84椭球体短半径(m) # 布尔莎七参数定义 dx, dy, dz = -141.4, -54.0, 67.9 # 平移参数 ΔX,ΔY,ΔZ (单位:m) ex, ey, ez = -0.3737, -0.0527, 0.8272 # 旋变换参数 εx,εy,εz (单位:弧度制下的角度) scale_factor = 1 + 2.4247e-6 # 尺度变化因子 m/m def transform_bj54_to_xyz(lat, lng, h): """将BJ54地理坐标化为地心直角坐标""" N = a_bj54 / math.sqrt(1 - e2_bj54 * math.sin(math.radians(lat)) ** 2) X = (N + h) * math.cos(math.radians(lat)) * math.cos(math.radians(lng)) Y = (N + h) * math.cos(math.radians(lat)) * math.sin(math.radians(lng)) Z = ((1-e2_bj54)*N+h) * math.sin(math.radians(lat)) return [X,Y,Z] def xyz_transform(xyz): """执行布尔莎七参数换""" x,y,z = xyz # 应用平移分量 x_ = dx + scale_factor*(x*ez*y+z*ey+y*(-ex)+x*z*(-ey)-z*x*(-ex)) y_ = dy + scale_factor*(y*dx-z*dx+x*dz-x*z*(-ex)+z*x*(-ey)) z_ = dz + scale_factor*(z*dx-y*dx+x*dy-x*y*(-ex)+y*x*(-ey)) return[x_,y_,z_] def xyz_to_wgs84(XYZ): """由地心直角坐标计算纬度经度高度""" p = math.sqrt(XYZ[0]*XYZ[0]+XYZ[1]*XYZ[1]) theta = math.atan((XYZ[2]*a_wgs84)/(p*b_wgs84)) lon = math.degrees(math.atan2(XYZ[1], XYZ[0])) lat = math.degrees(math.atan( (XYZ[2]+math.exp(e2_wgs84)*b_wgs84*math.pow(math.sin(theta),3))/\ (p-math.exp(e2_wgs84)*a_wgs84*math.pow(math.cos(theta),3)))) N = a_wgs84/math.sqrt(1-(e2_wgs84)*(math.sin(math.radians(lat))*math.sin(math.radians(lat)))) H = p/math.cos(math.radians(lon))-N return {'lat': lat,'lng':lon,'height':H} def bj54_to_wgs84(bj54_lat,bj54_lon,h=0): """综合函数:BJ54->xyz->WGS84""" xyz = transform_bj54_to_xyz(bj54_lat,bj54_lon,h) transformed_xyz = xyz_transform(xyz) wgs84_coords = xyz_to_wgs84(transformed_xyz) return wgs84_coords['lat'],wgs84_coords['lng'] if __name__ == "__main__": test_point = { 'bj54_lat' : 39.9042, 'bj54_lng' : 116.4074 } result = bj54_to_wgs84(test_point['bj54_lat'],test_point['bj54_lng']) print(f"WGS84 Coordinates are {result}") ``` 此段代码实现了完整的从北京54坐标系至WGS84坐标系换流程,包括但不限于地理坐标向地心直角坐标的初步化、运用布尔莎七参数实施精确调整以及最终返回目标坐标系下的经纬度值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值