microproduct/atmosphericDelay-s1a/Delay_test.py

119 lines
5.3 KiB
Python
Raw Normal View History

2024-12-18 03:03:53 +00:00
from AtmosphericDelayAuxData import NcHandle,ReadImage
from AtmosphericDelayAlg import AtmosphericDelay as Ady
from tool.algorithm.image import ImageHandle
from tool.algorithm.algtools.PreProcess import PreProcess as pp
import gc
import os
from pathlib import Path
env_str = os.path.split(os.path.realpath(__file__))[0]
os.environ['PROJ_LIB'] = env_str
def searchfile(source, pattern='*', recursive=False):
if not isinstance(source, Path):
source = Path(source)
if source.is_dir() and source.exists():
if recursive:
res = list(source.rglob(pattern))
else:
res = list(source.glob(pattern))
else:
print(f"{source} is a file path or folder path is not exists!")
return [] # False
file_list = [i for i in res if i.is_file()]
return file_list
def get_nc_dic(nc_dir):
imageHandler = ImageHandle.ImageHandler()
arr_dict = {}
nc_list = ["AuxiliaryNC_geo_h", "AuxiliaryNC_re_hum", "AuxiliaryNC_temp",
"MasterNC_geo_h", "MasterNC_re_hum", "MasterNC_temp"]
arr_name = ["a_geo", "a_re_hum", "a_temp", "m_geo", "m_re_hum", "m_temp"]
path = nc_dir
for i in range(0, len(nc_list)):
in_path = path + nc_list[i] + ".tif"
array = imageHandler.get_all_band_array(in_path)
arr_dict.update({arr_name[i]: array})
return arr_dict["a_geo"], arr_dict["a_re_hum"], arr_dict["a_temp"], arr_dict["m_geo"], arr_dict["m_re_hum"], arr_dict["m_temp"]
def resampe_image(aux_dry_wet_unresame_path, mas_dry_wet_unresame_path, temp_dir):
"""
将延迟图ztd恢复为非正方形的样子
para: aux_dry_wet_unresame_path待裁剪的辅影像延迟图路径
para: mas_dry_wet_unresame_path待裁剪的主影像延迟图路径
return :裁剪后的辅影像延迟图路径主影像延迟图路径
"""
# 1.3 裁剪主辅影像延迟值
out_aux_dry_wet_resamed_path = temp_dir + "resamed_aux_dry_wet.tif"
out_mas_dry_wet_resamed_path = temp_dir + "resamed_mas_dry_wet.tif"
pp.resampling_by_scale(aux_dry_wet_unresame_path, out_aux_dry_wet_resamed_path,
temp_dir + "MasterNC_geo_h.tif")
pp.resampling_by_scale(mas_dry_wet_unresame_path, out_mas_dry_wet_resamed_path,
temp_dir + "MasterNC_geo_h.tif")
return out_aux_dry_wet_resamed_path, out_mas_dry_wet_resamed_path
if __name__ == '__main__':
import cv2
import numpy as np
import matplotlib.pyplot as plt
# 读取图像
fn = r'C:\Users\sxwcc\Documents\WeChat Files\wxid_faon3oi4svdh22\FileStorage\File\2023-12\Byte.tif'
out = r'D:\micro\LWork\VegetationHeight\Temporary\test.tif'
image = cv2.imread(fn, 1) # 以灰度模式读取图像
# image[np.where(image == 150)] = 0
# 定义膨胀核
kernel = np.ones((50, 50), np.uint8) # 5x5 的全 1 矩阵
# 进行膨胀操作
dilated_image = cv2.dilate(image, kernel, iterations=1)
cv2.imwrite(out, dilated_image)
plt.figure()
plt.matshow(dilated_image)
plt.title("ref flat unwrap angle") # 绝对相位
plt.show()
# mas_nc = r'F:\干涉大气延迟校正\大气延迟检验\大气延迟检验\ERA5_N25_N35_E115_E125_20220910_10.nc'
# aux_nc = r'F:\干涉大气延迟校正\大气延迟检验\大气延迟检验\ERA5_N25_N35_E115_E125_20220922_10.nc'
# dem_file = r''
# temp_dir = 'F://干涉大气延迟校正//大气延迟检验//大气延迟检验//nc_file//test//'
# out_path = 'F://干涉大气延迟校正//大气延迟检验//大气延迟检验//nc_file//'
#
# # 读取气象数据
# ncHandle = NcHandle()
# imageHandle = ImageHandle.ImageHandler()
# ncHandle.tran_tif(mas_nc, out_path, "MasterNC")
# ncHandle.tran_tif(aux_nc, out_path, "AuxiliaryNC")
#
# a_geo, a_re_hum, a_temp, m_geo, m_re_hum, m_temp = get_nc_dic(out_path)
#
# base_file = out_path + "MasterNC_geo_h.tif" # 用来获取裁剪后气象数据的经纬度、分辨率等信息
#
# # 1.2 计算主、辅影像垂直分层湿干延迟值,并保存干湿延迟图
# m_cdstack_dry_wet = Ady().aps_wrf_sar(base_file, m_temp, m_re_hum, m_geo, dem_file) # 主影像垂直分层干湿延迟值数组
# m_dry_wet_path = out_path + "m_dry_wet.tif" # 主影像干湿延迟图保存路径
# Ady().write_dry_wet_tif(dem_file, base_file, m_cdstack_dry_wet, m_dry_wet_path)
#
# a_cdstack_dry_wet = Ady().aps_wrf_sar(base_file, a_temp, a_re_hum, a_geo, dem_file) # 辅影像垂直分层干湿延迟值数组
# a_dry_wet_path = out_path + "a_dry_wet.tif" # 辅影像干湿延迟图保存路径
# Ady().write_dry_wet_tif(dem_file, base_file, a_cdstack_dry_wet, a_dry_wet_path)
# #
#
# aux_dry_wet_resamed_path, mas_dry_wet_resamed_path = resampe_image(a_dry_wet_path, m_dry_wet_path, temp_dir) # 参照气象数据分辨率进行重采样
#
# gc.collect() # 回收内存
# # 1.4 输出主辅影像ztd数组
# a_ztd = Ady().calc_ztd(a_dry_wet_path, dem_file) # 辅影像的ztd数组
# m_ztd = Ady().calc_ztd(m_dry_wet_path, dem_file) # 主影像的ztd数组
# out_aux_ztd_path = out_path + "aux_ztd.tif"
# out_mas_ztd_path = out_path + "mas_ztd.tif"
# Ady().write_ztd_tif(dem_file, base_file, a_ztd, out_aux_ztd_path) # ztd数组->ztd影像
# Ady().write_ztd_tif(dem_file, base_file, m_ztd, out_mas_ztd_path) # ztd数组->ztd影像