摄影测量学 :基于python的双像空间前方交会实验
输入数据:
- 模拟像片一对:左片号31,右片号32;
- 航摄机主距:f=150mm;左右像片x0=0;y0=0。
左片外方位元素:
φ=-0°25'00″ ω=-1°00'00″ k=-0°10'00″
Xs=103007.006117 Ys=139998.994849 Zs=4801.9989994 (m)
右片外方为元素:
φ=1°39'59″ ω=-0°10'00″ k=0°40'00″
Xs=106002.023762 Ys=140005.002780 Zs=4797.009648 (m)
已知像点坐标如下表:
25号片 |
26号片 |
|||
点号 |
X(mm) |
Y(mm) |
X(mm) |
Y(mm) |
1 |
0.864 |
2.652 |
-100.251 |
1.443 |
2 |
97.084 |
2.933 |
-4.425 |
0.320 |
3 |
1.082 |
-76.227 |
-102.695 |
-79.618 |
4 |
0.640 |
82.003 |
-99.904 |
81.754 |
5 |
95.207 |
-75.521 |
-5.334 |
-78.443 |
6 |
96.797 |
83.77 |
-3.509 |
79.587 |
- 实验步骤:
(1)读入同名点坐标;
(2)读入内外方位元素;
(3)在利用相应的外定向角元素组成旋转矩阵,将像空间坐标转化为像空辅助坐标(X,Y,Z),公式如下:
(4)再计算点投影系数利用公式:
(5)计算模型坐标,公式:
完整代码:
# #!/usr/bin/env python
# # -*- coding: UTF-8 -*-
# '''
# @Project :Calculate_basin
# @File :Ex2.py
# @Author :Ryo
# @Date :2021/11/15 8:27
# '''
import numpy as np
import pandas as pd
import math#Define a Rotation Array
def Rotation(phi,w,k):R=np.array([[1,-k,-phi],[k,1,-w],[phi,w,1]])return R
#import main parameters
f=150
# XS1,YS1,ZS1
leftlin=np.array([103007.006117,139998.994849,4801.9989994])
rightlin=np.array([106002.023762,140005.002780,4797.009648])leftele=np.array([-25,-60,-10])/60*math.pi/180
rightele=np.array([60+39+59/60,-10,40])/60*math.pi/180
# 左片外方位角元素
# -0°25′00″,-1°00′00″,-0°10′00″
# 右片外方位角元素
# 1°39′59,-0°10′00″,0°40′00″
dataarr=np.array([[0.864,2.652,-100.251,1.443],
[97.084,2.933,-4.425,0.32],
[1.082,-76.227,-102.695,-79.618],
[0.64,82.003,-99.901,81.754],
[95.207,-75.521,-5.334,-78.443],
[96.797,83.77,-3.509,79.587]])# B(Bx,By,Bz)
B=rightlin-leftlin
R1=Rotation(leftele[0],leftele[1],leftele[2])
R2 = Rotation(rightele[0], rightele[1], rightele[2])lst=[('Name','X',"Y","Z")]
for i in range(dataarr.__len__()):# xy1=np.array(df.loc[i,['25X' ,'25Y']])# xy2=np.array(df.loc[i,['26X' ,'26Y']])xy1=dataarr[i][0:2]xy2=dataarr[i][2:4]print('Left (x,y)=',xy1,'right (x,y)=',xy2)# a1(X1,Y1,Z1) , a2(X2,Y2,Z2)xyz1=np.array(list(xy1)+[-f])xyz2=np.array(list(xy2)+[-f])a1=np.dot(R1,xyz1)a2=np.dot(R2,xyz2)print('left (X,Y,Z)=',a1,'right (X,Y,Z)=',a2)N1=(B[0]*a2[2]-B[2]*a2[0])/(a1[0]*a2[2]-a1[2]*a2[0])N2=(B[0]*a1[2]-B[2]*a1[0])/(a1[0]*a2[2]-a1[2]*a2[0])X=leftlin[0]+N1*a1[0]Z=leftlin[2]+N1*a1[2]Y=0.5*((leftlin[1]+N1*a1[1])+(rightlin[1]+N2*a2[1]))lst.append((i,X,Y,Z))print('name:',i,' X=',X,' Y=',Y,' Z=',Z,'\n')'''Create GUI'''from tkinter import *class Table:def __init__(self, root):# code for creating tablefor i in range(total_rows):for j in range(total_columns):self.e = Entry(root, width=20, fg='black',font=('Times New Roman', 20))self.e.grid(row=i, column=j)self.e.insert(END, lst[i][j])#Create GUI
from tkinter import ttk
from tkinter import *# find total number of rows and
# columns in list
total_rows = len(lst)
total_columns = len(lst[0])# create root window
root = Tk()
t = Table(root)
root.mainloop()root = Tk() # 初始框的声明# Table2
# [X,Y,Z]=inputlist[2:]
columns = ('x_left','y_left','x_right','y_right')
treeview2 = ttk.Treeview(root, height=18, show="headings", columns=columns) # 表格for i in columns:treeview2.column(i,width=75,anchor='center')treeview2.heading(i,text=i)treeview2.pack(side=LEFT, fill=BOTH)c1 = [1,2,3,4]ipcode = [xy1[0], xy1[1],xy2[0],xy2[1]]
for i in range(4): # 写入数据treeview2.insert('', i, values=(xy1[0], xy1[1],xy2[0],xy2[1]))#text of Rotaiontext = Text(root, width=40, height=20)
# insert的第一个参数为索引;第二个为添加的内容
text.insert(1.,'Left_Rotation is\n')
text.insert(2.0, R1,'\n')
text.insert(7.,'Right_Rotation is=\n')
text.insert(8.0, R2)
# text.insert(3,'fgjsdfkjgierjgidfkgjol')
text.pack()root.mainloop() # 进入消息循环
摄影测量学 :基于python的双像空间前方交会实验相关推荐
- arcgis中python批处理_基于Python的ArcGIS空间数据格式批处理转换工具开发
基于 Python 的 ArcGIS 空间数据格式批处理转换工具开 发 焦 洋,邓 鑫,李胜才 [摘 要] 摘 要 ArcGIS 仅提供了单个文件的空间数据格式转换工具.本文首先 研究基于 Pytho ...
- 基于 Python 的地理空间绘图指南
大部分情况下,地理绘图可使用 Arcgis 等工具实现.但正版的 Arcgis 并非所有人可以承受.本文基于 Python 的 cartopy 和 matplotlib 等库,为地理空间绘图的代码 ...
- python空间数据处理_基于Python语言的空间数据处理
龙源期刊网 http://www.doczj.com/doc/7b0e0476172ded630a1cb662.html 基于Python语言的空间数据处理 作者:何丽娴甘淑陈应跃 来源:<价值 ...
- 【教程】基于 Python 的地理空间绘图指南
大部分情况下,地理绘图可使用 ArcGIS 等工具实现.但正版的 ArcGIS 并非所有人可以承受.本文基于 Python 的 cartopy 和 matplotlib 等库,为地理空间绘图的代码实现 ...
- 基于python对密立根油滴实验数据处理改进
基于python对密立根油滴实验数据处理改进 近似最大公约数 import math ac=1.34 def accuracy(x, y):return math.fabs(x - y) < a ...
- 双像空间前方交会方法(一)---点投影系数方法
空间前方交会的目的是已知内外方位元素来求解物点坐标 点投影系数实质就是利用同名光线在各自像空间辅助坐标系中的分量的相似关系来求解 获取已知数据 左右两个像片的12个外方位元素以及内方位元素 量测左右像 ...
- 双像空间前方交会两种方法的比较
另外,对双向空间前方交会的基本概念做一些补充
- 基于Python的汉字字频统计实验
实验内容 针对不同语料统计汉字的字频,并进行比较. 实验要求和目的 给出前 100 个汉字高频字的频率统计结果: 分别给出前 1.20.100.600.2000.3000.6000 汉字的字频总和: ...
- python 物理实验_基于Python和梯度下降算法的物理实验数据一元线性拟合方法
基于 Python 和梯度下降算法的物理实验数据一元线性拟 合方法 关毅铬 ; 程敏熙 [期刊名称] < <物理通报> > [年 ( 卷 ), 期] 2019(000)010 ...
- 基于python的图书信息管理系统
基于python的图书信息管理系统 实验任务和要求 设计并实现一个图书信息管理系统.根据实验要求设计该系统的菜单和交互逻辑,并编码实现增删改查的各项功能. 该系统至少包含以下功能: (1) 根据指定图 ...
最新文章
- ControlButton按钮事件
- java 去掉 时期中的图片,去除图片浅色背景(Java 实现)
- 告别2010-正则表达式
- Python中字符串的介绍以及常见操作
- 传感与检测技术,光电二极管和光敏电阻的特性研究实验报告,江南大学物联网工程学院自动化
- 结构体数组(SoA)与数组结构体(AoS)
- Python:闭包(简介、使用方法、nonlocal修改闭包内使用的外部变量)、装饰器(定义、作用、通用装饰器、多个装饰器、带参数的装饰器、类装饰器、装饰器方式添加WEB框架的路由)
- python灰度处理_python 简单图像处理(9) 灰度变换
- unity3dk帧_Unity3D制作序列帧动画的方法
- 手机号码吉凶测试原理计算公式
- 如何选择最合适的服务器?服务器配置方案
- 【疑难教程】视频上云服务平台EasyCVR使用Go语言可执行程序出现“Process XXX has exited with status XXXX”错误
- [BBS 水木清华站]给Linux新手
- 理解 Audio 音频系统二 之 audioserver AudioPolicyService
- android微信支付毁掉,android微信支付 需要注意的坑
- SQL 标题: 连接到服务器 ------------------------------ 无法连接
- 应用权限不足0xc0000022
- 485终端电阻接法(终端电阻1个防止信号反射 偏置电阻两个使0和1更加可靠)
- 江郎才尽者,小刀也,故。。。
- 记录华为OBS文件上传下载多种方式
热门文章
- word和PDF手写电子签名
- 亚马逊多账号注册怎么操作?多账号注册有哪些解决方案?
- mysql mysql.sock连接_【MySQL】mysql.sock文件作用
- 计算机关机键 自动重启,电脑关机会重启如何处理_电脑关机立马自动启动的修复方法...
- python文件打开后闪退_python文件打开闪退要怎么处理?
- 离散概率分布的介绍及Python运用
- 基础的风光摄影技术控制
- 计算机快速看图教程,CAD快速看图使用电脑版软件操作教程
- Visio中添加、移动或删除形状上的连接点的方法
- 计算机网络信息安全毕业设计题目,网络信息安全系统毕业设计