diff --git a/AWRAMS0.py b/AWRAMS0.py deleted file mode 100644 index 201fcb2..0000000 --- a/AWRAMS0.py +++ /dev/null @@ -1,1419 +0,0 @@ -#! python3 -# -*- encoding: utf-8 -*- -''' -@File : AWRAMS.py -@Time : 2023/02/23 14:24:45 -@Author : Jim @ Yiwin -@Version : 1.0 -@Contact : jim@yi-win.com -@Desp : 将接收的文件转到新文件夹,并解析数据 - 调用方法: - a = AWRAMS(cfg,retrieve) - src_dir = DATA_DIR.joinpath( str(id), str(con) ) - a.readOneFolder(src_dir) -''' - -import struct,time -from pathlib import Path, PurePath -from typing import List -from enum import Enum -import numpy as np -from myexception import MyException -from mylogger import log -from myconfig import ROWFACTOR,SAVE_EXT_NAME,TOKEN,SEPARATOR,NEWLINE,DATA_DIR,OUTPUT_DIR -from myconfig import RamsesAWRAMS,RamsesSURFACE,RamsesPROFILE,DeviceType -from Ramses import Ramses -from saveList2File import SaveList2File -from mytime import MyTime - - -# class RamsesFunc(Enum): -# Lsky = 1 -# Lwater = 2 -# Esky = 3 - - -class HandHeldBuf: - def __init__(self,) -> None: - self.__buf = b'' - self.__head = {} - self.__begin_sign = b'\x23' - self.__end_sign = b'\x0D' - self.data_ip = b'' - self.measure_group = { - "Lsky": b'', - "Esky": b'', - "Lwater": b'', - } - self.one_group_data= b'' - self.state = 0 - - def readFile2Buf(self, fpath) -> None: - with open(fpath,"rb") as f: - self.__buf = f.read() - pass - pass - - def read_buf(self, size: int) -> bytes: - if size > self.__buf.__len__(): - return b'' - ret = self.__buf[0:size] - self.__buf = self.__buf[size:] - return ret - - def write_buf(self, buf: bytes) -> None: - - len = buf.__len__() - # logging.info(f'Received ID:{id} Size:{len}') - self.__buf = self.__buf+buf - - def get_buf_size(self) -> int: - return self.__buf.__len__() - - def back_bytes(self, buf: bytes) -> None: - self.__buf = buf+self.__buf - - def reset_head(self) -> None: - self.__head = {} - - def reset_buf(self) -> None: - self.__buf = b'' - - def getResult(self) -> str: - return self.res - - def resetMeasureGroup(self) -> None: - self.measure_group['Lsky'] = b'' - self.measure_group['Esky'] = b'' - self.measure_group['Lwater'] = b'' - - def getMeasureGroup(self) -> dict: - return self.measure_group - - def decode_handheld(self) -> bool: - '''以26个字节开始,一般26个00 ,然后23... 07.... ''' - if self.get_buf_size() < 1754: - self.__buf = b'' - return False - - self.data_ip = self.read_buf(26) - Lsky = self.read_buf(576) - Esky = self.read_buf(576) - Lwater = self.read_buf(576) - - self.measure_group['Lsky'] = self.deal_576_to_512(Lsky) - self.measure_group['Esky'] = self.deal_576_to_512(Esky) - self.measure_group['Lwater'] = self.deal_576_to_512(Lwater) - - if self.measure_group['Lsky'] == b'' \ - or self.measure_group['Esky'] == b'' \ - or self.measure_group['Lwater'] == b'' : - return False - - return True - - def decode_one_group_handheld(self) -> bool: - '''以26个字节开始,一般26个00 ,然后23... 07.... ''' - if self.get_buf_size() < 1754: - self.__buf = b'' - return False - - self.data_ip = self.read_buf(26) - self.one_group_data = self.read_buf(1728) - - return True - - def deal_576_to_512(self,data:bytes) -> bytes: - ''' 576字节校验,拆分成字典 23... 07.... ,然后254*2''' - ret = {} - index = 72 - for i in range(8): - temp = data[i*index : i*index+index] - # print( temp.hex()) - if temp[0] != 35 and temp[0]<8 and temp>0 : - return b'' - pass - ret.update( { temp[4]: temp} ) - if len(ret) != 8: - return b'' - ret_byte = ret[7][7:71]+ ret[6][7:71]+ ret[5][7:71]+ ret[4][7:71] \ - + ret[3][7:71]+ ret[2][7:71]+ ret[1][7:71]+ ret[0][7:71] - return ret_byte - - - def decode(self) -> str: - ret = '' - temp_buf = b'' - token = ";" - if TOKEN: - token = TOKEN - - if self.state == 0: - while self.get_buf_size() >= 1: - if self.read_buf(1) != self.__end_sign: - continue - self.state = 1 - break - - if self.state == 1: - while self.get_buf_size() >= 1: - buf = self.read_buf(1) - if buf != self.__end_sign: - temp_buf += buf - if buf == self.__end_sign: - ret = temp_buf[0:20].decode( - 'utf-8').strip(" ") + token + temp_buf[-9:-1].decode('utf-8').strip(" ") - log.info(f"decode : {ret}") - temp_buf = b'' - self.back_bytes(temp_buf) # 写回临时buf到 - self.res = ret - return ret - pass - -class AWRAMS(object): - def __init__(self, ): - """ - @description : 手持数据初始化 - """ - self.device_type = DeviceType.AWRAMS.name - self.device_enum = None - self.device_id = {} - self.syscfg = {} - self.retrieve ={} - self.error_result=[] - self.base_purepath = PurePath() - self.base_path = Path() - self.current_path = Path() - self.data_path = DATA_DIR - self.output_path = OUTPUT_DIR - self.old_folder = Path() - self.new_folder = Path() - self.info_path_fname:Path = Path() - self.sensor_path_fname:Path = Path() - self.filelist = [] # 包含了全部路径信息 - self.intensity_before_avg = None - self.intensity_after_avg = {} # 最终结果{lsky: esky: lwater: } - self.intensity_after_interpo = {} # 最终结果{lsky: esky: lwater: } - - self.one_group_result = {} # 三个传感器数据,平均后的 - self.wavelength = np.array([]) - self.real_wavelength = {} # 最终结果{lsky: esky: lwater: } - self.current_filepath = '' # 不含后缀 - self.current_measure_time = None # 当前测量时间 - self.measurement_interval = 0 - self.measurement_repeat = 1 - self.sl2f = SaveList2File() - self.my_time = MyTime() - self.hhb = HandHeldBuf() - self.ramses = Ramses() - self.info_dict = {} - self.res = {} # 最终结果{lsky: esky: lwater: Lw: Rs:} - - # 方法 - self.setDeviceEnum() - pass - - def setDeviceEnum(self, ): - if self.device_type == DeviceType.SURFACE.name: - self.device_enum = RamsesSURFACE - if self.device_type == DeviceType.AWRAMS.name: - self.device_enum = RamsesAWRAMS - if self.device_type == DeviceType.PROFILE.name: - self.device_enum = RamsesPROFILE - - def setOldFolder(self, tuple_path:tuple): - self.old_folder = self.base_path.joinpath( *tuple_path ) - - def getInfoDict(self, ): - info_path = self.old_folder.joinpath("info.bin") - hexbin = self.read_bin(info_path) - self.info_dict = self.decode_info(hexbin) - self.new_folder = self.getNewFolderFromOldFolder() - - def transferFromOldFolder(self, ): - log.info( f"transferFromOldFolder: ", __name__ ) - self.getNewFolderFromOldFolder() - bin_files = self.old_folder.glob('*.bin') - for bf in bin_files: - if bf.name == "pic.bin": - bf.replace( self.new_folder.joinpath( "pic.jpg" ) ) - else: - bf.replace( self.new_folder.joinpath(bf.name) ) - pass - - def deleteOldFolder(self, ): - log.info( f"deleteOldFolder: ", __name__ ) - self.sl2f.setBasePath(self.old_folder) - self.sl2f.deleteDir() - self.old_folder = DATA_DIR - - def setHandHeldBuf( self ) : - buf = b'' - bin_files = self.new_folder.glob( '*.bin' ) - tmp_dict = { } - for bf in bin_files: - if bf.stem.isdigit(): - tmp_dict.update({ int(bf.stem): bf } ) - - len_bin = len(tmp_dict) - if len_bin==0 : - self.hhb.write_buf(b'') - return False - bin_key = tmp_dict.keys() - - for i in range(len_bin) : - if i not in bin_key: - log.warning(f" could find {i}.bin file") - else: - tmp_buf = self.read_bin(tmp_dict[i]) - buf += tmp_buf - self.hhb.write_buf(buf) - pass - - def getNewFolderFromOldFolder( self, ) -> Path: - # 服务器上转移后的模式 - tmp_folder = self.old_folder.parent.parent - path_tuple = ("20"+str(self.info_dict['year']) - ,str(self.info_dict['month']) - ,str(self.info_dict['day']) - ,self.old_folder.parts[-1] ) - self.new_folder =tmp_folder.joinpath(*path_tuple) - self.sl2f.setBasePath(self.new_folder) - self.sl2f.newPathIfNot() - pass - - def getSensorPathFromInfoPath( self, info_path:Path, mode:int=0) -> Path: - # 服务器上转移后的模式 - if mode == 1: - sensor_path = self.base_path.joinpath( - info_path.parent, - "sensor.bin" - ) - - # SD卡上未拷贝的模式 - sensor_path = self.base_path.joinpath( - "data", - info_path.parts[1][:4] + "_" + info_path.parts[1][-2:], - info_path.parts[2], - "sensor", - info_path.name - ) - return sensor_path - pass - - def getOutputPathFromSensorPath(self,sensor_path:Path, mode:int=0) -> Path: - output_path = self.base_path.joinpath( - "data", - "output", - sensor_path.parts[1][:4] + "_" + sensor_path.parts[1][-2:] \ - + "_" +sensor_path.parts[2] + "_" +sensor_path.name - ) - return output_path - pass - - def getCurrentMeasureTimeFromPath(self,fpath:Path, mode:int=0) -> str: - ret = fpath.parts[1][:4]+"-"+fpath.parts[1][-2:]+"-"+fpath.parts[2]+" " - hour = fpath.name[0:2] - minute = fpath.name[3:5] - second = fpath.name[6:8] - ret = ret + hour + ":" + minute + ":" + second - return ret - pass - - def getDataFileList(self, mode:int = 0): - ''' - 获得成对的info sensor 文件 - [目录名,文件名,年月日,时间, measure_id] - ''' - # ret = [] - fs = None - if mode == 1: - fs = self.data_path.glob( "*/*/*/*/info.bin" ) - fs = self.data_path.glob( "*/*/info/*" ) - for f in fs: - error_file = {} - if f.stat().st_size==0: - error_file.update( {"path": f } ) - error_file.update( {"error":"info file size is zero"} ) - self.error_result.append(error_file) - continue - - # self.info_path_fname = f - sensor_path = self.getSensorPathFromInfoPath(f) - # sensor_path = Path(sensor_purepath) - # sensor 文件不存在 - if not sensor_path.exists(): - error_file.update( {"path":f} ) - error_file.update( {"error":"cannot find the sensor file "} ) - self.error_result.append(error_file) - continue - - # sensor文件大小为0 - if sensor_path.stat().st_size==0: - error_file.update( {"path":f} ) - error_file.update( {"error":"the file size of the sensor is zero' "} ) - self.error_result.append(error_file) - continue - - self.setFilelist(f,sensor_path,mode=mode) - - pass - - def setFilelist(self, info_path:Path, sensor_path:Path, mode:int = 0): - temp = {} - temp.update( {"info_path" : info_path } ) - temp.update( {"name" : info_path.name} ) - temp.update( {"parent" : info_path.parent} ) - - if mode==1: # 服务器转移后目录 - temp.update( {"year" : info_path.parts[-5] } ) - temp.update( {"month" :info_path.parts[-4] } ) - temp.update( {"day" :info_path.parts[-3] } ) - - temp.update( {"year" : info_path.parts[1][:4] } ) - temp.update( {"month" :info_path.parts[1][-2:] } ) - temp.update( {"day" :info_path.parts[2] } ) - # temp.update( {"hour" :info_path.parts[-1][:2] } ) - # temp.update( {"minute" :info_path.parts[-1][3:5] } ) - # temp.update( {"second" :info_path.parts[-1][6:8] } ) - temp.update( { "sensor_path" :sensor_path } ) - self.filelist.append(temp) - - def getDataFileList_SD(self, ): - ''' - 获得成对的info sensor 文件 - [目录名,文件名,年月日,时间] - ''' - # ret = [] - fs = self.data_path.glob( "*/*/info/*" ) - for f in fs: - error_file = {} - if f.stat().st_size==0: - error_file.update( {"path": f.name } ) - error_file.update( {"error":"info file size is zero"} ) - self.error_result.append(error_file) - continue - self.info_path_fname = f - sensor_path = self.getSensorPathFromInfoPath(f) - # sensor_path = Path(sensor_purepath) - # sensor 文件不存在 - if not sensor_path.exists(): - error_file.update( {"path":f} ) - error_file.update( {"error":"cannot find the sensor file "} ) - self.error_result.append(error_file) - continue - - # sensor文件大小为0 - if sensor_path.stat().st_size==0: - error_file.update( {"path":f} ) - error_file.update( {"error":"the file size of the sensor is zero' "} ) - self.error_result.append(error_file) - continue - - temp = {} - temp.update( {"info_path" : f} ) - temp.update( {"name" :f.name} ) - temp.update( {"parent" :f.parent} ) - temp.update( {"year" :f.parts[1][:4] } ) - temp.update( {"month" :f.parts[1][-2:] } ) - temp.update( {"day" :f.parts[2] } ) - temp.update( {"hour" :f.parts[-1][:2] } ) - temp.update( {"minute" :f.parts[-1][3:5] } ) - temp.update( {"second" :f.parts[-1][6:8] } ) - temp.update( { "sensor_path" :sensor_path } ) - self.filelist.append(temp) - # print(self.filelist) - pass - - def dealAllMeasurements(self, ): - log.info(f"dealAllMeasurements: 所有测量文件", __name__, "dealAllMeasurements", ) - if len(self.filelist)<1: - pass - # 前面已经考虑各种文件错误 - for df in self.filelist: - # 处理信息帧 - self.info_dict = {} - self.info_path_fname:Path = df["info_path"] - self.sensor_path_fname:Path = df["sensor_path"] - hex_info = self.read_bin( self.info_path_fname ) - try: - self.info_dict = self.decode_info( hex_info ) - except: - log.error( f"处理信息文件" - + "/" +self.info_path_fname.stem - + "出现错误", __name__, "dealAllMeasurements" ) - raise MyException( "处理文件"+ self.info_path_fname + "出现错误") - pass - - # self.measurement_interval = self.data_info['Measure_Interval'] - # self.measurement_repeat = self.data_info['Measure_Repeat'] - - try: - self.dealOneMeasurement(self.sensor_path_fname ) - except Exception as e: - log.error( "处理传感器文件" + self.sensor_path_fname.stem + "出现错误",__name__,"dealAllMeasurements") - raise MyException( "处理传感器文件" + self.sensor_path_fname.stem + "出现错误" ) - pass - log.info(f"all is done !! ",__name__,"dealAllMeasurements") - return True,self.error_result - pass - - def dealOneMeasurement(self, fpath:Path): - '''handheld一次测量包含多组数据''' - # 调用handheldbuf 处理,将一组数据提交出来 - log.info(f"dealOneMeasurement: 一组测量数据", __name__, "dealOneMeasurement") - # if len(self.filelist)<1: - # pass - - # 当前文件名 - self.current_filepath = fpath - self.current_measure_time = self.getCurrentMeasureTimeFromPath(fpath) - self.hhb.readFile2Buf(fpath) - - # 解析Buf, 对buf分组,获得[{lsky: esky : lwater} .... ] - self.decode_senser_buf() - self.output_path = self.getOutputPathFromSensorPath( fpath ) - self.dealOneGroup() - - def dealOneMeasurement_online(self, ): - '''handheld一次测量包含多组数据''' - # 调用handheldbuf 处理,将一组数据提交出来 - log.info(f"deal : 一组测量数据", __name__, "dealOneMeasurement_online") - - # 当前文件名 - self.current_filepath = self.new_folder - self.current_measure_time = self.info_dict['time'] - self.setHandHeldBuf() - - # 解析Buf, 对buf分组,获得[{lsky: esky : lwater} .... ] - self.decode_senser_buf() - self.output_path = self.new_folder - self.dealOneGroup() - - def dealOneGroup(self, ): - # 分组,并获得平均值, 255个未插值结果 (依据 measurement_interval measurement_repeat) - self.getAvg( self.intensity_before_avg ) - - # 插值 - self.real_wavelength = self.getWavelenthDict() - self.__do_sensor_dict_interpo() - self.__get_Lw_Rs() - - # 保存数据 - time_name = "20" + str(self.info_dict['year']) \ - + '_' + str(self.info_dict['month']) \ - + '_' + str(self.info_dict['day']) \ - + '_' + str(self.info_dict['hour']) \ - + '_' + str(self.info_dict['minute']) \ - + '_' + str(self.info_dict['second']) - save_path_csv = self.new_folder.joinpath(time_name + SAVE_EXT_NAME) - self.doSaveCsv(save_path_csv) - path_info_txt = self.new_folder.joinpath( time_name + "_info.txt" ) - self.save_dict_to_file( self.info_dict, path_info_txt ) - - def decode_senser_buf(self,) : - # 处理Buf,对多组数据取平均 - self.intensity_before_avg = [] - # res_before_avg = [] - self.clearRes() # 清空数据 - while True: - if not self.hhb.decode_one_group_handheld() : - break # 清空数据 - - res = {} - buf = self.hhb.one_group_data[26:] - for i in range(1,4,1): - temp_buf = buf[7:71] + buf[79:143] + \ - buf[151:215] + buf[223:287] + \ - buf[295:359] + buf[367:431] + \ - buf[439:503] + buf[511:575] - - # Ramses类 标定处理,设置buf 标定文件 - self.ramses.setBuf(temp_buf) - func = self.getFuncBySeq(i) - cfg = self.getCfgByFunc( func) - self.ramses.setCalCfg(cfg) - self.ramses.resetItSpectrum() - self.ramses.ConvertAndCalibrate() - res.update({ func : self.ramses.spectrum }) - self.intensity_before_avg.append( res ) - pass - - def getAvg( self, d:list) : - log.info(f"getAvg: 平均多组数据", __name__, "getAvg") - data = d - ret = {} - len_result = len(data) - if len_result == 0: - self.intensity_after_avg ={} - return None - if len_result == 1: - self.intensity_after_avg = data[0] - return None - ret = data[0] - - res_dict = self.getRetDict() - - for k in res_dict.keys(): - for i in range(1,len_result,1): - data[0][k] = data[0][k] + data[i][k] - ret = data[0][k]/len_result - self.intensity_after_avg.update( { k : ret } ) - log.debug(f"getAvg: {self.intensity_after_avg}", __name__, "getAvg") - pass - - def getRetDict(self,) : - ret_dict = { } - ret_dict.update( {self.device_enum(1).name:np.array([])} ) - ret_dict.update( {self.device_enum(2).name:np.array([])} ) - ret_dict.update( {self.device_enum(3).name:np.array([])} ) - # self.one_group_result = ret_dict - return ret_dict - - def __do_sensor_dict_interpo(self,) : - log.info( f"同步处理多个个插值 ", __name__, "__do_sensor_dict_interpo" ) - self.clearRes() - for k in self.intensity_after_avg.keys(): - tmp = np.interp( self.wavelength, self.real_wavelength[k], self.intensity_after_avg[k] ) - self.res.update( { k : tmp } ) - - def getCfgByDid(self, func:str) : - cfg_id:dict = self.syscfg.get(int(self.device_id)) - cfg_sensor = cfg_id.get( func) - return cfg_sensor - pass - - def getFuncBySeq(self, seq:int) : - func = "" - if self.device_type == DeviceType.AWRAMS.name: - func = RamsesAWRAMS(seq).name - if self.device_type == DeviceType.SURFACE.name: - func = RamsesAWRAMS(seq).name - if self.device_type == DeviceType.PROFILE.name: - func = RamsesAWRAMS(seq).name - return func - - def getCfgByFunc(self, func:str) : - cfg_id:dict = self.syscfg.get(int(self.device_id)) - cfg_sensor = cfg_id.get( func) - return cfg_sensor - pass - - def getCfgBySeq(self, seq:int) : - func = "" - if self.device_type == DeviceType.AWRAMS.name: - func = RamsesAWRAMS(seq).name - if self.device_type == DeviceType.SURFACE.name: - func = RamsesAWRAMS(seq).name - if self.device_type == DeviceType.PROFILE.name: - func = RamsesAWRAMS(seq).name - cfg_id:dict = self.syscfg.get(int(self.device_id)) - cfg_sensor = cfg_id.get( func) - return cfg_sensor - pass - - def __get_Lw_Rs(self, ) -> bool: - Lw = self.res["Lwater"] - ROWFACTOR * self.res["Lsky"] - self.res.update({ "Lw" : Lw }) - Rs = self.res["Lw"] / self.res["Esky"] - self.res.update({ "Rs" : Rs }) - pass - - def doSaveCsv(self, save_path:Path) : - header = self.list2header(self.wavelength.tolist(), TOKEN, str(self.device_id)+"_"+str(self.measure_id)) - data_str = "" - for k,v in self.res.items(): - data_str = data_str + NEWLINE + \ - self.list2header(self.res[k].tolist(),TOKEN,k) - save_path.write_text(header+data_str) - - def list2header(self, lst:List[float], separator:str, first_column:str=None): - ''' list 转为字符,作为文件头,是否有额外第一列''' - # temp = separator.join(lst) - tmpstr = "" - - if first_column: - tmpstr = tmpstr + first_column - - for l in lst: - tmpstr = tmpstr + separator + str(round(l,8)) - return tmpstr - - def checkAndSaveData(self, ) -> bool: - """ - check self.Lsky Esky Lwater and Save - 处理self.res 的数据 - """ - log.info(f"checkAndSaveData: {self.output_path.parts}", __name__) - self.sl2f.setBasePath(self.output_path) #基路径 - self.sl2f.setHeader( self.wavelength.tolist(), TOKEN, "device_id_"+str(self.device_id) ) - # print(f"header_str : {self.sl2f.header_str[-1:]}") - - self.sl2f.newFileIfNot("Lsky"+SAVE_EXT_NAME) - if self.sl2f.checkHeader() == -1: - log.error(f"请备份文件:{self.sl2f.current_filepath.parent} {self.sl2f.current_filepath.name}, 并删除文件后再试!", __name__) - raise MyException( f"请备份文件:{self.sl2f.current_filepath.parent} {self.sl2f.current_filepath.name}, 并删除文件后再试!" ) - return False - if self.sl2f.checkHeader() == 1: - pass - if self.sl2f.checkHeader() == 0: - self.sl2f.writeHeader() - pass - # 写入数据content - self.sl2f.setContent(self.res["Lsky"].tolist(), TOKEN, self.current_measure_time) - self.sl2f.writeContent() - - - self.sl2f.newFileIfNot("Esky"+SAVE_EXT_NAME) - # self.sl2f.setHeader( self.wavelength.tolist(), TOKEN, str(self.device_id) ) - if self.sl2f.checkHeader() == -1: - log.error(f"请备份文件:{self.sl2f.current_filepath.parent} {self.sl2f.current_filepath.name}, 并删除文件后再试!", __name__) - raise MyException( f"请备份文件:{self.sl2f.current_filepath.parent} {self.sl2f.current_filepath.name}, 并删除文件后再试!" ) - return False - if self.sl2f.checkHeader() == 1: - pass - if self.sl2f.checkHeader() == 0: - self.sl2f.writeHeader() - pass - # 写入数据 - self.sl2f.setContent(self.res["Esky"], TOKEN, self.current_measure_time) - self.sl2f.writeContent() - - self.sl2f.newFileIfNot("Lwater"+SAVE_EXT_NAME) - # self.sl2f.setHeader( self.wavelength.tolist(), TOKEN, str(self.device_id) ) - if self.sl2f.checkHeader() == -1: - log.error(f"请备份文件:{self.sl2f.current_filepath.parent} {self.sl2f.current_filepath.name}, 并删除文件后再试!", __name__) - raise MyException( f"请备份文件:{self.sl2f.current_filepath.parent} {self.sl2f.current_filepath.name}, 并删除文件后再试!" ) - return False - if self.sl2f.checkHeader() == 1: - pass - if self.sl2f.checkHeader() == 0: - self.sl2f.writeHeader() - pass - # 写入数据 - self.sl2f.setContent( self.res["Lwater"], TOKEN, self.current_measure_time ) - self.sl2f.writeContent() - - # def clearLskyEskyLwater(self, ) -> None: - # self.res = { } - - def clearRes(self, ) -> None: - self.res = { } - - def checkLskyEskyLwater(self, ) -> bool: - if not self.res["Lsky"] : - return False - if not self.res["Esky"] : - return False - if not self.res["Lwater"] : - return False - return True - - def getLwRsAndSave(self, ) -> bool: - """ - 并计算Lw Rs并保存 - """ - self.Lw = self.res["Lwater"] - ROWFACTOR * self.res["Lsky"] - self.Rs = self.Lw / self.res["Esky"] - self.sl2f.setBasePath(self.output_path) #基路径 - - # 保存 - self.sl2f.newFileIfNot("Lw"+SAVE_EXT_NAME) - # self.sl2f.setHeader( self.wavelength.tolist(), TOKEN, str(self.device_id) ) - if self.sl2f.checkHeader() == -1: - raise MyException( f"请备份文件:{self.sl2f.current_filepath.cwd()}, 并删除文件后再试!" ) - return False - if self.sl2f.checkHeader() == 1: - pass - if self.sl2f.checkHeader() == 0: - self.sl2f.writeHeader() - pass - # 写入数据 - self.sl2f.setContent(self.Lw, self.current_measure_time) - self.sl2f.writeContent() - - self.sl2f.newFileIfNot("Rs"+SAVE_EXT_NAME) - # self.sl2f.setHeader( self.wavelength.tolist(), TOKEN, str(self.device_id) ) - if self.sl2f.checkHeader() == -1: - MyException( f"请备份文件:{self.sl2f.current_filepath.cwd()}, 并删除文件后再试!" ) - return False - if self.sl2f.checkHeader() == 1: - pass - if self.sl2f.checkHeader() == 0: - self.sl2f.writeHeader() - pass - # 写入数据 - self.sl2f.setContent( self.Rs, self.current_measure_time ) - self.sl2f.writeContent() - return True - - def read_bin(self,fpath: Path): - log.debug(f" readbin: ", __name__, "", "" ) - ret = None - if not fpath.exists() : - log.info(f"not find file: {fpath} ") - return ret - with open(fpath, 'rb') as file: - ret = file.read() - return ret - log.debug(f" readbin: {ret} ", __name__, "", "" ) - return ret - pass - - def decode_info( self,info: bytes ) -> dict: - ret = {} - # 剖面型加了1311+24个字节共26个字节 - # 保留字节有所变化,改为序列号,每个序列号两个字节 - try: - temp = struct.unpack(" None: - temp_str = "" - for key, value in info_dict.items(): - temp_str = temp_str + key + " : " + str(value) + "\n" - with open(fpath, "w+") as f: - f.write(temp_str) - - def save_error_to_file(self, errlist: list, fpath: Path) -> None: - temp_str = "" - if len(errlist) <1: - return None - for errdict in errlist: - temp_str = temp_str + errdict["path"] +" : "+ errdict["error"] + "\n" - pass - with open(fpath, "w+") as f: - f.write(temp_str) - return None - pass - - def getWavelenthDict( self, ) -> dict: - ret_dict = self.getRetDict() - cfg_id:dict = self.syscfg.get( int(self.device_id)) - for k in ret_dict.keys(): - tmp = self.getWavelength( cfg_id.get(k) ) - ret_dict.update({ k : tmp }) - return ret_dict - - def getWavelength(self,ramsesdict:dict) -> np.ndarray: - ret = [] - for i in range(1,256): - tmp = float(ramsesdict['c0s']) + float(ramsesdict['c1s'])*i \ - + float(ramsesdict['c2s'])*i*i + float(ramsesdict['c3s'])*i*i*i - ret.append(tmp) - pass - return np.array(ret) - - def setSyscfg(self, syscfg:dict): - self.syscfg = syscfg - - def setRetrieve(self, retrieve:dict): - log.debug( f"setRetrieve : {retrieve}......", __name__ ) - self.retrieve = retrieve - self.setNewWavelength() - # self.wavelength:np.ndarray = np.arange ( self.retrieve['beginWL'], self.retrieve['endWL'], self.retrieve['interval'] ) - - def setNewWavelength(self, ): - self.wavelength:np.ndarray = np.arange ( - self.retrieve['beginWL'], self.retrieve['endWL'], self.retrieve['interval'] ) - - def setDeviceID(self, did:int): - self.device_id = did - - def setDeviceType(self, device_type): - self.device_type = device_type - - def setMeasureID(self, mid:int): - self.measure_id = mid - - def getErrorInfoDict(self, ): - return self.error_result - - def printResult(self,): - log.info( f"***** : Print Lsky Esky Lwater Lw Rs......", __name__ ) - print(self.res[self.device_enum(1)]) - print(self.res[self.device_enum(2)]) - print(self.res[self.device_enum(3)]) - print(self.Lw) - print(self.Rs) - pass - - -if __name__ == "__main__": - - cfg ={} - retrieve = {} - a = AWRAMS(cfg,retrieve) - p = Path("data") - print(p) - # a.readOneFolder(p) - - - - -# class AWRAMS2(): -# """ -# @description : -# @param : cfg :字典类型, 获得传感器配置及标定文件 -# retieve: 反演需要的参数,起始波长间隔 -# @Returns : -# """ - -# def __init__(self ) -> None: -# self.cfg = {} -# self.retrieve = {} -# self.device_type = DeviceType.AWRAMS.name -# self.device_id = 0 -# self.measure_id = 0 -# self.base_path = Path() -# self.oldpath:Path = None -# self.newpath:Path = None -# self.beginWL = 350 -# self.endWL = 950 -# self.interval = 1.0 -# self.rowFactor = 0.026 -# self.ramses = Ramses() -# self.time = "" -# self.savefilepath:Path = None -# self.sensor_num = 0 -# self.Lw = None -# self.Rs = None -# self.sl2f = SaveList2File() -# # self.__init_parameter() -# pass - -# def setBasePath( self, p:Path ): -# self.base_path = p -# pass - -# def setRetrieve( self, rtv:dict ): -# self.retrieve = rtv -# self.beginWL = self.retrieve['beginWL'] -# self.endWL = self.retrieve['endWL'] -# self.interval = self.retrieve['interval'] -# self.rowFactor = self.retrieve['rowFactor'] -# self.wavelength:np.ndarray = np.arange ( self.beginWL, self.endWL, self.interval ) -# pass - -# def setCfg(self,cfg:dict): -# self.cfg = cfg -# pass - -# def setOldFolder(self, tuple_path: tuple ): -# self.oldpath = self.sl2f.getPathFromBaseAndTuple(self.base_path, tuple_path) -# pass - -# def setOneFolder(self, fpath: Path ): -# self.oldpath = fpath -# pass - -# def getNewPathFromOldPath(self, tuple_path:tuple) -> Path: -# tmp =( self.oldpath.parts[-3], self.oldpath.parts[-2]) -# # print(f"tmp: {tmp}") -# # path_ = self.base_path.joinpath(*tmp) -# self.sl2f.setBasePath(self.base_path) -# self.sl2f.setBasePath( tmp) -# self.sl2f.setBasePath( tuple_path) -# return self.sl2f.current_path -# # return self.sl2f.getPathFromBaseAndTuple(path_, tuple_path) -# pass - - -# def readOneFolder(self ): -# """ -# 从老文件(数据文件所在目录),转移到新文件夹并处理 -# do all get Rs -# """ -# # 从old文件夹获得id -# self.device_id,self.measure_id = self.getDeviceIDMeasureID(self.oldpath) - -# # 读取并处理info.bin文件, 并获得时间 -# self.deal_info_bin() - -# self.time = self.info_dict['time'] -# self.ymdhms = "20"+str(self.info_dict["year"]) + "_" + str(self.info_dict["month"]) \ -# +"_"+str(self.info_dict["day"]) + "_" + str(self.info_dict["hour"]) \ -# +"_"+str(self.info_dict["minute"]) + "_" + str(self.info_dict["second"]) - -# # 处理文件路径 self.newpath self.savefilepath self.infopath -# self.deal_path_filepath() - -# # 遍历文件夹 *.bin, 每组文件存到list -# bin_data_lst = self.getGroupsFromBin(self.oldpath) -# spectrum = self.dealBinDatalist(bin_data_lst,True) -# real_wl = self.getWavelenthDict() #字典 {lsky: esky lwater} -# spectrum_after_interpo = self.doMultiSenorInterpo(spectrum,real_wl) - -# self.Lw = spectrum_after_interpo[RamsesAWRAMS.Lwater.name] - self.rowFactor* spectrum_after_interpo[RamsesAWRAMS.Lsky.name] -# self.Rs = self.Lw / spectrum_after_interpo[RamsesAWRAMS.Esky.name] - - -# # # 转移文件夹,处理文件 -# self.copyBinFromOldToNew() -# # for p in self.oldpath.glob('*.bin'): -# # if p.name == "pic.bin": -# # p.replace(self.newpath.joinpath("pic.jpg")) -# # else: -# # p.replace(self.newpath.joinpath(p.name)) - -# # 保存 info.txt -# # infopath = self.newpath.joinpath(self.ymdhms+"_info.txt") -# self.save_dict_to_file( self.info_dict, self.infopath ) - -# # 保存结果 -# # save_csv_name = self.newpath.joinpath(self.ymdhms+SAVE_EXT_NAME) -# self.doSaveCsv(spectrum_after_interpo, self.savefilepath) - -# log.info(f"Done. device_id:{self.device_id} measure_id {self.measure_id} ") -# log.info(f"One measure result was received and dealed.") - -# def copyBinFromOldToNew(self, ) : -# """由cfg计算波长后插值""" -# log.info(f"copyBinFromOldToNew: : ", __name__) -# for p in self.oldpath.glob('*.bin'): -# if p.name == "pic.bin": -# p.replace(self.newpath.joinpath("pic.jpg")) -# else: -# p.replace(self.newpath.joinpath(p.name)) - -# def dealBinDatalist(self, bin_data_list, ip_included: bool = False) : -# """由cfg计算波长后插值""" -# log.info(f"dealBinDatalist: : 5 * 3 sensor_data ", __name__) -# result = [] -# for bdl in bin_data_list: -# buf = bdl -# buf_len = len(buf) -# if buf_len < 576: -# return -# if ip_included: -# buf = buf[26:] -# buf_len = buf_len - 26 -# buf_len = len(buf) -# if buf_len != 1728: -# return - -# # 处理三个传感器组成的hex, 遍历处理 -# res = {} -# for i in range(1,4,1): -# temp_buf = buf[7:71] + buf[79:143] + \ -# buf[151:215] + buf[223:287] + \ -# buf[295:359] + buf[367:431] + \ -# buf[439:503] + buf[511:575] - -# # Ramses类 标定处理,设置buf 标定文件 -# self.ramses.setBuf(temp_buf) -# func = self.getFuncBySeq(i) -# # log.debug(f"func: : {func} ", __name__,"dealBinDatalist") -# cfg = self.getCfgByFunc( func) -# self.ramses.setCalCfg(cfg) -# self.ramses.resetItSpectrum() -# self.ramses.ConvertAndCalibrate() -# res.update({ func:self.ramses.spectrum }) -# result.append(res) -# # print(result[0]) - -# #取平均 -- 补充更多校验 -# ret:dict = self.getRetDict() -# len_result = len(result) -# for k in ret.keys(): -# for i in range(1,len_result,1): -# result[0][k] = result[0][k] + result[i][k] -# tmp = result[0][k]/len_result -# ret.update( { k : tmp}) -# return ret -# pass - -# def dealBin(self, buf:bytes, ip_included: bool = False) : -# res = {} -# len_ = len(self.buf) -# if len_ < 576: -# return -# if ip_included: -# self.buf = self.buf[26:] -# len_ = len_ - 26 -# if len_ % 576 != 0: -# return - -# for i in range(int(len_/576)): -# res.update({i+1: {}}) -# temp_buf = self.buf[7:71] + self.buf[79:143] + \ -# self.buf[151:215] + self.buf[223:287] + \ -# self.buf[295:359] + self.buf[367:431] + \ -# self.buf[439:503] + self.buf[511:575] -# # self.ConvertAndCalibrate( temp_buf ) -# # print(len(temp_buf)) -# # temp = self.__ConvertBytesToInt(temp_buf) -# # res.update( { i+1: temp } ) -# # print(res) -# pass - -# def getRetDict(self,) : -# ret_dict = { } -# if self.device_type == DeviceType.AWRAMS.name: -# ret_dict.update( {RamsesAWRAMS(1).name:np.array([])} ) -# ret_dict.update( {RamsesAWRAMS(2).name:np.array([])} ) -# ret_dict.update( {RamsesAWRAMS(3).name:np.array([])} ) -# if self.device_type == DeviceType.SURFACE.name: -# ret_dict.update( {RamsesSURFACE(1).name:np.array([])} ) -# ret_dict.update( {RamsesSURFACE(2).name:np.array([])} ) -# ret_dict.update( {RamsesSURFACE(3).name:np.array([])} ) -# if self.device_type == DeviceType.PROFILE.name: -# ret_dict.update( {RamsesPROFILE(1).name:np.array([])} ) -# ret_dict.update( {RamsesPROFILE(2).name:np.array([])} ) -# ret_dict.update( {RamsesPROFILE(3).name:np.array([])} ) -# return ret_dict - -# def getFuncBySeq(self, seq:int) : -# func = "" -# if self.device_type == DeviceType.AWRAMS.name: -# func = RamsesAWRAMS(seq).name -# if self.device_type == DeviceType.SURFACE.name: -# func = RamsesAWRAMS(seq).name -# if self.device_type == DeviceType.PROFILE.name: -# func = RamsesAWRAMS(seq).name -# return func - -# def getCfgByFunc(self, func:str) : -# cfg_id:dict = self.cfg.get(int(self.device_id)) -# cfg_sensor = cfg_id.get( func) -# return cfg_sensor -# pass - -# def getCfgBySeq(self, seq:int) : -# func = "" -# if self.device_type == DeviceType.AWRAMS.name: -# func = RamsesAWRAMS(seq).name -# if self.device_type == DeviceType.SURFACE.name: -# func = RamsesAWRAMS(seq).name -# if self.device_type == DeviceType.PROFILE.name: -# func = RamsesAWRAMS(seq).name -# cfg_id:dict = self.cfg.get(int(self.device_id)) -# cfg_sensor = cfg_id.get( func) -# return cfg_sensor -# pass - -# def doMultiSenorInterpo(self, data:dict, wl:dict ) : -# """同步多个传感器插值""" -# ret_dict = self.getRetDict() -# x = self.wavelength -# for k in ret_dict.keys(): -# tmp = np.interp(x,wl[k],data[k]) -# ret_dict.update({ k : tmp }) -# return ret_dict - -# def doInterpo(self, data_after_average:list ) : -# """由cfg计算波长后插值""" -# x = self.wavelength -# ret = [] -# # for i in range(len(self.cfg)): -# # cfg_index = RamsesFunc(i+1).name -# # wl = self.getWavelenth( self.cfg[cfg_index] ) -# # tmp = np.interp( x, wl, data_after_average[i] ) -# # ret.append(tmp) -# # pass -# return ret - - -# def getWavelenthDict( self, ) -> dict: -# ret_dict = self.getRetDict() -# cfg_id:dict = self.cfg.get( int(self.device_id)) -# for k in ret_dict.keys(): -# tmp = self.getWavelenth( cfg_id.get(k) ) -# ret_dict.update({ k : tmp }) -# return ret_dict - - -# def getWavelenth(self,cfg:dict) -> np.ndarray: -# ret = [] -# for i in range(1,256): -# tmp = float( cfg['c0s'] ) + float( cfg['c1s'] )*i \ -# + float( cfg['c2s'] )*i*i + float( cfg['c3s'] )*i*i*i -# ret.append(tmp) -# pass -# return np.array(ret) - -# def doSaveCsv(self, spectrum_after_interpo:dict ,save_path:Path) : -# header = self.list2header(self.wavelength.tolist(), TOKEN, self.device_id+"_"+self.measure_id) -# data_str = "" - -# for k,v in spectrum_after_interpo.items(): -# firstcolumn = k -# data_str = data_str + NEWLINE + \ -# AWRAMS.list2header(spectrum_after_interpo[k].tolist(),TOKEN,k) -# data_str = data_str + NEWLINE + AWRAMS.list2header( self.Lw.tolist(), SEPARATOR, "Lw" ) -# data_str = data_str + NEWLINE + AWRAMS.list2header( self.Rs.tolist(), SEPARATOR, "Rs" ) -# save_path.write_text(header+data_str) - -# # def getSaveFilePath(self) : -# # """由cfg计算波长后插值""" -# # return self.newpath.joinpath(self.ymdhms+SAVE_EXT_NAME) - -# # def doSaveIntensity(self, data_after_interp:list ) : -# # """由cfg计算波长后插值""" -# # header = AWRAMS.list2header(self.wavelength.tolist(), SEPARATOR, self.device_id+"_"+self.measure_id) -# # data_str = "" - -# # # for i in range(self.sensor_num): -# # # cfg_index = RamsesFunc(i+1).name -# # # firstcolumn = self.cfg[cfg_index]["FUNC"] -# # # data_str = data_str + NEWLINE + \ -# # # AWRAMS.list2header(data_after_interp[i].tolist(),SEPARATOR,firstcolumn) -# # # pass -# # # data_str = data_str + NEWLINE + AWRAMS.list2header( self.Lw.tolist(), SEPARATOR, "Lw" ) -# # # data_str = data_str + NEWLINE + AWRAMS.list2header( self.Rs.tolist(), SEPARATOR, "Rs" ) -# # # if self.savefilepath.exists(): -# # # self.savefilepath.touch() -# # # self.savefilepath.write_text(header+data_str) - - -# @staticmethod -# def list2header( lst:List[float], separator:str, first_column:str=None): -# ''' list 转为字符,作为文件头,是否有额外第一列''' -# # temp = separator.join(lst) -# tmpstr = "" -# # if first_column: -# # tmpstr = tmpstr + first_column + separator -# # else: -# # tmpstr = tmpstr + separator -# if first_column: -# tmpstr = tmpstr + first_column - -# for l in lst: -# tmpstr = tmpstr + separator + str(round(l,8)) -# return tmpstr - -# def doTotalCalibrate(self, int_data_list:list ) : -# ret = [] -# # data = int_data_list -# # log.debug(f" doTotalCalibrate : {len(data) }", __name__, "", "") -# # for i in range(len(data)): # 遍历获得每组数据 -# # # i : measure group -# # group = data[i] # List -# # group_ret = [] -# # # log.debug(f" doTotalCalibrate {i} : {data[i]}", __name__, "", "") - -# # for j in range(len(group)): # 遍历获得三个传感器数据分别标定 -# # sensor = group[j] # Tuple -# # # sensor_ret = [] -# # # log.info(f"sensor {j}:{group[j]}", __name__, "", "") -# # cfg_index = RamsesFunc(j+1).name -# # # log.error(f" doTotalCalibrate : {self.cfg }", __name__, "", "") -# # log.debug(f" doTotalCalibrate : { cfg_index } ", __name__, "", "") -# # log.debug(f" doTotalCalibrate : {self.cfg[cfg_index] }", __name__, "", "") -# # tmp_intensity = self.CalibrateSpectrumData( self.cfg[cfg_index], group[j] ) -# # group_ret.append( tmp_intensity ) -# # ret.append(group_ret) -# return ret #[ [s1_ndarray,s2_ndarray,s3_ndarray],....... ] - - -# # def CalibrateSpectrumData(self, ramsescal: dict, rawData: tuple): -# # t0 = 8092 -# # t = rawData[0] -# # log.debug(f" CalibrateSpectrumData RawData {rawData}", __name__, "", "") -# # raw = np.asarray(rawData[1], dtype=float) -# # B0 = np.asarray(ramsescal["b0"], dtype=float) -# # B1 = np.asarray(ramsescal["b1"], dtype=float) - -# # Mn = raw/65535 -# # Bn = B0 + B1 * (t/t0) -# # Cn = Mn-Bn - -# # Offset = AWRAMS.getOffset( -# # Cn, int(ramsescal['DarkPixelStart']), int(ramsescal['DarkPixelStop'])) -# # Dn = Cn-Offset -# # En = Dn * (t0/t) -# # Fn = En/np.asarray(ramsescal["cal"], dtype=float) # 空气或水中的标定文件 -# # return Fn - - - -# def getDeviceIDMeasureID(self,fpath: Path): -# path_lst = fpath.parts -# device_id = path_lst[-2] -# measure_id = path_lst[-1] -# return (device_id, measure_id) -# pass - - -# def getGroupsFromBin(self,fpath: Path): -# log.debug(f" getGroupsFromBin data: {fpath}", __name__, "", "" ) -# f_list = [x for x in fpath.glob('*.bin')] - -# group_num = len(f_list) # info.bin pic.bin 假如pic.bin没有存下来?? -# data = [] # [ b'', b'' ....] every b'' include three sensor data -# for f in f_list: -# stem = f.stem -# if stem.isdigit(): -# data.append(self.read_bin(f)) - -# # for i in range(group_num): -# # path_ = fpath.joinpath(str(i)+".bin") -# # if path_ not in f_list: -# # log.warning( -# # f"not find file {PurePath(path_)} ", __name__, "", "") -# # return [] -# # data.append(AWRAMS.read_bin(path_)) -# log.debug(f" getGroupsFromBin data: {len(data)}", __name__, "", "" ) -# return data -# pass - -# def read_bin(self,fpath: Path): -# log.debug(f" readbin: ", __name__, "", "" ) -# ret = None -# if not fpath.exists() : -# log.info(f"not find file: {fpath} ") -# return ret -# with open(fpath, 'rb') as file: -# ret = file.read() -# return ret -# log.debug(f" readbin: {ret} ", __name__, "", "" ) -# return ret -# pass - -# def deal_info_bin(self, ): -# log.debug(f" deal_old_bin : ", __name__, "", "" ) -# infopath = self.oldpath.joinpath("info.bin") -# if not infopath.exists(): -# raise Exception( f"not find file: {PurePath(infopath)}" ) -# pass -# info_bin = self.read_bin(infopath) -# # log.debug(f"infopath cc {info_bin}", __name__, "", "" ) -# self.info_dict = self.decode_info(info_bin) -# # log.debug(f" info_dict : {info_dict}", __name__, "", "" ) -# self.info_dict.update({"device_id":self.device_id}) -# self.info_dict.update({"measure_id":self.measure_id}) -# # log.debug(f" {info_dict}", __name__, "", "" ) - - -# def deal_path_filepath(self ): -# log.debug(f" deal_path_filepath : ", __name__, "", "" ) -# self.sl2f.setBasePath(self.base_path) -# path_tuple = ("data", str(self.device_id) -# ,"20"+str(self.info_dict["year"]), str(self.info_dict["month"]), str(self.info_dict["day"])) -# self.sl2f.setPath(path_tuple) -# self.sl2f.newPathIfNot() -# self.newpath = self.sl2f.current_path -# self.sl2f.newFileIfNot(self.ymdhms+SAVE_EXT_NAME) -# self.savefilepath = self.sl2f.current_filepath -# self.sl2f.newFileIfNot(self.ymdhms+"_info.txt") -# self.infopath = self.sl2f.current_filepath - -# def new_dirs_if_not(self,fpath:Path, *args) : -# ''' * 目录不存在就新建 多级目录 ''' -# if not fpath.exists: -# raise -# if len(args) == 0: -# pass -# tmpdir = fpath -# # newpath = tmpdir.joinpath(args) -# for arg in args: -# tmpdir = tmpdir.joinpath(arg) -# if not tmpdir.exists(): -# tmpdir.mkdir() -# return tmpdir - - - -# def decode_info(self,info: bytes) -> dict: -# ret = {} -# try: -# temp = struct.unpack(" None: -# temp_str = "" -# for key, value in info_dict.items(): -# temp_str = temp_str + key + " : " + str(value) + "\n" -# fpath.write_text(temp_str) -# # with open(fpath, "w+") as f: -# # f.write(temp_str) - -# pass - - \ No newline at end of file diff --git a/awrams.py b/awrams.py index 9a27e7f..8004cc4 100644 --- a/awrams.py +++ b/awrams.py @@ -348,6 +348,7 @@ class AWRAMS(object): def __init__(self, ): """ @description : 手持数据初始化 + receive --> deal() 调用 dealOneMeasurement_Online() """ self.device_type = DeviceType.AWRAMS.name self.device_enum = None @@ -747,7 +748,38 @@ class AWRAMS(object): save_path_csv.write_text(header+data_str) path_info_txt = self.new_folder.joinpath( time_name + "_info.txt" ) - self.save_dict_to_file( self.info_dict, path_info_txt ) + self.save_dict_to_file( self.info_dict, path_info_txt ) + + self.do_retrieve() + + + def do_retrieve(self, ) -> None: + '''反演参数并保存 self.res''' + PAR_400_700 = self.get_par_400_700() + PAR_350_950 = self.get_par_350_950() + chl = self.get_chl() + cdom = self.get_CDOM() + pass + + def get_par_400_700(self, ) -> float: + '''反演参数并保存 基于self.res''' + return 0.0 + pass + + def get_par_350_950(self, ) -> float: + '''反演参数并保存 基于self.res''' + return 0.0 + pass + + def get_chl(self, ) -> float: + '''反演参数并保存 基于self.res''' + return 0.0 + pass + + def get_CDOM(self, ) -> float: + '''反演参数并保存 基于self.res''' + return 0.0 + pass def appendSave(self, ) -> bool: '''self.output_path''' diff --git a/data/2022/8/17/17/0.bin b/data/2022/8/17/17/0.bin new file mode 100644 index 0000000..a4efa35 Binary files /dev/null and b/data/2022/8/17/17/0.bin differ diff --git a/data/2022/8/17/17/1.bin b/data/2022/8/17/17/1.bin new file mode 100644 index 0000000..062a981 Binary files /dev/null and b/data/2022/8/17/17/1.bin differ diff --git a/data/2022/8/17/17/2.bin b/data/2022/8/17/17/2.bin new file mode 100644 index 0000000..41caa74 Binary files /dev/null and b/data/2022/8/17/17/2.bin differ diff --git a/data/2022/8/17/17/2022_8_17_12_20_13.csv b/data/2022/8/17/17/2022_8_17_12_20_13.csv new file mode 100644 index 0000000..e52d540 --- /dev/null +++ b/data/2022/8/17/17/2022_8_17_12_20_13.csv @@ -0,0 +1,6 @@ +device_id_2;350.0;351.0;352.0;353.0;354.0;355.0;356.0;357.0;358.0;359.0;360.0;361.0;362.0;363.0;364.0;365.0;366.0;367.0;368.0;369.0;370.0;371.0;372.0;373.0;374.0;375.0;376.0;377.0;378.0;379.0;380.0;381.0;382.0;383.0;384.0;385.0;386.0;387.0;388.0;389.0;390.0;391.0;392.0;393.0;394.0;395.0;396.0;397.0;398.0;399.0;400.0;401.0;402.0;403.0;404.0;405.0;406.0;407.0;408.0;409.0;410.0;411.0;412.0;413.0;414.0;415.0;416.0;417.0;418.0;419.0;420.0;421.0;422.0;423.0;424.0;425.0;426.0;427.0;428.0;429.0;430.0;431.0;432.0;433.0;434.0;435.0;436.0;437.0;438.0;439.0;440.0;441.0;442.0;443.0;444.0;445.0;446.0;447.0;448.0;449.0;450.0;451.0;452.0;453.0;454.0;455.0;456.0;457.0;458.0;459.0;460.0;461.0;462.0;463.0;464.0;465.0;466.0;467.0;468.0;469.0;470.0;471.0;472.0;473.0;474.0;475.0;476.0;477.0;478.0;479.0;480.0;481.0;482.0;483.0;484.0;485.0;486.0;487.0;488.0;489.0;490.0;491.0;492.0;493.0;494.0;495.0;496.0;497.0;498.0;499.0;500.0;501.0;502.0;503.0;504.0;505.0;506.0;507.0;508.0;509.0;510.0;511.0;512.0;513.0;514.0;515.0;516.0;517.0;518.0;519.0;520.0;521.0;522.0;523.0;524.0;525.0;526.0;527.0;528.0;529.0;530.0;531.0;532.0;533.0;534.0;535.0;536.0;537.0;538.0;539.0;540.0;541.0;542.0;543.0;544.0;545.0;546.0;547.0;548.0;549.0;550.0;551.0;552.0;553.0;554.0;555.0;556.0;557.0;558.0;559.0;560.0;561.0;562.0;563.0;564.0;565.0;566.0;567.0;568.0;569.0;570.0;571.0;572.0;573.0;574.0;575.0;576.0;577.0;578.0;579.0;580.0;581.0;582.0;583.0;584.0;585.0;586.0;587.0;588.0;589.0;590.0;591.0;592.0;593.0;594.0;595.0;596.0;597.0;598.0;599.0;600.0;601.0;602.0;603.0;604.0;605.0;606.0;607.0;608.0;609.0;610.0;611.0;612.0;613.0;614.0;615.0;616.0;617.0;618.0;619.0;620.0;621.0;622.0;623.0;624.0;625.0;626.0;627.0;628.0;629.0;630.0;631.0;632.0;633.0;634.0;635.0;636.0;637.0;638.0;639.0;640.0;641.0;642.0;643.0;644.0;645.0;646.0;647.0;648.0;649.0;650.0;651.0;652.0;653.0;654.0;655.0;656.0;657.0;658.0;659.0;660.0;661.0;662.0;663.0;664.0;665.0;666.0;667.0;668.0;669.0;670.0;671.0;672.0;673.0;674.0;675.0;676.0;677.0;678.0;679.0;680.0;681.0;682.0;683.0;684.0;685.0;686.0;687.0;688.0;689.0;690.0;691.0;692.0;693.0;694.0;695.0;696.0;697.0;698.0;699.0;700.0;701.0;702.0;703.0;704.0;705.0;706.0;707.0;708.0;709.0;710.0;711.0;712.0;713.0;714.0;715.0;716.0;717.0;718.0;719.0;720.0;721.0;722.0;723.0;724.0;725.0;726.0;727.0;728.0;729.0;730.0;731.0;732.0;733.0;734.0;735.0;736.0;737.0;738.0;739.0;740.0;741.0;742.0;743.0;744.0;745.0;746.0;747.0;748.0;749.0;750.0;751.0;752.0;753.0;754.0;755.0;756.0;757.0;758.0;759.0;760.0;761.0;762.0;763.0;764.0;765.0;766.0;767.0;768.0;769.0;770.0;771.0;772.0;773.0;774.0;775.0;776.0;777.0;778.0;779.0;780.0;781.0;782.0;783.0;784.0;785.0;786.0;787.0;788.0;789.0;790.0;791.0;792.0;793.0;794.0;795.0;796.0;797.0;798.0;799.0;800.0;801.0;802.0;803.0;804.0;805.0;806.0;807.0;808.0;809.0;810.0;811.0;812.0;813.0;814.0;815.0;816.0;817.0;818.0;819.0;820.0;821.0;822.0;823.0;824.0;825.0;826.0;827.0;828.0;829.0;830.0;831.0;832.0;833.0;834.0;835.0;836.0;837.0;838.0;839.0;840.0;841.0;842.0;843.0;844.0;845.0;846.0;847.0;848.0;849.0;850.0;851.0;852.0;853.0;854.0;855.0;856.0;857.0;858.0;859.0;860.0;861.0;862.0;863.0;864.0;865.0;866.0;867.0;868.0;869.0;870.0;871.0;872.0;873.0;874.0;875.0;876.0;877.0;878.0;879.0;880.0;881.0;882.0;883.0;884.0;885.0;886.0;887.0;888.0;889.0;890.0;891.0;892.0;893.0;894.0;895.0;896.0;897.0;898.0;899.0;900.0;901.0;902.0;903.0;904.0;905.0;906.0;907.0;908.0;909.0;910.0;911.0;912.0;913.0;914.0;915.0;916.0;917.0;918.0;919.0;920.0;921.0;922.0;923.0;924.0;925.0;926.0;927.0;928.0;929.0;930.0;931.0;932.0;933.0;934.0;935.0;936.0;937.0;938.0;939.0;940.0;941.0;942.0;943.0;944.0;945.0;946.0;947.0;948.0;949.0 +Lsky;0.19285814162824955;0.925453195637357;1.6757273707815268;2.426001545925696;3.139514682044595;3.823974243956326;4.508433805868056;5.168364014823405;5.742796843601711;6.317229672380018;6.891662501158324;5.932884365194355;4.778569679096476;3.6242549929985977;1.8528851403365927;-0.42249280532251676;-2.6978707509816267;-4.413800685672297;-4.0692608965799675;-3.724721107487638;-3.3801813183953087;10.949242262586525;27.25364586102422;43.55804945946191;44.28668635144987;31.671111434993588;19.055536518537302;9.112489519209879;9.824067460721535;10.53564540223319;11.247223343744846;11.857700522541101;12.45200821663828;13.046315910735458;13.564267735457063;14.012676748851863;14.461085762246665;14.883030651799087;15.18779751388651;15.49256437597393;15.797331238061352;15.922475136405257;16.014618313403613;16.10676149040197;16.227466340009176;16.376164030020128;16.524861720031076;16.71013535931154;17.080563787560404;17.450992215809272;17.82142064405814;18.200148875690417;18.580642712067128;18.961136548443836;19.544061958766875;20.342862238578224;21.141662518389573;21.75252400476344;21.237078586992666;20.721633169221896;20.206187751451125;19.69149668341403;19.17699207631191;18.662487469209793;18.151048109873432;17.64320182195814;17.135355534042848;16.63486072355919;16.188958759092127;15.743056794625064;15.297154830158002;14.934541307539769;14.59586407261293;14.25718683768609;13.958061638404093;13.710385119089624;13.462708599775155;13.22000875812717;13.026252185152666;12.832495612178162;12.638739039203658;12.428499959909278;12.212759859455616;11.997019759001956;11.766309029129612;11.513790739886332;11.261272450643052;11.014277292474718;10.847834931106041;10.681392569737364;10.514950208368688;10.449505257418938;10.4231193028427;10.396733348266464;10.403180667705774;10.463672592051958;10.524164516398145;10.585191072022683;10.66113835921013;10.737085646397576;10.81303293358502;10.906592515699995;11.008023005422668;11.10945349514534;11.239893424254912;11.424789787907242;11.609686151559572;11.794877890641944;12.055817097255405;12.316756303868866;12.577695510482327;12.836217267151136;13.0934943170197;13.35077136688826;13.59909805780879;13.828075214388164;14.057052370967538;14.286029527546912;10.80540322613409;7.219294570881275;3.6331859156284594;1.2020528126724832;-0.5460254688499937;-2.2941037503724706;-3.4869103499148673;-3.2822559053355866;-3.0776014607563065;-2.8729470161770263;9.556681445479676;22.762463470166097;35.96824549485252;36.90043261902393;29.52062677479079;22.14082093055765;16.73739950676888;17.196265086273787;17.655130665778692;18.113996245283595;18.629509370191922;19.15075922250988;19.67200907482784;20.166273651363785;20.63967410244877;21.113074553533753;21.5716547715181;21.97766164570065;22.383668519883194;22.789675394065743;23.091655096972392;23.3788935861739;23.666132075375405;23.866054213061197;23.989134895733304;24.112215578405408;24.21669591255808;24.24083014080012;24.264964369042165;24.289098597284205;24.259176342885436;24.219272558033545;24.179368773181654;23.666740361594684;22.68206364949754;21.6973869374004;20.80049163412037;20.376089493635895;19.951687353151417;19.527285212666943;19.075317334460344;18.617012995879634;18.158708657298927;17.709584768586186;17.270828694794584;16.83207262100298;16.398655617864552;16.00217608577853;15.605696553692503;15.20921702160648;14.846410581999372;14.492931599243576;14.13945261648778;13.801350822529233;13.482817673837987;13.164284525146739;12.844125421217766;12.508852770159248;12.173580119100729;11.83830746804221;11.499949770921999;11.160587756180687;10.821225741439376;10.516955811456445;10.26279683311219;10.008637854767937;9.762050915838564;9.616818758909753;9.47158660198094;9.326354445052127;9.219638677598073;9.127359416122367;9.035080154646662;8.957647864045711;8.903887813040104;8.850127762034498;8.796585135110488;8.747795480575007;8.699005826039526;8.650216171504043;8.59353984313499;8.533520150483552;8.473500457832113;8.412266668670595;8.34888452326177;8.285502377852945;8.222155749491519;8.160538177818841;8.098920606146162;8.037303034473483;7.983584797492925;7.933593217162419;7.883601636831914;7.83412862922787;7.785666460833366;7.737204292438863;7.68874212404436;6.142724133345376;4.595170065271388;3.0476159971973997;1.2673205398745153;-0.633304299836996;-2.5339291395485075;-3.7747858553594202;-3.6118803413489635;-3.448974827338507;-3.28606931332805;10.836304018192223;25.234926726884527;39.63354943557683;37.75976996524125;26.804217301651768;15.848664638062292;8.196382610578473;8.129549027169366;8.06271544376026;7.995881860351152;7.936408108923806;7.877198970948277;7.817989832972749;7.7598243806027325;7.70227822604873;7.644732071494727;7.58244817468996;7.508581326162266;7.4347144776345715;7.360847629106878;7.256440115828199;7.1505392401101115;7.044638364392023;6.920260588882918;6.784407741505692;6.648554894128466;6.512584412598384;6.376312653149522;6.240040893700658;6.103769134251795;5.9836103473711955;5.864386344688421;5.745162342005646;5.5544312002711225;5.317976572951422;5.081521945631721;4.906023894743679;4.8910448941528415;4.8760658935620045;4.861086892971167;4.854982478971449;4.849434929711827;4.8438873804522045;4.842075468929495;4.842680528156102;4.843285587382708;4.838334378050275;4.8186507602074835;4.798967142364691;4.779283524521899;4.737611401570351;4.694562105546834;4.651512809523316;4.642160150545336;4.654462584367879;4.666765018190422;4.715901487059248;4.861173544995513;5.006445602931777;5.151717660868041;5.400583845080784;5.655388306491337;5.910192767901889;6.1990933973052575;6.509329111119542;6.819564824933827;7.139573737754183;7.484102747982902;7.828631758211623;8.173160768440344;8.55385191347011;8.936229573005717;9.318607232541325;9.692308196535938;10.060835819703792;10.429363442871646;10.757504802826924;10.990554445695954;11.223604088564983;11.456653731434013;11.427418821975253;11.390165209951842;11.352911597928431;11.284980637831177;11.20003089138371;11.115081144936243;11.078448463612677;11.146082359833676;11.213716256054674;11.281350152275673;11.509670928356133;11.739487824498282;11.969304720640432;12.27124500803916;12.609429927548511;12.947614847057864;12.32399751797198;9.84139494575423;7.358792373536479;4.854658589031785;1.1107796681199105;-2.633099252791963;-6.3769781737038365;-7.36278452900021;-7.131678529784322;-6.900572530568433;3.6270420235766547;31.586128218575872;59.54521441357509;85.0688368813879;63.856770045584426;42.64470320978095;21.432636373977473;16.102219043671948;16.692435069797344;17.282651095922738;17.83087176752055;18.31817810079483;18.80548443406911;19.28185777579552;19.645573774650764;20.00928977350601;20.373005772361257;20.64694211676559;20.894000068860237;21.141058020954887;21.313502741459452;21.39530317519021;21.47710360892097;21.532031805080777;21.413551612278226;21.295071419475676;21.176591226673125;20.644197970592124;20.01948676615982;19.39477556172751;18.44928962277756;17.18545702842867;15.921624434079776;14.938021764620553;15.172962739595787;15.407903714571022;15.642844689546257;15.564928387231852;15.441444850225805;15.317961313219758;15.1469114999312;14.9384269247531;14.729942349575001;14.50883035445094;14.249257694497832;13.989685034544726;13.730112374591618;13.432806304213308;13.132902886933225;12.832999469653142;12.54122157001161;12.254321151016727;11.967420732021843;11.693001275992412;11.445713969665594;11.198426663338774;10.951185021880164;10.711337772360167;10.471490522840169;10.231643273320172;9.987482094070899;9.74145536538484;9.495428636698783;9.244170348939118;8.984763227510111;8.725356106081104;8.458572415703008;8.112170121323889;7.765767826944769;7.419365532565649;6.953822561866107;6.454584661532682;5.955346761199255;5.441509805860553;4.91155155766742;4.381593309474287;3.8810053350266958;3.5219310259267873;3.1628567168268793;2.8037824077269713;2.6073389630021504;2.435306039533364;2.2632731160645774;2.1326669928627227;2.0335567933026266;1.9344465937425308;1.8392519128921492;1.7547690284834525;1.6702861440747556;1.585803259666059;1.5068739027094902;1.4281264530553948;1.3493790034012993;1.3030741237855659;1.2727558059903508;1.2424374881951357;1.9304315690562495;3.8282643766919087;5.726097184327568;7.034631465485267;1.2009136519506374;-4.6328041615839926;-10.466521975118622;-11.660486166523397;-11.553043501087963;-11.445600835652527;11.162240186250614;57.49610983588521;103.82997948551979;132.9685575442169;90.48778637347769;48.00701520273847;5.526244031999255;1.2929965961993994;1.2359940346433134;1.1789914730872273;1.0887373515320158;0.9772780359533335;0.8658187203746512;0.7300810253655767;0.5429311358603965;0.3557812463552163;0.167184931001958;-0.06512273394379853;-0.297430398889555;-0.5297380638353115;-0.7426194772855808;-0.9488317729067568;-1.1550440685279326;-1.3356580008831769;-1.4859758590336556;-1.6362937171841345;-1.790590834123736;-1.9639536110755271;-2.137316388027318;-2.310679164979109;-2.541760786618865;-2.780083083999619;-3.0184053813803726;-3.6488289618394996;-4.534639299458556;-5.420449637077613;-6.092919756072439;-6.319861364567871;-6.546802973063305;-6.77514385813031;-7.034460214085123;-7.293776570039937;-7.5530929259947515;-7.852299435671857;-8.16383795572136;-8.475376475770863;-8.843207407133379;-9.270643079392602;-9.698078751651828;-10.137375077077007;-10.621615126798739;-11.105855176520471;-11.590095226242202;-11.981115509025694;-12.365455559664642;-12.749795610303591;-13.0714710590626;-13.360680134317573;-13.649889209572544;-13.953457630375196;-14.279908098637055;-14.606358566898914;-14.940082372024401;-15.330497205006187;-15.720912037987976;-16.111326870969762;-16.49465179040508;-16.876657619832844;-17.25866344926061;-17.601948095917898;-17.91647890620556;-18.231009716493222;-18.53661577410241;-18.821971036383758;-19.107326298665104;-19.395486145716355;-19.752274753085942;-20.109063360455526;-20.465851967825113;-20.992565163931605;-21.568905782968027;-22.14524640200445;-22.800852422490436;-23.532613367874387;-24.264374313258337;-24.997923857071257;-25.736914050516475;-26.475904243961693;-27.21489443740691;-27.737225440248753;-28.256521629343062;-28.775817818437368;-29.205537481688133;-29.60150818915217;-29.997478896616208;-21.758148169143304;-3.6983405171126265;14.361467134918051;23.833592865758025;1.1635366405634997;-21.50651958463102;-44.17657580982554;-45.5066921575757;-45.836265868192015;-46.16583957880834;82.05116729093363;265.0949534403224;448.1387395897111;468.2875070301587;287.92496504032306;107.56242305048744;-37.39613735251501;-37.97876040193131;-38.56138345134761;-39.14400650076391;-39.73705374756431;-40.330683517820084;-40.92431328807586;-41.51333563304846;-42.100371069258784;-42.6874065054691;-43.29843951525058;-43.93859070434357;-44.57874189343655;-45.229023907026146;-45.918259395476674;-46.60749488392721;-47.29673037237774;-47.986749648608914;-48.67679946011062;-49.36684927161233;-50.115395037215556;-50.886674949230965;-51.65795486124638;-52.47337908574723;-53.336764321836725;-54.20014955792622;-55.114376400924925;-56.18962256234336;-57.26486872376179;-58.34018981067693;-59.44911626704852;-60.5580427234201;-61.666969179791685;-62.78645633042303;-63.90916892704614;-65.03188152366926;-66.1874353328209;-67.37194631589624;-68.5564572989716;-69.76554401450076;-71.0324133195984;-72.29928262469606 +Esky;-0.7839148628822621;-0.3212972797353355;0.14132030341159108;0.7813562560473067;1.4551080591353576;2.1288598622234085;2.839504852797834;3.588822501133105;4.3381401494683764;5.094106402250883;5.892390549668313;6.690674697085743;7.488958844503173;6.758086938030741;5.603376442181;4.448665946331259;2.555997579080508;-0.315529693927735;-3.187056966935978;-5.808983686697484;-5.412249152001498;-5.01551461730551;-4.618780082609524;11.335946885712598;33.263807845639604;55.19166880556661;62.75773470942053;45.71008325935628;28.66243180929203;11.86562731093526;12.627750925543218;13.389874540151178;14.151998154759136;14.758599988618494;15.28486969155173;15.811139394484968;16.256402665665437;16.51658459369517;16.776766521724905;17.036948449754636;17.12006474260055;17.19370548640837;17.267346230216187;17.18622661685567;16.999203521136945;16.812180425418223;16.641231696517057;16.521752974938316;16.40227425335958;16.282795531780838;16.36997589744433;16.48480115312785;16.599626408811375;16.717216238692924;16.83729915845096;16.957382078208994;17.143804414438687;17.655481540798316;18.167158667157945;18.678835793517575;18.32495514698121;17.77171715290161;17.21847915882201;16.69445901534417;16.205296940664205;15.716134865984243;15.23556804773199;14.833228619436017;14.430889191140043;14.02854976284407;13.69520800466933;13.385878010249542;13.076548015829754;12.814074933955997;12.626606150653274;12.439137367350549;12.254619206014988;12.17629414956346;12.097969093111931;12.019644036660404;11.985166945785362;11.972343600078295;11.95952025437123;11.936650328599486;11.89159225740141;11.846534186203332;11.801476115005256;11.717910377644879;11.632479493858733;11.547048610072588;11.497284053821796;11.471713582626643;11.44614311143149;11.452536615926155;11.561410294935218;11.67028397394428;11.779157652953343;11.950362564329263;12.130100617726093;12.309838671122924;12.484310952906696;12.653948605185994;12.82358625746529;12.992852560480786;13.160212463705646;13.327572366930506;13.494932270155365;13.715185325337131;13.948278177514526;14.18137102969192;14.434969775557692;14.71401371548845;14.99305765541921;15.268810455626069;15.510372703658954;15.751934951691839;15.993497199724724;16.184363311291445;16.35641530011714;16.52846728894283;15.089155793260804;10.916094636411529;6.743033479562257;2.5973328885763194;0.6392251565043654;-1.3188825755675886;-3.2769903076395424;-3.793263428906208;-3.546281479129729;-3.2992995293532497;1.0400755497303278;15.14090894631142;29.24174234289251;43.342575739473595;36.74740490826775;28.7596768802744;20.771948852281053;17.5978394659247;17.930227531995854;18.26261559806701;18.601112358172404;18.96124244787519;19.32137253757798;19.681502627280764;19.988097365184025;20.286114265858778;20.584131166533535;20.847294568844912;21.07611278806061;21.304931007276306;21.516145828405243;21.623999958625685;21.731854088846127;21.83970821906657;21.844629133945134;21.82176932019829;21.798909506451444;21.742543391817243;21.641673737852532;21.540804083887824;21.43813895713276;21.312217297816357;21.186295638499956;21.060373979183556;20.37752518148764;19.471536657085682;18.565548132683723;17.841814229094073;17.447261609443416;17.05270898979276;16.658156370142102;16.26339683187649;15.868637068346054;15.473877304815614;15.102139291123967;14.743260188274022;14.384381085424076;14.037178446067111;13.719342596771158;13.401506747475205;13.08367089817925;12.80370673971284;12.526701229006093;12.249695718299348;11.99076455482302;11.745425672101163;11.500086789379305;11.25204691525974;10.99409817611934;10.736149436978941;10.47820069783854;10.216987970636273;9.955234297383768;9.693480624131265;9.472086989961781;9.290782973227724;9.10947895649367;8.94214048109094;8.856649474451618;8.771158467812295;8.685667461172974;8.643376845595386;8.61256477525432;8.581752704913255;8.565873329425573;8.569417923784135;8.572962518142697;8.576904145337195;8.585445368917927;8.593986592498661;8.602527816079395;8.599503514713296;8.592082429952152;8.584661345191007;8.575372290913164;8.562901603867324;8.550430916821483;8.53784613953745;8.518055616586288;8.498265093635126;8.478474570683966;8.463948821031737;8.452116540403772;8.440284259775806;8.427444337361527;8.412338627773696;8.397232918185866;8.382127208598035;6.787966682100742;5.118397931004498;3.4488291799082544;1.5185239742673207;-0.5846295119245593;-2.687782998116439;-4.225221622880669;-4.0529825711742795;-3.8807435194678908;-3.7085044677615016;10.846678444778401;27.066852597762722;43.287026750747046;43.95953949073625;31.61199776060131;19.264456030466373;9.2747261471042;9.168977791768391;9.06322943643258;8.957481081096772;8.843518649591713;8.728007359690517;8.612496069789321;8.497529007220244;8.383127256399266;8.26872550557829;8.153777107454523;8.035472130397187;7.91716715333985;7.798862176282513;7.6631414884794875;7.522791820423714;7.38244215236794;7.232827229168791;7.0714399493086475;6.910052669448505;6.748967139278578;6.590886812981862;6.432806486685145;6.274726160388429;6.13742569458188;6.007330638456892;5.877235582331905;5.703425939836134;5.462455782705729;5.2214856255753235;4.991214182608023;4.980431357933851;4.969648533259678;4.958865708585505;4.951105584089508;4.944646043080271;4.938186502071034;4.934061686584176;4.9342283488771805;4.934395011170185;4.93437990901214;4.904393233417371;4.874406557822603;4.844419882227834;4.796460845432119;4.739252393458344;4.682043941484569;4.641148142715263;4.635736758632477;4.630325374549692;4.624913990466906;4.748783472372957;4.8766265680266905;5.004469663680423;5.198790365706736;5.4328328828885;5.666875400070266;5.91990745942574;6.221214271861647;6.522521084297554;6.8238278967334605;7.1653382847008755;7.509450415899134;7.853562547097392;8.215492354927491;8.589464821659321;8.96343728839115;9.32796553336186;9.66486794327924;10.001770353196621;10.338672763114001;10.532407481588692;10.712573326987245;10.892739172385799;10.922955059022446;10.841289599062785;10.759624139103126;10.670983165289455;10.559326005844484;10.447668846399514;10.336011686954544;10.35131767384405;10.381821642644681;10.412325611445311;10.528584395405362;10.713812663599157;10.89904093179295;11.105026231345711;11.386333924572073;11.667641617798434;11.948949311024796;9.995259438075342;7.732450969135966;5.469642500196589;2.6258186208743854;-0.7097217060432817;-4.045262032960949;-6.6478025788117465;-6.415175522413824;-6.182548466015901;-5.949921409617978;14.979097504366148;39.00278385292727;63.0264702014884;64.41782431707304;46.14752924904323;27.877234181013407;13.365594562790914;13.792554269580664;14.219513976370415;14.646473683160163;15.006859540313103;15.357090911759492;15.707322283205883;16.01338296604035;16.281055158856798;16.54872735167325;16.803693590292177;17.008812856340437;17.2139321223887;17.419051388436962;17.527897144968712;17.622608655998068;17.717320167027424;17.735898713335477;17.690040661044584;17.64418260875369;17.51061285230182;17.051020346421378;16.591427840540938;16.131835334660497;15.184104891453213;14.171808389694107;13.159511887935;12.8445302957295;13.088298418691567;13.332066541653631;13.504922180711944;13.43759075492471;13.370259329137477;13.302927903350243;13.14987333813075;12.987456784346458;12.825040230562164;12.633042077611004;12.419265688271258;12.20548929893151;11.979351561139817;11.716372194934511;11.453392828729205;11.190413462523901;10.939999674917916;10.690570381710515;10.441141088503114;10.210376414020532;9.991832707045235;9.77328900006994;9.557984658085488;9.350921755247597;9.143858852409705;8.936795949571813;8.726844295802616;8.516775016283072;8.306705736763526;8.093253320571392;7.877901888442554;7.662550456313715;7.421784061718909;7.127257072001505;6.832730082284102;6.53787488786194;6.107551096327895;5.67722730479385;5.246903513259806;4.792190437153164;4.326249395604109;3.8603083540550553;3.4491341358731775;3.1320012971862186;2.8148684584992596;2.5062427411325165;2.3519101133161215;2.197577485499726;2.0432448576833306;1.93947464504471;1.8537080152262881;1.767941385407866;1.6854842635450384;1.6075311341788927;1.529578004812747;1.4525743473490442;1.3832002950990925;1.3138262428491405;1.2444521905991885;1.206731203819937;1.1769845075552081;1.1472378112904795;1.9885337012583426;3.744227952573787;5.4999222038892315;5.982613915187073;0.5847976461465869;-4.8130186228939;-10.210834891934384;-10.837331064128856;-10.74498875305676;-10.652646441984663;13.67651528625532;56.955758460549546;100.23500163484378;122.4070577482469;82.71290602549422;43.018754302741556;3.324602579988891;1.2347624861998414;1.1820832465084026;1.129404006816964;1.045350970602695;0.9439466559853359;0.8425423413679765;0.7131415990624264;0.5294546838842162;0.3457677687060061;0.16049162132899378;-0.06537259807469262;-0.29123681747837904;-0.5171010368820654;-0.7320762379991229;-0.9431496642742051;-1.1542230905492872;-1.3401121076044475;-1.4934000337388764;-1.6466879598733053;-1.8042676462904599;-1.9889831788016108;-2.1736987113127615;-2.3584142438239124;-2.5939558479782394;-2.8392929001074534;-3.0846299522366674;-3.6931021339055863;-4.609166957624051;-5.525231781342516;-6.271543005244557;-6.496247616807987;-6.720952228371418;-6.945656839934848;-7.2034366377484895;-7.462927210596322;-7.722417783444156;-8.006266622334236;-8.302817064334107;-8.599367506333978;-8.94071064353116;-9.36001768424938;-9.7793247249676;-10.201317626017584;-10.657069076184477;-11.11282052635137;-11.568571976518264;-11.951454797875739;-12.31422597976671;-12.676997161657681;-12.984638142548473;-13.236014529823054;-13.487390917097635;-13.74886626471585;-14.048951561079386;-14.349036857442922;-14.649122153806458;-15.003052432665264;-15.361602320335578;-15.720152208005892;-16.087769328793783;-16.460578708488228;-16.833388088182673;-17.17746803625944;-17.468662133129662;-17.759856229999883;-18.050729483968723;-18.337300873309356;-18.62387226264999;-18.910443651990626;-19.242916457885894;-19.58773318516657;-19.932549912447246;-20.399892930776787;-20.985896443103766;-21.571899955430748;-22.189902563840167;-22.91548893652419;-23.641075309208215;-24.36666168189224;-25.103176711552045;-25.840245389254054;-26.577314066956063;-27.163204796436837;-27.67651433546715;-28.189823874497463;-28.65821859181208;-29.059463852896638;-29.460709113981196;-27.553266180498188;-9.817910217222003;7.9174457460541845;25.65280170933037;9.237014849307112;-12.964119268857488;-35.16525338702209;-44.552594157468484;-44.82474375609785;-45.09689335472722;10.540290776717171;187.82004055290815;365.09979032909916;525.9060409676973;351.3610485077116;176.8160560477258;2.2710635877399454;-36.50268560306327;-37.013372033684085;-37.5240584643049;-37.99812995820338;-38.437699207525746;-38.877268456848114;-39.33917878778854;-39.86776616141553;-40.39635353504252;-40.92494090866951;-41.38521598723997;-41.84469684214938;-42.3041776970588;-42.8246726611066;-43.36802527622647;-43.91137789134635;-44.47023029274847;-45.046711441311224;-45.62319258987398;-46.218834328890125;-46.88668031254112;-47.55452629619211;-48.2223722798431;-48.94686238393904;-49.674144779772384;-50.40142717560572;-51.2772629110325;-52.217435030142106;-53.15760714925172;-54.056929607052936;-54.905108029989734;-55.753286452926524;-56.62422480211976;-57.591072988824294;-58.55792117552882;-59.52476936223335;-60.516743316743785 +Lwater;4.112289034901035;9.931047314963113;15.749805595025192;21.54508641477948;26.845634587896093;32.1461827610127;37.44673093412931;42.10713314660695;46.52431288156655;50.941492616526155;49.975527213398514;41.0538333278576;32.132139442316685;22.508112531284112;5.024060771362738;-12.459990988558637;-29.944042748480015;-32.13412599944977;-29.495793163008543;-26.85746032656731;28.887278770977453;152.87169395501581;276.8561091390542;375.58653184487804;279.6382774857908;183.6900231267036;87.7417687676164;72.03051003783635;77.4423460789291;82.85418212002185;87.89313767287287;92.50819809240211;97.12325851193135;101.58191227236253;105.11071397175563;108.63951567114873;112.16831737054181;114.85606152754274;117.35869906964543;119.86133661174811;121.50872576633137;122.28315829064687;123.05759081496237;123.895809214389;125.0459215577826;126.19603390117621;127.34614624456981;129.99564362747498;132.9215274777873;135.84741132809958;138.75320582105226;141.64035157829147;144.5274973355307;148.04387403387517;154.19957359085953;160.3552731478439;166.51097270482825;163.84435759829304;159.81398806687238;155.78361853545175;151.735786085844;147.6730430723669;143.6103000588898;139.55619420644376;135.5341090836529;131.51202396086202;127.48993883807114;123.94713704098545;120.46651103334868;116.9858850257119;113.91951740694566;111.18177525300155;108.44403309905744;105.87905636013664;103.89298429816884;101.90691223620102;99.9208401742332;98.32731854404607;96.77654297183297;95.22576739961985;93.55836253547322;91.80422999913567;90.05009746279813;88.23828140362434;86.24871760201309;84.25915380040182;82.26958999879056;80.8236724741369;79.42742313224943;78.03117379036198;77.28811222797843;77.00394692972598;76.71978163147355;76.58994642690614;76.90343655158028;77.21692667625442;77.53041680092856;77.99834090509324;78.47808377440204;78.95782664371085;79.56596014581336;80.25989444322352;80.95382874063365;81.82321336920774;83.16753269407916;84.51185201895059;85.85617134382201;87.6616944014259;89.49668077561196;91.33166714979802;93.17160551040953;95.0147099399983;96.85781436958706;98.65028730549743;100.31250456148607;101.9747218174747;103.63693907346334;78.90767999897531;52.78040083325276;26.653121667530215;8.815051815809486;-3.928828860355626;-16.672709536520742;-25.29905665663487;-23.792188485358853;-22.28532031408283;-20.778452142806813;70.85883368464124;166.40717739394736;261.9555211032535;263.88466503827607;210.3117552951224;156.7388455519687;120.02309016425818;123.18372621898186;126.34436227370553;129.5049983284292;133.1507416017575;136.81335655916766;140.47597151657786;143.98499454114227;147.40596064848114;150.82692675582;154.12213337644204;157.13046077105355;160.13878816566506;163.14711556027655;165.26434253151942;167.35769598931617;169.45104944711292;170.78849618475562;171.70630542258604;172.62411466041644;173.30779539448346;173.47552105059916;173.64324670671485;173.8109723628305;173.51067962061165;173.20144235276754;172.8922050849234;168.18537098463304;161.11443371250903;154.04349644038498;148.25120068637938;145.1821240051742;142.11304732396903;139.04397064276384;135.71952868760286;132.3921647343446;129.06480078108632;125.79574430227667;122.55700636772616;119.31826843317566;116.16418166378182;113.18417717750941;110.204172691237;107.2241682049646;104.51360144935128;101.80397862909898;99.09435580884667;96.56282382438113;94.1206383290708;91.67845283376047;89.21288786584756;86.70099767347783;84.18910748110811;81.67729928471918;79.18183109098075;76.68636289724232;74.19089470350389;72.14050667244717;70.3047258555756;68.46894503870404;66.89414118962723;65.8159373937509;64.73773359787457;63.66547589762914;62.99961885248237;62.3337618073356;61.66790476218883;61.17536043114727;60.76270420154568;60.35004797194409;59.94954303925548;59.5711447100433;59.19274638083112;58.812681464669375;58.367807607776186;57.922933750883;57.478059893989816;57.024122214101844;56.56621828257463;56.108314351047426;55.65154134660062;55.196724658228575;54.74190796985654;54.2895267132496;53.90013416044047;53.51074160763134;53.12134905482221;52.74703798920584;52.37893716198135;52.01083633475685;47.807518692714055;37.33706009472006;26.866601496726066;16.277972750614854;3.4979019106512172;-9.28216892931242;-22.062239769276058;-24.80075187014118;-23.690596974344366;-22.580442078547552;16.13181074224848;112.4562768850371;208.78074302782568;293.7128591453619;220.42983491929505;147.14681069322822;73.86378646716139;54.471069543866314;54.0445064401184;53.61794333637048;53.19638124063113;52.78194303496599;52.36750482930084;51.95387106867879;51.54883947672308;51.14380788476737;50.738776292811664;50.23463095585768;49.69899273848881;49.163354521119935;48.55388151233869;47.84753792271157;47.14119433308444;46.41425879677281;45.514555633245365;44.61485246971791;43.71514930619046;42.79762485495044;41.8750969040737;40.95256895319695;40.069156235369405;39.23251825818073;38.39588028099206;37.4569063238534;35.83535716604842;34.21380800824344;32.59225885043846;32.13052897727765;31.948494954644676;31.766460932011707;31.591504007444446;31.42417142146925;31.256838835494055;31.099663949482146;30.99684518026422;30.894026411046294;30.79120764182837;30.59076685586449;30.370880869088314;30.150994882312137;29.873784014393532;29.54165915628863;29.209534298183726;28.94812811923952;28.992188471122425;29.036248823005334;29.080309174888242;29.84255084732515;30.716250873736044;31.58995090014694;32.841878414313285;34.411173162421356;35.98046791052943;37.62705263802368;39.54406714976223;41.46108166150078;43.37809617323933;45.50824684922323;47.661749802837825;49.81525275645243;52.09504236791302;54.466022391623596;56.83700241533418;59.18222405297786;61.454358991460666;63.72649392994348;65.9986288684263;67.41909412959164;68.78613756039545;70.15318099119925;70.51428057140618;70.26365667288944;70.01303277437272;69.6831463293212;69.17111978606331;68.65909324280544;68.14706669954755;68.4929848421502;68.85187802155824;69.21077120096628;70.22896803258972;71.57557594235676;72.92218385212381;74.50528162142615;76.5267319656035;78.54818230978086;79.98465333309188;64.75587511382835;49.527096894564814;34.298318675301275;13.578050417078064;-9.299711133363935;-32.17747268380593;-45.285203136028606;-43.891108991170434;-42.497014846312254;-26.194333700050066;145.22347403298053;316.64128176601116;488.05908949904176;426.3393757517235;296.3232913355776;166.30720691943174;97.70909675120032;101.27872075426087;104.84834475732143;108.31130206322017;111.15383979396238;113.9963775247046;116.8389152554468;118.99249865998645;121.00920757693218;123.02591649387792;124.65113931416735;125.91850090840781;127.18586250264828;128.23557350581302;128.4726311376065;128.70968876939995;128.94674640119342;128.07162725478247;127.07390269577449;126.07617813676649;123.36257161489648;119.4606104774245;115.55864933995252;110.60786342332187;102.98137836593918;95.35489330855648;87.72840825117378;88.73777583598914;89.986276603304;91.23477737061887;91.11933361595743;90.31739973888266;89.51546586180788;88.53721716791186;87.24283500978544;85.94845285165901;84.63983270546957;83.06943592303415;81.49903914059874;79.92864235816332;78.17704626955587;76.36370580202721;74.55036533449855;72.77156701587273;71.03658147194555;69.30159592801837;67.59791747447296;66.0921638907572;64.58641030704143;63.08065672332567;61.603691176461176;60.13249479392787;58.661298411394554;57.15869019463978;55.62825915690942;54.09782811917907;52.56123840919032;51.003831730314296;49.44642505143827;47.88901837256225;45.886461668704264;43.84889932915508;41.811336989605906;39.26223361059566;36.40839471754274;33.554555824489825;30.657187690291927;27.67025547930814;24.683323268324347;21.723763827232542;19.705732578608405;17.68770132998427;15.669670081360135;14.420322585371974;13.45489856447427;12.489474543576566;11.703126793138994;11.151165228983903;10.599203664828812;10.058982361867619;9.592839167378873;9.126695972890127;8.660552778401382;8.21992104617385;7.784100037635536;7.348279029097223;7.05565489802974;6.881738235358587;6.707821572687434;9.1410971075159;19.270964179870504;29.40083125222511;39.53069832457972;10.138066344447346;-20.892908549055072;-51.923883442557496;-61.74299678366982;-61.031812493366196;-60.32062820306258;31.463518370867746;273.60750880433653;515.7514992378052;717.4803980089368;495.60312879288074;273.7258595768246;51.84859036076841;6.756211166957359;6.441091539285599;6.12597191161384;5.674823720496586;5.092794408619153;4.5107650967417205;3.84531754230771;2.888087755544662;1.930857968781614;0.9736281820185662;-0.18245312140552372;-1.3521370584093813;-2.521820995413239;-3.597072122916915;-4.621605465144521;-5.646138807372126;-6.567515044334903;-7.310332308191214;-8.053149572047525;-8.804861723604239;-9.655168775381776;-10.505475827159312;-11.35578287893685;-12.47156498279214;-13.653580493840783;-14.835596004889428;-17.681533924886313;-22.0701171970874;-26.458700469288484;-30.065656042787346;-31.177169993247674;-32.288683943708;-33.40019789416833;-34.694152640072915;-35.99587802224114;-37.29760340440937;-38.762723930007795;-40.304446694148865;-41.846169458289936;-43.632090689518954;-45.77894800942933;-47.92580532933971;-50.10456809426076;-52.50200138271078;-54.8994346711608;-57.296867959610815;-59.26072776596919;-61.149381851708235;-63.038035937447276;-64.62694831508459;-65.99712675430575;-67.36730519352692;-68.77940948238246;-70.28698206800398;-71.7945546536255;-73.31128027699309;-75.09387044209589;-76.87646060719871;-78.65905077230153;-80.3752106023434;-82.07068197109749;-83.76615333985157;-85.27262334409356;-86.58464175215958;-87.8966601602256;-89.17836765574806;-90.35530715607486;-91.53224665640165;-92.70918615672845;-94.14696799313688;-95.59645892548372;-97.04594985783054;-99.23723915561209;-101.76049594479643;-104.28375273398079;-107.09633548307143;-110.29907706243586;-113.50181864180027;-116.69749976524126;-119.85664238789693;-123.01578501055259;-126.17492763320824;-128.48961611070754;-130.7097098829929;-132.92980365527825;-134.70148392395865;-136.21849912298657;-137.73551432201447;-107.46475189376878;-24.77849927540892;57.90775334295094;118.57164518293709;15.345701475726756;-87.88024223148358;-191.10618593869393;-206.59533911379987;-207.8759751304659;-209.15661114713194;289.64128360636204;1116.2587581556313;1942.8762327049003;2197.4286050194414;1383.4318143395215;569.4350236596015;-167.7876145824456;-170.24829217905287;-172.70896977566014;-175.16964737226743;-177.48178031109614;-179.76599423271324;-182.05020815433033;-184.42582211860693;-186.8648863814577;-189.30395064430846;-191.7847767599383;-194.34667051431356;-196.90856426868885;-199.48696167839535;-202.23011595606062;-204.97327023372588;-207.71642451139112;-210.42745592470555;-213.13252332735019;-215.83759072999482;-218.7442963776235;-221.78706429333644;-224.82983220904939;-227.9444673819084;-231.19134307048535;-234.43821875906227;-237.78840547487712;-241.98782192135204;-246.18723836782695;-250.38665481430186;-255.00824519244327;-259.6950680666805;-264.38189094091774;-269.05374105984856;-273.7166164111067;-278.3794917623648;-283.0758866627617;-287.82567401274497;-292.5754613627282;-297.30106230929715;-301.8868691596281;-306.472676009959;-311.0584828602899;nan +Lw;4.1072747232187;9.906985531876542;15.706236683384873;21.48201037458541;26.764007206162933;32.04675943066984;37.329511655176745;41.97275568222154;46.375000163632905;50.77724464504428;49.7963439883684;40.89957833436255;32.00789663066018;22.413881901466148;4.975885757713987;-12.449006175620251;-29.873898108954492;-32.01936718162229;-29.389992379697464;-26.76061757777263;28.97516348525573;152.58701365618856;276.14751434666755;374.454022558932;278.4868236406531;182.86657422939376;87.24632481813444;71.7935853103369;77.18692032495035;82.58025533956378;87.6007098659355;92.19989787881605;96.79950629829875;101.2427080586834;104.75804301063374;108.27518607567858;111.7923291407234;114.46910273059596;116.96381633428437;119.4585299379728;121.09799515414177;121.86917393710033;122.64121073881387;123.47703341563856;124.62400743294236;125.77025363639568;126.916499839849;129.56118010813287;132.47743281931074;135.39368553048854;138.28984888430676;141.16714770752353;144.04440062501698;147.55088448361562;153.6914279799316;159.82635872964084;165.9612894793501;163.2787919741692;159.2618240236106;155.24485607305198;151.2104252043063;147.16106415859815;143.1116982649057;139.0709695322443;135.0621818327962;131.05330071349113;127.04441959418602;123.51463066217292;120.04559810561229;116.57656554905164;113.52179138136155;110.7934771790055;108.0645406331695;105.5083695023568;103.53007469557033;101.5504422231047;99.57080975063906;97.98359831633476;96.437860415019;94.89212251370323;93.22975532045393;91.48108900017803;89.73256570645229;87.9263588898903;85.94279356725572;83.95979524116477;81.97679691507385;80.53730126453256;79.14537942404067;77.75345758354881;77.01472352256084;76.7322597930331;76.44878052959965;76.31963135985121;76.63295385421993;76.94487118886107;77.25678852350221;77.72312593722066;78.20089417706258;78.67866241690452;79.28482128954015;79.97632303781532;80.66762014249267;81.53436757833396;82.87529546504852;84.214807484465;85.55431950388146;87.35502757626921;89.18322953108333;91.01143148589743;92.84458542713699;94.68096829105237;96.51738351734456;98.30316724995834;99.95892801198303;101.61519186190061;103.27145571181818;78.53624323125909;52.49946034937328;26.465420008687303;8.720588982003147;-3.9600822334851107;-16.658512874330643;-25.239409959125187;-23.701528816261067;-22.199981660544108;-20.698434504827148;70.93353030706184;166.1587036763649;261.36369705302917;262.94949065540993;209.35234404702777;155.97130925582414;119.44742882006368;122.74855383180586;125.8972593814624;129.04596493111896;132.6797776993801;136.32898931554266;139.9780517767926;143.47352230519675;146.88163753354567;150.29029522915636;153.57319343805017;156.56959774699408;159.56736896287686;162.56514017875958;164.67181097127371;166.7573129567949;168.8431982138724;170.17317675079585;171.08578801304645;172.00039715312738;172.68087778944493;172.84588695687265;173.01298512305405;173.18008328923543;172.87916305708225;172.57070376785254;172.26250399841453;167.55670739653033;160.49909846310757;153.45376278549804;147.68706862600698;144.64131122268705;141.5832689971345;138.5252267715819;135.2118192720735;131.89620648364863;128.58075844319345;125.3236178771869;122.09655716374292;118.869226887111;115.72654777563574;112.75781213144494;109.78811611300677;106.8184200945686;104.11816180678952;101.417971953967;98.71753958726634;96.19519805635244;93.76180320768503;91.32789957424069;88.87061646819375;86.36705041252617;83.86387730908397;81.36078620162256;78.87403509681165;76.38736420319835;73.90071942184319;71.85915480316974;70.03128500447772;68.20211232104312;66.63391660540327;65.5621240699391;64.48769631014291;63.41921464597764;62.757133636911014;62.094051201718045;61.43059341736965;60.940448347126456;60.52980535708049;60.11854688880505;59.71943971744258;59.342433496530425;58.965303698336164;58.58650731319235;58.14290198731708;57.699501714961485;57.25618837007724;56.80381120219821;56.3474993491892;55.89124335344262;55.43611828477644;54.98294860874179;54.52973397723325;54.0789547774898;53.69116428154416;53.303168402896524;52.91507563117599;52.54206434664821;52.17524981762142;51.808409006775186;47.60635138111064;37.137152799494906;26.706890669259085;16.158498328917798;3.418663894724085;-9.315119263349157;-22.045773857480295;-24.734869712512918;-23.592452542105022;-22.48653318967248;16.22148408775928;112.54171468718363;208.4989991233527;293.0567510504629;219.39936263397004;146.16505667413193;73.16687681731844;54.05900426327669;53.831400492243354;53.40657506166408;52.986750639093366;52.574050106596864;52.16115821846882;51.74906389543413;51.34557174106579;50.9420524508717;50.538517058934396;50.03586792199882;49.50184908594687;48.96813140663971;48.360578935920195;47.65615588435479;46.95252689007291;46.22834477652995;45.33139503577117;44.43492569440696;43.53875470491131;42.624762427703104;41.70576970934614;40.78678482421506;39.90691517213319;39.073820260690184;38.24030641196041;37.304432278891504;35.68598294515627;34.06939279703639;32.453991459541726;31.998409406691223;31.820938333381342;31.639293764763732;31.464726294211832;31.297783162252;31.1306092910408;30.97357864130964;30.870904108372464;30.76813244885413;30.66529794809631;30.46484143059254;30.245084175259006;30.025709962546742;29.74901086869205;29.41739778465106;29.086356401742897;28.8260695044953;28.87124913807482;28.915552659091155;28.959293147694677;29.721214956852197;30.593637435072505;31.463560387977054;32.71171082863706;34.27722850323879;35.840052730557325;37.4800125420549;39.39040213779678;41.29990523317084;43.20885361635022;45.330938163774945;47.476120885656215;49.62066608500488;51.891497942199514;54.253520211644144;56.61460226558396;58.94988208407971;61.21207520341459;63.474493916833545;65.73704713711399;67.14793068007698;68.50644243552195;69.86742657561115;70.22246686510348;69.96578367587216;69.71591988500136;69.38700203386246;68.87594408451717;68.36568374622183;67.85586589637157;68.20399273238185;68.56383836150431;68.9209730596106;69.9374114099323;71.28226083839759;72.62293240798655;74.2000549379892;76.21553004286685;78.22912993957183;79.65680815497562;64.41923712780485;49.206672959097546;34.042442406711665;13.386721815366116;-9.425932256678761;-32.206352955177046;-45.216742555456015;-43.72530755865414;-42.30558244855825;-26.008910058275674;145.40288891877532;316.54697867339814;487.2378501653588;424.7912001769705;294.1115015766615;164.64693089824655;96.60033446774601;100.72147220853746;104.42968706218596;107.87729875140543;110.70449086546839;113.53277485874906;116.36264262482614;118.50355606470066;120.5078792747615;122.515131575737;124.1308977800562;125.38880275832642;126.64904200761237;127.69232950402265;127.92296362906167;128.155537698122;128.39046851863847;127.51322256095052;126.5140698688424;125.51942579484725;122.80889975799012;118.91001910553099;115.02190019271713;110.08735676740172;102.47711420133426;94.87521177836427;87.28158636843463;88.32381360070306;89.59788803742387;90.84028033938938;90.71872811937858;89.91068577695445;89.11077772373986;88.135739601806;86.84456801564173;85.5546331526608;84.25143360542599;82.68645742194519;81.12180955138301;79.55816165810637;77.81331445865771;76.00672288028782;74.201112370589;72.43011154081248;70.70292348573457;68.97552416719807;67.27930512454653;65.78101095172464;64.28239227386563;62.78306816011436;61.312532083214364;59.84776398335899;58.38280362931319;56.886431441045936;55.3622364318031;53.83815358473323;52.30796056969031;50.75695058576013;49.20607662236585;47.655414528646986;45.65960240994615;43.628976446346805;41.60042056645148;39.060323647095096;36.21549121369603;33.373756437881305;30.489368489092076;27.51541646351696;24.54184401337197;21.59606348673319;19.591811152562073;17.586795191273577;15.578099874686037;14.338088310734475;13.38200022187337;12.421683730538511;11.639808836111126;11.092320127966223;10.543754323014381;10.00610988524175;9.542543555941567;9.078875423154932;8.614928783660812;8.176493606427906;7.742869152884219;7.309100307626776;7.0185236102503;6.846654381270153;6.67394164546901;9.108005456560152;19.23866080517743;29.35064003142965;39.431163450785725;9.989187817654829;-21.075808967157688;-51.95510719750821;-61.62254387546864;-60.75968292201311;-60.01745556273298;31.763897501896032;273.9050944260635;515.4612809929627;715.9854991532038;492.90354932625723;270.26867708067493;49.49590791505799;5.508028771686158;6.297409194453619;6.092354000112656;5.642687875595859;5.062140630318885;4.482457925601888;3.8199083133729235;2.865576468814921;1.911875862122109;0.9595119724861958;-0.19170343381075935;-1.3564838666154322;-2.5201278043307003;-3.5893389325457865;-4.607832275484803;-5.626830700962701;-6.542845418239327;-7.280301162409487;-8.018422464024562;-8.766226351269363;-9.61262513873499;-10.458920465472096;-11.304720085048887;-12.41599475670343;-13.593502835551327;-14.769510224437338;-17.60925176470232;-21.99163865717151;-26.36383091628066;-29.947755421001425;-31.036238302683657;-32.13026803005012;-33.235881498689565;-34.52393576277327;-35.81972428192976;-37.11470743884316;-38.57308573918676;-40.108066278073004;-41.642009672962466;-43.4198309026702;-45.55858822105929;-47.69588193675424;-49.863531374196555;-52.24985133516783;-54.63586291915679;-57.02070596631405;-58.97197553137966;-60.848039375825934;-62.72652693421261;-64.30544647053331;-65.66563206843786;-67.02744694599129;-68.43203179889021;-69.93208494855509;-71.43176475523575;-72.94000266642853;-74.71410511935652;-76.48801846552607;-78.26045784497137;-79.96646688935571;-81.65178747245227;-83.33729239330104;-84.83383024597791;-86.1359165024788;-87.43900950973173;-88.71253920418671;-89.88130090344603;-91.05029464627499;-92.21981490978247;-93.65017750937159;-95.09217628569509;-96.5323907142503;-98.71440350824024;-101.22838379363299;-103.73794603971857;-106.53554393271426;-109.72330065598373;-112.90899647881552;-116.08565181767652;-119.2257686557522;-122.36583899026874;-125.50576786789482;-127.80124260036455;-130.00212262762034;-132.20863579383177;-133.96681436159574;-135.4703278597072;-136.97617034749058;-106.69511268085083;-23.9985648240969;58.473465195348666;118.66780203638201;14.972303330218887;-88.49991564599328;-191.13643789134858;-206.03616960459945;-206.72738415941043;-207.97343715103497;290.833026518935;1117.4590699846804;1940.7429023553361;2190.536136229993;1371.780207110189;557.2595484768174;-175.27366367349399;-173.04491517836553;-171.73667020449474;-174.18219960181722;-176.4791843413611;-178.74825006369338;-181.01704475689365;-183.3772243471436;-185.80085423596773;-188.2246039178492;-190.69016711213757;-193.23679794517136;-195.78280484129235;-198.34455832008243;-201.07106866683125;-203.7973156121432;-206.52254976710873;-209.21566105772345;-211.90280833766838;-214.589935239131;-217.47869959166061;-220.50352621227452;-223.52683193808178;-226.6214138332284;-229.84823624409293;-233.07391090283284;-236.40164960250937;-240.57861803284595;-244.7542645814029;-248.92572462768095;-253.51935860562546;-258.1782231316029;-262.8362139179745;-267.4792319490396;-272.11327521243214;-276.74704389777384;-281.4142482706585;-286.13484509312957;-290.8545880440749;-295.54939170508385;-300.1044012698548;-304.65877186558197;-309.21164011398037;nan +Rs;-5.239439788291884;-30.83432744913774;111.13927938323863;27.49323398683429;18.39314065930363;15.0534847311179;13.146486303200032;11.695411425048023;10.69006499693561;9.967841390711397;8.45095781900802;6.112922864442532;4.274011554243442;3.316601592579896;0.8880156114903507;-2.7983683930879866;-11.687764633838698;101.47814230427267;9.221671493356729;4.606764112465005;-5.353627054390217;-30.42300248307581;-59.78797635038068;33.03244328278212;8.372066870184215;3.313300325699699;1.3902083180997598;1.57062906455419;2.6929648132621895;6.959619847781544;6.937158515594265;6.885792514511123;6.839988617843786;6.8599127381160505;6.853708610190882;6.848031844779364;6.876818410559918;6.93055529012287;6.971773504913671;7.011732781271239;7.073454275719456;7.088011018534542;7.102493290150377;7.184650602392061;7.3311674442854855;7.480900778714251;7.626628975210537;7.841854330146623;8.07677220688931;8.315137610505918;8.447773518462936;8.563472886097765;8.67756882459449;8.826283178780741;9.128033334419372;9.425178839074752;9.680540297086907;9.248050901181273;8.766468490833375;8.311270455460033;8.251612295444891;8.280632810688807;8.311517930524161;8.330366944171221;8.334446590354204;8.338774248949775;8.338672978661812;8.326887815935864;8.318655663943094;8.309951314983078;8.289161533191516;8.276892789114854;8.263996010441936;8.233787459972653;8.199358834853173;8.16378493332245;8.125165545883815;8.047078783806125;7.971409058229998;7.894753141131167;7.778761509303681;7.64103437522289;7.503023850279852;7.366083153095648;7.227189741034413;7.087287633791301;6.946317233218188;6.873008810357477;6.803827117496729;6.733621742591766;6.698514463244951;6.68882283717756;6.678999186481316;6.663993656542378;6.628339614224315;6.59323040987284;6.558770227863612;6.5038299481571435;6.446846291017997;6.391526690067281;6.350756688824738;6.320266150364991;6.290566345707837;6.275324621656206;6.297413183382036;6.318840758533479;6.339736857597173;6.369219628034588;6.393852230080421;6.417675082003308;6.4319210133953995;6.434747861583689;6.437471644248532;6.438168024656876;6.4446502944705095;6.450965686027456;6.4570903050269495;4.852600112879709;3.209716761654817;1.6012023102948008;0.5779375003801062;-0.3627746337298993;-2.4704775565510135;-9.717433629756911;-37.07852949010026;16.83241713235177;6.316294087466036;-18.699869291048845;-46.8543471955703;-79.2179354216631;252.8176830265723;13.826933692645284;5.333858271059367;2.7558913327635657;3.340332579626292;4.377561677955166;6.212511201949542;7.539549270027864;7.603305037388311;7.664731868506745;7.713168951541848;7.746414188697077;7.7784481892711295;7.802920150272497;7.833141638568988;7.865841968140065;7.897595427445788;7.89895352739757;7.9121474929314815;7.925076037852792;7.909091995748429;7.911847407528382;7.914667402511531;7.906739231923004;7.912511853464308;7.928458164155955;7.944437919611636;7.951193194911362;7.973999879039691;7.997032205834142;7.815823366551224;7.530849381849737;7.243067188519746;7.012556793719972;7.098080357377708;7.2712940683914855;7.461413246814682;7.578367173646946;7.559708190095526;7.54019543288741;7.523258582313202;7.50744499601903;7.490827748794208;7.478833229446673;7.466346982888476;7.446664761456641;7.426000427839708;7.417314113860324;7.392334671913192;7.3661522877540895;7.352309516569937;7.323020209207628;7.290658402769851;7.254924408892325;7.202797621256514;7.140130945469718;7.074797581246242;7.009749931796382;6.94803366128947;6.883354209592505;6.857967018897908;6.854396345160467;6.850879676329326;6.874096022797285;6.921613382501636;6.941040006635646;6.961892655865834;7.01813327241026;7.011009228810283;7.003703517933554;7.016207864225167;7.003027455400852;6.980330303179613;6.958886112303353;6.927773878312759;6.880899522321104;6.8338695275066845;6.779008019918967;6.720618352992173;6.662354863347567;6.603153447062793;6.55241308440442;6.504970571348891;6.457577772224048;6.41172729806776;6.368137402467126;6.324705187793387;6.2886076188359326;6.257668510534849;6.22657390045497;6.197112925044675;6.164409889621871;6.129637323280473;5.640372991700066;4.406692149226564;3.1747284377123313;1.9242646341181486;0.40785158822421147;-1.3722989076997518;-4.307162935483947;-7.171961388116912;-15.536437318013533;38.46287731121953;-6.035265532644216;-26.635695055080923;-51.443349548612495;-75.51561951474841;-59.161142865334654;13.475559123308933;2.7031911653949092;1.248850020920962;1.224566979451353;1.689440049506324;2.7504929573560664;5.668528565990251;5.688873874827944;5.709781955581091;5.732144034266711;5.760382769501321;5.790384331289842;5.809682526011626;5.8254404361415855;5.841272583481285;5.8486134173029365;5.844672383892557;5.8431572069620366;5.83900072856597;5.812565219273988;5.7985260693945095;5.787579364712373;5.77380242851359;5.766178063973891;5.767818876578689;5.77519696030308;5.789600016465175;5.801997135899783;5.799091322909459;5.6872574249434935;5.551088435516679;5.402398072079183;5.4444660178136415;5.579267385787356;5.7921372773276305;6.026010325508639;6.270575057930732;6.250584950126777;6.232549129785952;6.225396274580352;6.2143963456825135;6.201717510399054;6.169236706190794;6.129855299032046;6.085188572470366;6.028907454986485;5.9617212957038825;5.930673789278431;5.913759790560413;5.959691736051091;6.0285184411812125;6.110519285207851;6.347914570709535;6.591825232532648;6.787175809624417;7.064667854322946;7.411430477170527;7.547207182442481;7.685643347758131;7.871044243442972;7.944137448896044;7.953282301843446;7.999282666990149;8.019740377877737;7.976041961685448;7.955742460859825;7.950599140639976;7.90117647152334;7.850092725729973;7.794179372269472;7.726194751890042;7.653218041169513;7.491314829305777;7.344199781882317;7.229009954988116;7.021003720872275;6.767385454494113;6.619181797406638;6.477155387031226;6.323105969444738;6.258900029964991;6.2590216114361175;6.338882460076996;6.425259725320211;6.527023885943431;6.694068546595846;6.89649576619244;7.015815251375375;7.1471132419769985;7.319741322638828;7.430166012983736;7.434963691834427;5.910541811058924;4.431027170399998;2.989763222493149;1.1473374186386824;-0.7888503006688502;-3.22216278173752;-5.847659782899159;-7.994180160235804;-16.111387935268233;36.64663182316358;-35.94399762834325;-47.616783880182396;-75.95082137082773;-68.70810678023045;-49.43115737650479;10.991779100860704;2.4767548601661127;1.5980820738737622;1.6211303031311528;2.3376614199478953;3.9711432686125967;8.494405117959968;8.436627498465802;8.33386825046387;8.227774267147721;8.163942045744026;8.082969521591135;7.982824856938914;7.908949800063954;7.8430008533297535;7.730078628440713;7.626629050898665;7.548467350605124;7.407559275495509;7.262971274820649;7.161122909194896;6.968826361367936;6.711512688404585;6.485259193898819;6.223126270694571;5.80798308845959;5.418154840074182;5.118848291489668;5.323460671955248;5.554103806460005;5.982590412064481;6.4013515865307795;6.8323723966834224;6.937643936529704;6.73393414348944;6.5139614885893025;6.335070428976777;6.269831783242013;6.184357040984884;6.098041734929127;6.0501085913437045;5.991420472131593;5.926431536578205;5.873574386496538;5.8320768199053346;5.792715208223895;5.7578679292583645;5.742332524536413;5.743364602558845;5.744416190621011;5.738854664141974;5.735197458510555;5.731917946138875;5.717987394582629;5.6932930233044585;5.66464743152555;5.632793471706334;5.593882821266884;5.55093329906159;5.506008741838113;5.460784324015956;5.361137557661247;5.2522597801021425;5.1401357301780894;4.9582140270621275;4.726297258356784;4.496729648875265;4.277854465059996;4.027001818037407;3.753795298061724;3.5359611644866322;3.450947108638534;3.3518426909945633;3.250726380552673;3.3142075270333167;3.4665625112087914;3.6013918975620984;3.716412520827593;3.940617578229594;4.206996453284445;4.254461013874991;4.342301292630692;4.44336144491695;4.441887810016828;4.410885392557239;4.379596075295183;4.336498694003658;4.3660265490504955;4.476172094347245;4.594561137368967;6.5847335984754505;14.64323072391735;23.585188931442737;32.67601212761004;8.487102212079263;-18.37091556758437;-26.127345573590762;-16.458010745074755;-11.04737133900682;-10.031978732636679;54.316048826800525;-56.90921142984773;-50.48179570508279;-66.06658917370237;-45.872877175979816;-25.37103606625679;3.6190438045867275;0.09670714464282482;0.06282644876282925;0.049771264109972534;0.06822016232698486;0.11767287808229906;1.3482687983767567;3.0936381337023278;2.4241748432516608;1.6928183808293817;0.9178849969718696;-0.203087147557772;-1.609988958433834;-3.5338392931276688;-6.779312832239899;-13.326378837244015;-35.05996546341937;100.08544269211518;24.9978736392076;15.506490786351513;11.97447191460388;10.192046398205871;9.061437560129528;8.435652525561414;8.313910858578692;8.25505691837159;8.18587544636361;8.85339401176441;10.117151260530537;11.178626055757945;11.545206308867234;10.93097450478219;10.416247176343612;8.999448239884297;7.490276676931178;6.482936046752832;5.917954705533568;5.937748684238137;5.967616628602604;5.995402685824755;6.0276550049923845;6.104653969607583;6.1762887316208035;6.228062807088828;6.293026924513881;6.35347458739425;6.377648068453041;6.3004128326183695;6.222110532895464;6.148865198965474;6.034064901975508;5.908997802378583;5.793925739671476;5.72583279242736;5.678967160701718;5.634754338455269;5.617407421421812;5.644758469478299;5.671075965371782;5.692138998094239;5.691988227142258;5.690401961027723;5.688893267344795;5.6544380303086985;5.607222131278109;5.562224102715823;5.514284633942979;5.460397383057798;5.408910800921524;5.368650066186601;5.361038916183637;5.354332549441799;5.347838756321897;5.383257012046022;5.435410121269228;5.485748930528052;5.5363512160889305;5.6016334110102735;5.6645535556044155;5.690502994873131;5.6812330594975045;5.672464606413262;5.655985532465308;5.577068111196469;5.498993634057941;5.4258001165617555;5.336647863373663;5.2426099605092755;5.153875594892973;3.927927999675748;0.8671093669242518;-2.0742756483926796;-4.140794783046512;-0.5152298544120061;3.0039981489784915;6.93697932721429;20.985745952655268;-26.110363214353203;-8.107240663517523;31.485607770864526;-86.19629662533649;-55.189219909661645;-49.167420610518754;-30.603191276995872;-12.356938738406543;-16.628921097761584;-0.9213336056629137;-0.4703828234184746;-0.3312040289199036;-0.5022730467446445;-1.0109277067883815;-79.7058460776227;5.023663911779542;5.019830510629491;5.016104643822032;5.018409256505258;5.027272753810857;5.0359197704077845;5.041908967902795;5.043449584126187;5.044943361913982;5.0463738048638;5.055323647996172;5.064030195678766;5.072547131770638;5.078350541349845;5.084472368935608;5.090408059869431;5.096025191265591;5.102442084891125;5.108671657374616;5.114833661106446;5.131065292513291;5.146813219354924;5.162038134149025;5.179481303970423;5.197436700243598;5.2148565754341805;5.216332088807541;5.2111574430141365;5.206160674628288;5.205886651652182;5.211443076240553;5.216815125143313;5.219486760974073;5.2109534637094;5.2026910407621845;5.1946717883490985;nan \ No newline at end of file diff --git a/data/2022/8/17/17/2022_8_17_12_20_13_info.txt b/data/2022/8/17/17/2022_8_17_12_20_13_info.txt new file mode 100644 index 0000000..b0f819e --- /dev/null +++ b/data/2022/8/17/17/2022_8_17_12_20_13_info.txt @@ -0,0 +1,35 @@ +time : 2022-8-17 12:20:13 +year : 22 +month : 8 +day : 17 +hour : 12 +minute : 20 +second : 13 +Roll : 55825 +Pitch : 50273 +Yaw : 58795 +Hx : 64383 +Hy : 51 +Hz : 4078 +lon : 0 +lat : 0 +satelite_num : 0 +PDOP : 0 +HDOP : 0 +VDOP : 0 +Temperature : 61036 +Humidity : 100 +Battery : 0 +ErrorCode : 0 +Azimuth : 16594 +RunAngle : 3094 +MeasuyeGroupNum : 0 +Tiltx : 0.0 +Tilty : 0.0 +Depth : 0.0 +Sensor1 : 0 +Sensor2 : 0 +Sensor3 : 0 +Measure_Num : 0 +Measure_Interval : 0 +Measure_Repeat : 0 diff --git a/data/2022/8/17/17/3.bin b/data/2022/8/17/17/3.bin new file mode 100644 index 0000000..8a62d60 Binary files /dev/null and b/data/2022/8/17/17/3.bin differ diff --git a/data/2022/8/17/17/4.bin b/data/2022/8/17/17/4.bin new file mode 100644 index 0000000..89210a0 Binary files /dev/null and b/data/2022/8/17/17/4.bin differ diff --git a/data/2022/8/17/17/info.bin b/data/2022/8/17/17/info.bin new file mode 100644 index 0000000..ff1a1ac Binary files /dev/null and b/data/2022/8/17/17/info.bin differ diff --git a/data/2022/8/17/17/pic.jpg b/data/2022/8/17/17/pic.jpg new file mode 100644 index 0000000..c78ef0e Binary files /dev/null and b/data/2022/8/17/17/pic.jpg differ