90 行
3.7 KiB
Python
90 行
3.7 KiB
Python
# -*- 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() |