# -*- 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') # import time 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, 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__': # start = time.perf_counter() main() # end = time.perf_counter() # print('time = ',(end-start))