文件
AcousticSO/tl.py
T

79 行
3.4 KiB
Python

# -*- 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()