# -*- coding: utf-8 -*- import warnings warnings.filterwarnings('ignore') import argparse, json from common import NoIndent, MyEncoder 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 pyat.tlcore import call_tl import numpy as np [ranges, depths, TL, bathym] = call_tl(ETOPO1Path, STPath, freq=freq, sourceDepth=sourceDepth, sourceLat=sLat, sourceLon=sLon, receiveDepth=receiveDepth, receiveLat=rLat, receiveLon=rLon, timeType=timeType, 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()