from tool.algorithm.image.ImageHandle import ImageHandler import numpy as np from xml.etree.ElementTree import ElementTree, Element class header_file_read_angle(): """从_incidence.xml文件中读取角度,计算雷达入射角。""" def __init__(self): pass def read_all_angle(self,incidence_file,hight,width): """从_incidence.xml文件中读取角度,存到一个数组中""" tree = ElementTree() tree.parse(incidence_file) # 影像头文件 root = tree.getroot() element_trees = list(root) all_angle_array=np.zeros((hight,width),dtype=float) a=0 for i in range(0, len(element_trees)): if element_trees[i].tag=='incidenceValue': a=i break for j in range(0, width): all_angle_array[:,j]=element_trees[j+a].text return all_angle_array def get_orisim_angle(self, ori_sim_file, all_angle_array, header_height, header_width): """根据ori_sim.tif文件记录的行列号去取对应的雷达入射角 ori_sim_file:正射产品 all_angle_array:从incidence.xml读取的所有雷达入射角数组 header_height:轨道参数文件记录的高 header_width:轨道参数文件记录的宽 """ height_array = ImageHandler.get_band_array(ori_sim_file, 1) width_array = ImageHandler.get_band_array(ori_sim_file, 2) img_height=ImageHandler.get_img_height(ori_sim_file) # 读取影像的高度 img_width= ImageHandler.get_img_width(ori_sim_file) # 读取影像的宽度 angle_array=np.zeros((img_height, img_width),dtype=float) # 存放角度的空矩阵 for i in range(0,img_height): for j in range(0, img_width): x=height_array[i,j] # 取出行数值 y=width_array[i,j] # 取出列数值 if x>0 and y>0: if x