From db14c51ee7e22f70d7adf900a8d5496da2a5211f Mon Sep 17 00:00:00 2001 From: tian jiax <446100073@qq.com> Date: Wed, 3 Jan 2024 13:46:38 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=A7=E5=93=81xml?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- leafAreaIndex/product.xml | 60 ++++++++ leafAreaIndex/sample_process.py | 202 +++++++++++++++++++++++++ soilMoistureTop/SoilMoistureMain.py | 4 +- soilMoistureTop/product.xml | 60 ++++++++ soilSalinity/lee_refined_filter_T3.exe | Bin 0 -> 192851 bytes soilSalinity/product.xml | 60 ++++++++ surfaceRoughness_oh2004/product.xml | 60 ++++++++ vegetationPhenology/product.xml | 60 ++++++++ vegetationPhenology/testxmlreading.py | 79 ++++++++++ 9 files changed, 583 insertions(+), 2 deletions(-) create mode 100644 leafAreaIndex/product.xml create mode 100644 leafAreaIndex/sample_process.py create mode 100644 soilMoistureTop/product.xml create mode 100644 soilSalinity/lee_refined_filter_T3.exe create mode 100644 soilSalinity/product.xml create mode 100644 surfaceRoughness_oh2004/product.xml create mode 100644 vegetationPhenology/product.xml create mode 100644 vegetationPhenology/testxmlreading.py diff --git a/leafAreaIndex/product.xml b/leafAreaIndex/product.xml new file mode 100644 index 00000000..017cb135 --- /dev/null +++ b/leafAreaIndex/product.xml @@ -0,0 +1,60 @@ + + + 后向散射系数 + BackScattering + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + None + 参考产品介绍PDF + + + + + 德清 + + + + \ No newline at end of file diff --git a/leafAreaIndex/sample_process.py b/leafAreaIndex/sample_process.py new file mode 100644 index 00000000..c32132e5 --- /dev/null +++ b/leafAreaIndex/sample_process.py @@ -0,0 +1,202 @@ +# +# 样本处理的相关的库 +# + +from tool.algorithm.image.ImageHandle import ImageHandler +import math +import numpy as np +import random +import scipy +# 最小二乘求解非线性方程组 +from scipy.optimize import leastsq,fsolve,root +from osgeo import gdal,gdalconst +import pandas as pds +from scipy import interpolate +from multiprocessing import pool +# 常量声明区域 +imageHandler=ImageHandler() + + +# python 的函数类 +def read_sample_csv(csv_path): + """ 读取样本的csv + Args: + csv_path (string): 样本csv的地址,绝对路径 + return: + [ + ['日期','样方编号','经度','纬度','叶面积指数',"后向散射系数"], + ['日期','样方编号','经度','纬度','叶面积指数',"后向散射系数"],...... + ] + """ + lai_csv=pds.read_csv(csv_path)# 代码测试区域 + lai_csv=lai_csv.loc[:,['id','lon','lat','leaf',"cal"]] + result=[] + for i in range(len(lai_csv)): + result.append([ + 0, + lai_csv.loc[i,'id'], + lai_csv.loc[i,'lon'], # lon,x + lai_csv.loc[i,'lat'], # lat,y + lai_csv.loc[i,'leaf'], + 10**(float(lai_csv.loc[i,'cal'])/10), + ]) + return result +def read_tiff(tiff_path): + """ 从文件中读取影像 + + Args: + tiff_path (string): 文件影像路径 + """ + im_proj, im_geotrans, im_arr=imageHandler.read_img(tiff_path) + return { + 'proj':im_proj, + 'geotrans':im_geotrans, + 'data':im_arr + } + +def ReprojectImages2(in_tiff_path,ref_tiff_path,out_tiff_path,resampleAlg=gdalconst.GRA_Bilinear): + """ 将输入影像重采样到参考影像的范围内 + + Args: + in_tiff_path (string): 输入影像 + ref_tiff_path (string): 参考影像 + out_tiff_path (string): 输出地址 + resampleAlg (gadlconst): 插值方法 + """ + # 若采用gdal.Warp()方法进行重采样 + # 获取输出影像信息 + inputrasfile = gdal.Open(in_tiff_path, gdal.GA_ReadOnly) + inputProj = inputrasfile.GetProjection() + # 获取参考影像信息 + referencefile = gdal.Open(ref_tiff_path, gdal.GA_ReadOnly) + referencefileProj = referencefile.GetProjection() + referencefileTrans = referencefile.GetGeoTransform() + bandreferencefile = referencefile.GetRasterBand(1) + x = referencefile.RasterXSize + y = referencefile.RasterYSize + nbands = referencefile.RasterCount + # 创建重采样输出文件(设置投影及六参数) + driver = gdal.GetDriverByName('GTiff') + output = driver.Create(out_tiff_path, x, y, nbands, bandreferencefile.DataType) + output.SetGeoTransform(referencefileTrans) + output.SetProjection(referencefileProj) + options = gdal.WarpOptions(srcSRS=inputProj, dstSRS=referencefileProj, resampleAlg=gdalconst.GRA_Bilinear) + gdal.Warp(output, in_tiff_path, options=options) + +def combine_sample_attr(sample_list,attr_tiff): + """ 构建样本 + + Args: + sample_list (list): 原样本 + attr_tiff (string): 添加的属性数据 + + Returns: + list:[sample,new_attr] + """ + result=[] + # 因为soil_tiff 的影像的 影像分辨率较低 + inv_gt=gdal.InvGeoTransform(attr_tiff['geotrans']) + for sample_item in sample_list: + sample_lon=sample_item[2] + sample_lat=sample_item[3] + sample_in_tiff_x=inv_gt[0]+inv_gt[1]*sample_lon+inv_gt[2]*sample_lat # x + sample_in_tiff_y=inv_gt[3]+inv_gt[4]*sample_lon+inv_gt[5]*sample_lat # y + x_min=int(np.floor(sample_in_tiff_x)) + x_max=int(np.ceil(sample_in_tiff_x)) + y_min=int(np.floor(sample_in_tiff_y)) + y_max=int(np.ceil(sample_in_tiff_y)) + if x_min<0 or y_min<0 or x_max>=attr_tiff['data'].shape[1] or y_max>=attr_tiff['data'].shape[0]: + continue + # + """ + f = interpolate.interp2d([0,0,1,1], [0,1,1,0], + [attr_tiff['data'][y_min,x_min], + attr_tiff['data'][y_max,x_min], + attr_tiff['data'][y_max,x_max], + attr_tiff['data'][y_min,x_min] + ], kind='linear') + interp_value=f(sample_in_tiff_x-x_min,sample_in_tiff_y-y_min) + sample_item.append(interp_value[0]) + """ + # 9x9 + x_min=x_min-4 if x_min-9>=0 else 0 + y_min=y_min-4 if y_min-9>=0 else 0 + x_max=x_max+4 if x_max+490: + continue + if sample_soil<=0 or sample_soil>=1: + continue + if sample_lai<=0 or sample_lai>=20: + continue + result.append(item) + # 绘制分布图 + # lai=[] + # sigma=[] + # csv_sigmas=[] + # text_label=[] + # for item in result: + # if len(item)==10: + # sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma,sample_NDVI=item + # else: + # sample_time,sample_code,sample_lon,sample_lat,sample_lai,csv_sigma,sample_soil,sample_inc,sample_sigma=item + # text_label.append(sample_code) + # lai.append(sample_lai) + # sigma.append(sample_sigma) + # csv_sigmas.append(csv_sigma) + # from matplotlib import pyplot as plt + # plt.scatter(np.array(lai),np.array(sigma),label="lai-tiff_sigma") + # for i in range(len(sigma)): + # plt.annotate(text_label[i], xy = (lai[i], sigma[i])) # 这里xy是需要标记的坐标,xytext是对应的标签坐标 + # + # plt.scatter(np.array(lai),np.array(csv_sigmas),label="lai-csv_sigmas") + # for i in range(len(csv_sigmas)): + # plt.annotate(text_label[i], xy = (lai[i],csv_sigmas[i])) # 这里xy是需要标记的坐标,xytext是对应的标签坐标 + # plt.legend() + # plt.show() + + return result + + + +def split_sample_list(sample_list,train_ratio): + """ 切分样本比值 + + Args: + sample_list (list): 样本列表 + train_ratio (double): 训练样本的比重 + + Returns: + list: [sample_train,sample_test] + """ + sample_train=[] + sample_test=[] + n=len(sample_list) + for i in range(n): + if random.random()<=train_ratio: + sample_train.append(sample_list[i]) + else: + sample_test.append(sample_list[i]) + return [sample_train,sample_test] \ No newline at end of file diff --git a/soilMoistureTop/SoilMoistureMain.py b/soilMoistureTop/SoilMoistureMain.py index 7bb6512c..871e112b 100644 --- a/soilMoistureTop/SoilMoistureMain.py +++ b/soilMoistureTop/SoilMoistureMain.py @@ -249,7 +249,7 @@ class MoistureMain: bp = BlockProcess() # block_size = bp.get_block_size(self.__rows, self.__cols,block_size_config) block_size = bp.get_block_size(self.__rows, self.__cols) - bp.cut(self.__workspace_preprocessed_path, self.__workspace_block_tif_path, ['tif', 'tiff'], 'tif', block_size) + bp.cut_new(self.__workspace_preprocessed_path, self.__workspace_block_tif_path, ['tif', 'tiff'], 'tif', block_size) logger.info('blocking tifs success!') img_dir, img_name = bp.get_file_names(self.__workspace_block_tif_path, ['tif']) @@ -339,7 +339,7 @@ class MoistureMain: h = ImageHandler.get_img_height(self.__preprocessed_paras['HH']) out_path = self.__workspace_processing_path[0:-1] tif_type = bp.get_tif_dtype(self.__preprocessed_paras['HH']) - bp.combine(data_dir, w, h, out_path, file_type=['tif'], datetype=tif_type) + bp.combine_new(data_dir, w, h, out_path, file_type=['tif'], datetype=tif_type) # 添加地理信息 soil_moisture_path = self.__workspace_processing_path + 'soil_moisture.tif' diff --git a/soilMoistureTop/product.xml b/soilMoistureTop/product.xml new file mode 100644 index 00000000..017cb135 --- /dev/null +++ b/soilMoistureTop/product.xml @@ -0,0 +1,60 @@ + + + 后向散射系数 + BackScattering + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + None + 参考产品介绍PDF + + + + + 德清 + + + + \ No newline at end of file diff --git a/soilSalinity/lee_refined_filter_T3.exe b/soilSalinity/lee_refined_filter_T3.exe new file mode 100644 index 0000000000000000000000000000000000000000..3b4839c111fa08a9f60a897c2f46862f00eeba61 GIT binary patch literal 192851 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 C{I>_k72ScVtA7RG;9~!U}zNtTZPP~hA4(W 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ℜ3>z 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 + + 后向散射系数 + BackScattering + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + None + 参考产品介绍PDF + + + + + 德清 + + + + \ No newline at end of file diff --git a/surfaceRoughness_oh2004/product.xml b/surfaceRoughness_oh2004/product.xml new file mode 100644 index 00000000..017cb135 --- /dev/null +++ b/surfaceRoughness_oh2004/product.xml @@ -0,0 +1,60 @@ + + + 后向散射系数 + BackScattering + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + None + 参考产品介绍PDF + + + + + 德清 + + + + \ No newline at end of file diff --git a/vegetationPhenology/product.xml b/vegetationPhenology/product.xml new file mode 100644 index 00000000..017cb135 --- /dev/null +++ b/vegetationPhenology/product.xml @@ -0,0 +1,60 @@ + + + 后向散射系数 + BackScattering + 5 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + None + 参考产品介绍PDF + + + + + 德清 + + + + \ No newline at end of file diff --git a/vegetationPhenology/testxmlreading.py b/vegetationPhenology/testxmlreading.py new file mode 100644 index 00000000..cc3a0377 --- /dev/null +++ b/vegetationPhenology/testxmlreading.py @@ -0,0 +1,79 @@ +#encoding=utf-8 +import xml.etree.ElementTree as ET +import pandas as pd +import csv + +def xml2csv(xmlpath): + tree_obj = ET.parse(xmlpath) + + # 得到所有匹配Region 标签的Element对象的list集合 + list_Region = tree_obj.findall("Region") + for Region in list_Region: + # 几何面对应的类(phenology_name)在标签 + Region_dict = Region.attrib + phenology_name = Region_dict.get("name") + print(phenology_name) + list_GeometryDef = Region.findall("GeometryDef") + list_Polygon = list_GeometryDef[0].findall("Polygon") # 获得该类下的几何面list + for polygon in list_Polygon: + # 从polygon list中获取得到标签的数据 注意是空格分隔的和csv中不同 + Coordinates_list = coordinates = polygon.find('.//Coordinates').text.strip().split() + # POLYGON((119.035 31.51,119.035 31.50,119.033 31.50)) csv中 + print("value") + +# 向csv中写 +def csvfile(csvpath,data): + + with open(csvpath, 'a', newline='') as file: + # 2. step + writer = csv.writer(file) + # data example + #data = ["This", "is", "a", "Test"] + writer.writerow(data) + + +# Define the structure of the data +#data示例 student_header = ['name', 'age', 'major', 'minor'] +def csvcreateTitile(csvpath,data): + # 1. Open a new CSV file + with open(csvpath, 'w') as file: + # 2. Create a CSV writer + writer = csv.writer(file) + # 3. Write data to the file + writer.writerow(data) + +# 将列表中的坐标对转换为字符串 +def createcsv_roi_polygon(coordinates): + coord_str = ', '.join([f'{coordinates[i]} {coordinates[i + 1]}' for i in range(0, len(coordinates), 2)]) + # 构建最终的POLYGON字符串 + polygon_str = f'POLYGON(({coord_str}))' + print(polygon_str) + return polygon_str + +if __name__ == '__main__': + xmlpath = r"E:\MicroWorkspace\GF3A_nanjing\input-ortho\test_shp\test.xml" + + tree_obj = ET.parse(xmlpath) + csv_header = ['sar_img_name', 'phenology_id', 'phenology_name', 'roi_polygon'] + csvpath = r"E:\MicroWorkspace\GF3A_nanjing\input-ortho\test_shp\test.csv" + # csvcreateTitile(csvpath,csv_header) + csvfile(csvpath,csv_header) + # 得到所有匹配Region 标签的Element对象的list集合 + list_Region = tree_obj.findall("Region") + for Region in list_Region: + # 几何面对应的类(phenology_name)在标签 + Region_dict = Region.attrib + phenology_name = Region_dict.get("name") + print(phenology_name) + # list_GeometryDef = Region.findall("GeometryDef") + list_Polygon = Region.findall(".//Polygon") # 获得该类下的几何面list + count = 1 + for polygon in list_Polygon: + # 从polygon list中获取得到标签的数据 注意是空格分隔的和csv中不同 + Coordinates_list = coordinates = polygon.find('.//Coordinates').text.strip().split() + # 将坐标和ploygon对应的写入到.csv中 + polygon_str=createcsv_roi_polygon(Coordinates_list) + # POLYGON((119.035 31.51,119.035 31.50,119.033 31.50)) csv中 + data = ['0', count, phenology_name, polygon_str] + csvfile(csvpath,data) + count += 1