利用两个空间直角坐标系的7个转换参数(3个平移参数ΔX,ΔY,ΔZ ,3个旋转参数εX,εY,εZ ,一个尺度变化参数m),请根据空间点在A空间直角坐标系中的坐标求该空间点在B空间直角坐标系中的坐标。

代码如下:

import math as m
import osclass Parameter():    # 设置参数def __init__(self):
# ax,ay,az是三个旋转参数,bx,by,bz是三个平移参数,m是尺度变化参数self.ax = m.radians(eval(input('请输入转换参数ax(度分秒): ')))self.ay = m.radians(eval(input('请输入转换参数ay(度分秒):')))self.az = m.radians(eval(input('请输入转换参数az(度分秒):')))self.bx = eval(input('请输入转换参数bx:'))self.by = eval(input('请输入转换参数by:'))self.bz = eval(input('请输入转换参数bz:'))self.m = eval(input('请输入转换参数m:'))# 将角度转换为弧度
# self.b = m.radians(B)class coordinate_transformation():   # 坐标转换def __init__(self):self.p = Parameter()  # 导入参数def parameter_transformation(self, x1, y1, z1):self.R11 = m.cos(self.p.ay)*m.cos(self.p.az)self.R12 = m.cos(self.p.ay)*m.sin(self.p.az)self.R13 = -m.sin(self.p.ay)self.R21 = -m.cos(self.p.ax)*m.sin(self.p.az) + m.sin(self.p.ax)*m.sin(self.p.ay)*m.cos(self.p.az)self.R22 = m.cos(self.p.ax)*m.cos(self.p.az) + m.sin(self.p.ax)*m.sin(self.p.ay)*m.sin(self.p.az)self.R23 = m.sin(self.p.ax)*m.cos(self.p.ay)self.R31 = m.sin(self.p.ax)*m.sin(self.p.az) + m.cos(self.p.ax)*m.sin(self.p.ay)*m.cos(self.p.az)self.R32 = -m.sin(self.p.ax)*m.cos(self.p.az) + m.cos(self.p.ax)*m.sin(self.p.ay)*m.sin(self.p.az)self.R33 = m.cos(self.p.ax)*m.cos(self.p.ay)self.x2 = (1 + self.p.m)*(self.R11 * x1 + self.R12 * y1 + self.R13 * z1) + self.p.bxself.y2 = (1 + self.p.m) * (self.R21 * x1 + self.R22 * y1 + self.R23 * z1) + self.p.byself.z2 = (1 + self.p.m) * (self.R31 * x1 + self.R32 * y1 + self.R33 * z1) + self.p.bzclass Point():# 建立点类def point(self, x, y, z):  # 建立大地坐标点类self.x1 = xself.y1 = yself.z1 = zself.P = coordinate_transformation()self.P.parameter_transformation(x1, y1, z1)self.x = self.P.x2self.y = self.P.y2self.z = self.P.z2SolveType = input('请输入要转换的坐标x,y,z')
while True:I = input('请输入空间直角坐标x、y、z,中间用空格隔开:\n')while True:if I:passelse:s.exit(0)try:[x1, y1, z1] = [float(n) for n in I.split()]breakexcept:I = input('输入错误,请重新输入空间直角坐标x、y、z,中间用空格隔开:\n')else:pass# 开始转换P = Point()  # 创建一个实例对象P.point(x1, y1, z1)x = str(x1)y = str(y1)z = str(z1)x2 = str(P.x)y2 = str(P.y)z2 = str(P.z)massege = '\n您输入的空间直角坐标为:(' + x + ', ' + y + ', ' + z + ')\n转换得到空间直角坐标为:(' + x2 + ', ' + y2 + ', ' + z2 + ')'print(massege)break
os.system('pause')  # 暂停命令

运行结果示例如下:

请输入要转换的坐标x,y,z30 30 30
请输入空间直角坐标x、y、z,中间用空格隔开:
30 30 30
请输入转换参数ax(度分秒): 30
请输入转换参数ay(度分秒):30
请输入转换参数az(度分秒):30
请输入转换参数bx:3
请输入转换参数by:3
请输入转换参数bz:3
请输入转换参数m:3您输入的空间直角坐标为:(30.0, 30.0, 30.0)
转换得到空间直角坐标为:(84.96152422706632, 133.98076211353316, 142.01923788646684)
�밴���������. . . 

利用七参数实现求解坐标转换相关推荐

  1. 利用七参数进行CGCS2000坐标系到西安80坐标系的转换

    问题 因为工作,需要把CGCS2000坐标系下的坐标转到西安80坐标系下,中间由于用到了七参数,所以要进经过到空间直角坐标系的转换,然后再转换到西安80大地坐标下,最后再投影到西安80坐标的某度带. ...

  2. 利用七参数求解坐标转换(C#简单快速实现)

    从A空间直角坐标系到B空间直角坐标系的7个转换参数(3个平移参数ΔX,ΔY,ΔZ ,3个旋转参数εX,εY,εZ ,一个尺度变化参数m),请根据空间点在A空间直角坐标系中的坐标求该空间点在B空间直角坐 ...

  3. c++七参数坐标转换_深度 | 扒一扒坐标转换之七参数

    坐标转换永远是测绘工作离不开的一个话题.坐标转换的方法很多,有的方法可以用相应的参数来描述,其中使用较广的一个是七参数.七参数大多用于不同坐标系统间的基准变换. 七参数的由来 对于非测绘的专业人士可能 ...

  4. 坐标转换--基准面转换(布尔莎七参数)

    坐标转换–基准面转换(布尔莎七参数) 在坐标转换中,除了正投影和反投影的转换,还有不同基准面之间的转换.基准面的转换有很多种转换模型,常见的有三参数和七参数转换.三参数的转换主要是通过对x,y,z三个 ...

  5. 如何在ArcGIS中应用七参数对影像进行坐标投影变换

    如何在ArcGIS中应用七参数对影像进行坐标投影变换 谷歌数据为WGS84坐标系,ArcGIS矢量数据坐标系经常为北京54坐标系.西安80坐标系.国家2000坐标系,要想将WGS84坐标系转换到我们国 ...

  6. Java 七参数计算

    两个不同的三维空间直角坐标系之间转换时,通常使用七参数模型(数学方程组).在该模型中有七个未知参数,即: (1)三个坐标平移量(△X,△Y,△Z),即两个空间坐标系的坐标原点之间坐标差值: (2)三个 ...

  7. 七参数坐标转换 matlab,利用三点法求解空间坐标系转换所需的七参数

    同一个物体的点云在不同坐标系中的坐标表示不同,有时候需要将其进行转换到同一坐标系中进行处理,经典的方法为七参数法(7-parameters),用matlab实现如下: %PS.好久不用matlab了, ...

  8. 利用坐标数据求解七参数

    根据四组数据求解它们的七参数,并且求解出每个参数的中误差,最后用其中的任意一个数据求得它对应的坐标数据,来验证我们的求解结果.数据以文件的形式将数据输入.代码中有详细的注释. 具体代码如下: 数据如下 ...

  9. 四参数与七参数坐标转换含义及区别

    目录 一.前言 二.四参数转换 三.七参数转换 四.区别 一.前言 不同坐标系,其椭球体的长半径,短半径和扁率是不同的.比如我们常用的四种坐标系北京54.西安80.WGS84.CGCS2000所对应的 ...

最新文章

  1. 十大迷你iPhone天气应用
  2. 如何判断离散数组 是递增趋势_期货交易中,如何通过交易周期判断趋势,做到顺势而为?...
  3. 《CCNP安全Secure 642-637认证考试指南》——第8章 配置与实施路由式数据面安全...
  4. 信号与系统 计算机,《信号与系统》计算机练习——利用MATLAB
  5. HDU 1827 Summer Holiday 图论scc
  6. css 剩余空间,CSS DIV高度撑满剩余空间
  7. FlashDevelop打包IOS应用教程
  8. node + node-webkit实现电脑文件信息扫描小插件
  9. smtp、esmtp、pop3命令使用
  10. R语言epiDisplay包的tableStack函数基于分组变量生成统计分析表(包含描述性统计分析、假设检验、不同数据使用不同的统计量和假设检验方法)、自定义设置iqr参数指定需要计算分位数的变量
  11. PS快速美白磨皮方法
  12. CentOS6.5的安装及本地源的配置
  13. 我换Minecraft启动器啦!
  14. Unity云渲染开源框架UnityRenderStreaming使用说明
  15. 基于微信小程序的高校体育场地预约管理系统
  16. 大环配体DOTA修饰Fe3O4磁性纳米颗粒定制-瑞禧小编
  17. ITIM二次开发:Workflow之JavaScriptExtension
  18. [svn]log命令
  19. docx 转换成html转pdf,python3将docx转换成pdf,html文件,pdf转doc文件
  20. js常见弹窗以及简单使用

热门文章

  1. Principle for Mac(交互原型设计工具)
  2. 【转】揭秘迅雷VIP用户的破解方法
  3. 城市轨道交通运营管理属于什么院系_城市轨道交通运营管理属于什么类型的专业...
  4. 小学生买台灯用哪个灯光好点?盘点最好的学生护眼灯品牌排行
  5. 微信公众号文章同步攻略
  6. 资深工程师:开关电源设计必须注意的64个细节
  7. OTC非处方药是什么意思?
  8. 二阶常系数非齐次微分方程例题
  9. 【汇智学堂】-JS菜鸟版过河小游戏(之四---全部角色左侧上船与左侧下船)
  10. 19、猿人学第四题:雪碧图、样式干扰【Post/Js逆向笔记】