# -*- coding: utf-8 -*- import warnings warnings.filterwarnings('ignore') import argparse, json from common import NoIndent, MyEncoder import os, sys sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))+'/pyat') def _argparse(): parser = argparse.ArgumentParser(description='tl client') parser.add_argument('-a', '--argfile', action='store', dest='argfile', required=True, help='name of arguments file') return parser.parse_args() def main(): parser = _argparse() argfile = parser.argfile if argfile[-5:] != '.json': print('输入的参数文件名有误') return with open(argfile,'r') as jsonFile: paramData = json.load(jsonFile) if (("ETOPO1Path" not in paramData) or ("STPath" not in paramData) or\ "freq" not in paramData) or ("sourceDepth" not in paramData) or\ ("receiveDepth" not in paramData) or ("sLat" not in paramData) or\ ("sLon" not in paramData) or ("rLat" not in paramData) or\ ("rLon" not in paramData) or ("timeType" not in paramData) or\ ("modelType" not in paramData) or ("png" not in paramData) or\ ("outParam" not in paramData): print(f'{argfile}中的参数有误,请核实!') return ETOPO1Path = paramData["ETOPO1Path"] STPath = paramData["STPath"] freq = float(paramData["freq"]) sourceDepth = float(paramData["sourceDepth"]) receiveDepth = float(paramData["receiveDepth"]) sLat = float(paramData["sLat"]) sLon = float(paramData["sLon"]) rLat = float(paramData["rLat"]) rLon = float(paramData["rLon"]) timeType = paramData["timeType"] modelType = paramData["modelType"] png = paramData["png"] outParam = paramData["outParam"] from DataBase import DataBase from tlcore import call_tl import numpy as np # 定义时间段 timeIndex = timeType # 创建类 database = DataBase(ETOPO1Path, STPath) # 设置时间段 database.set_timePeriod(timeIndex) [ranges, depths, TL, bathym] = call_tl(database=database, freq=freq, sourceDepth=sourceDepth, sourceLat=sLat, sourceLon=sLon, receiveDepth=receiveDepth, receiveLat=rLat, receiveLon=rLon, modelType=modelType, isPlot=png) # write data to file # 保存地形数据 bathym.r = np.around(bathym.r, decimals=0) bathym.d = np.around(bathym.d, decimals=0) bathymData = { "param": paramData, "count": len(bathym.d), "descript": "距离、深度", "data": NoIndent(list(zip(bathym.r, bathym.d))) } with open(("" if outParam["outPath"]=="" else outParam["outPath"] + "/")+"tlOut_bathym.json", 'w') as jsonFile: json_data = json.dumps(bathymData, cls=MyEncoder, indent=2, ensure_ascii=False) jsonFile.write(json_data) # 保存传播损失数据 tlpoint = [] depths = np.around(depths, decimals=0) ranges = np.around(ranges, decimals=0) TL = np.around(TL, decimals=2) tlpoint = list(zip(np.tile(depths.reshape(len(depths),1),len(ranges)).flatten(), np.tile(ranges,(len(depths),1)).flatten(), TL.flatten())) tlData = { "param": paramData, "count": len(ranges)*len(depths), "descript": "距离、深度、损失", "data": NoIndent(tlpoint) } with open(("" if outParam["outPath"]=="" else outParam["outPath"] + "/")+"tlOut_tl.json", 'w') as jsonFile: json_data = json.dumps(tlData, cls=MyEncoder, indent=2, ensure_ascii=False) jsonFile.write(json_data) if __name__ == '__main__': main()