Added para datasource to database, modified calling method of database

这个提交包含在:
2023-03-28 11:31:57 +08:00
父节点 d0400e2c76
当前提交 ea2a7195a9
共修改 7 个文件,包含 30 行新增和 27 行删除
+2
查看文件
@@ -161,6 +161,7 @@ cython_debug/
#.idea/ #.idea/
.vscode/ .vscode/
out/
packages/ packages/
pyat/at/ pyat/at/
pyat/bin/ pyat/bin/
@@ -169,3 +170,4 @@ test/
*.json *.json
*.c *.c
*.sh
-2
查看文件
@@ -29,8 +29,6 @@ def main():
outParam = paramData["outParam"] outParam = paramData["outParam"]
from pyat.cscore import np, dis_mats, pn_funcs, ag_funcs from pyat.cscore import np, dis_mats, pn_funcs, ag_funcs
import sys
print(sys.path)
# 输出: # 输出:
+8 -1
查看文件
@@ -44,13 +44,20 @@ def main():
from pyat.czcore import call_cz from pyat.czcore import call_cz
import numpy as np import numpy as np
# 定义时间段
timeIndex = timeType
# 创建类
database = DataBase(ETOPO1Path, STPath,datasource="")
# 设置时间段
database.set_timePeriod(timeIndex)
# call_cz函数返回汇聚区计算的中间值CzData的列表 # call_cz函数返回汇聚区计算的中间值CzData的列表
# CzData保存了方位角、距离、深度、损失、地形、会聚区等数据 # CzData保存了方位角、距离、深度、损失、地形、会聚区等数据
# 其中czdata.azi是方位角、czdata.ranges是距离列表、czdata.depths是深度列表、 # 其中czdata.azi是方位角、czdata.ranges是距离列表、czdata.depths是深度列表、
# czdata.TL是损失、czdata.bathym是地形数据 # czdata.TL是损失、czdata.bathym是地形数据
# czdata.Rays是声线数据 # czdata.Rays是声线数据
# czdata.CzDetail是会聚区数据,包括会聚区宽度和距离 # czdata.CzDetail是会聚区数据,包括会聚区宽度和距离
res = call_cz(ETOPO1Path, STPath, freq, lat, lon, azi, sourceDepth, receiveDepth, timeType=timeType) res = call_cz(database, freq, lat, lon, azi, sourceDepth, receiveDepth)
# call_cz(25, 18.0, 114.0, 10, 3500) # call_cz(25, 18.0, 114.0, 10, 3500)
# write data to file # write data to file
+1 -1
查看文件
@@ -33,7 +33,7 @@ class DataBase():
""" """
获取数据库中的剖面信息 获取数据库中的剖面信息
""" """
def __init__(self,ETOPO1path,STpath): def __init__(self,ETOPO1path,STpath,dataSource):
# 打开ETOPO1数据 # 打开ETOPO1数据
fileETOPO1 = ETOPO1path+'/ETOPO1_Bed_g_gmt4.nc' fileETOPO1 = ETOPO1path+'/ETOPO1_Bed_g_gmt4.nc'
dataETOPO1 = Dataset(fileETOPO1) dataETOPO1 = Dataset(fileETOPO1)
+4 -10
查看文件
@@ -277,22 +277,16 @@ def call_fangwei(freq, sd, rd, bathm, ssp, sed, base, isPlot=False):
czdetail.reflectCz = [] czdetail.reflectCz = []
return Pos.r.range, Pos.r.depth, TL[0, 0, :, :], bathm, Rays, czdetail return Pos.r.range, Pos.r.depth, TL[0, 0, :, :], bathm, Rays, czdetail
def call_cz(ETOPO1Path, STPath, freq, lat, lon, azi, sourceDepth=10, receiveDepth=10, timeType='Annual', isPlot=False): def call_cz(database, freq, lat, lon, azi, sourceDepth=10, receiveDepth=10, isPlot=False):
sd = np.array([sourceDepth]) # Source depth sd = np.array([sourceDepth]) # Source depth
rd = np.linspace(0, receiveDepth, 351) # Receiving depth rd = np.linspace(0, receiveDepth, 351) # Receiving depth
# 定义时间段
timeIndex = timeType
# 创建类
data = DataBase(ETOPO1Path, STPath)
# 设置时间段
data.set_timePeriod(timeIndex)
results = [] results = []
ranges, depths, TL, bathym, Rays = [], [], [], [], [] ranges, depths, TL, bathym, Rays = [], [], [], [], []
''' 计算单个方向的会聚区 ''' ''' 计算单个方向的会聚区 '''
if azi != None: if azi != None:
[bathm, ssp, sed, base] = GetEnv(data, 25, Coord(lon, lat), R=100, azi=azi) [bathm, ssp, sed, base] = GetEnv(database, 25, Coord(lon, lat), R=100, azi=azi)
if np.mean(bathm.d) < 2000: if np.mean(bathm.d) < 2000:
return results return results
else: else:
@@ -302,7 +296,7 @@ def call_cz(ETOPO1Path, STPath, freq, lat, lon, azi, sourceDepth=10, receiveDept
return results return results
''' 计算8个方向的会聚区 ''' ''' 计算8个方向的会聚区 '''
[bathm, ssp, sed, base] = GetEnv(data, 25, Coord(lon, lat), R=100, azi=0) [bathm, ssp, sed, base] = GetEnv(database, 25, Coord(lon, lat), R=100, azi=0)
if bathm.d[0] < 2000: if bathm.d[0] < 2000:
# file_cz_data.write("各个方位都不会出现会聚区") # file_cz_data.write("各个方位都不会出现会聚区")
return results return results
@@ -310,7 +304,7 @@ def call_cz(ETOPO1Path, STPath, freq, lat, lon, azi, sourceDepth=10, receiveDept
descripts = ["正北方向", "东北方向", "正东方向", "东南方向", "正南方向", "西南方向", "正西方向", "西北方向"] descripts = ["正北方向", "东北方向", "正东方向", "东南方向", "正南方向", "西南方向", "正西方向", "西北方向"]
theta = np.arange(0, 359, 45) theta = np.arange(0, 359, 45)
for i in range(8): for i in range(8):
[bathm, ssp, sed, base] = GetEnv(data, 25, Coord(lon, lat), R=100, azi=theta[i]) [bathm, ssp, sed, base] = GetEnv(database, 25, Coord(lon, lat), R=100, azi=theta[i])
if np.mean(bathm.d) < 2000: if np.mean(bathm.d) < 2000:
# 不会出现会聚区 # 不会出现会聚区
continue continue
+4 -10
查看文件
@@ -6,8 +6,8 @@ from pyat.krakenc import call_krakenc
from pyat.ram import call_ram from pyat.ram import call_ram
import matplotlib.pyplot as plt import matplotlib.pyplot as plt
def call_tl(ETOPO1Path, STPath, freq, sourceDepth, sourceLat, sourceLon, receiveDepth, def call_tl(database, freq, sourceDepth, sourceLat, sourceLon, receiveDepth,
receiveLat=None, receiveLon=None, range=None, azi=None, timeType='Annual', modelType='kraken', isPlot=False): receiveLat=None, receiveLon=None, range=None, azi=None, modelType='kraken', isPlot=False):
""" Input: """ Input:
freq - float, Frequency freq - float, Frequency
sourceDepth - float, Source depth sourceDepth - float, Source depth
@@ -29,18 +29,12 @@ def call_tl(ETOPO1Path, STPath, freq, sourceDepth, sourceLat, sourceLon, receive
TL 传播损失 TL 传播损失
bathym类 地形数据 bathym.r距离 bathym.d深度 bathym类 地形数据 bathym.r距离 bathym.d深度
""" """
# 定义时间段
timeIndex = timeType
# 创建类
data = DataBase(ETOPO1Path, STPath)
# 设置时间段
data.set_timePeriod(timeIndex)
bathym, ssp, sed, base = [], [], [], [] bathym, ssp, sed, base = [], [], [], []
if (receiveLat != None) and (receiveLon != None): if (receiveLat != None) and (receiveLon != None):
[bathym, ssp, sed, base] = GetEnv(data, 25, Coord(sourceLon, sourceLat), coordR=Coord(receiveLon, receiveLat)) [bathym, ssp, sed, base] = GetEnv(database, 25, Coord(sourceLon, sourceLat), coordR=Coord(receiveLon, receiveLat))
elif (range != None) and (azi != None): elif (range != None) and (azi != None):
[bathym, ssp, sed, base] = GetEnv(data, 25, Coord(sourceLon, sourceLat), R=range, azi=azi) [bathym, ssp, sed, base] = GetEnv(database, 25, Coord(sourceLon, sourceLat), R=range, azi=azi)
else: else:
print('no receive info!') print('no receive info!')
return [], [], [], bathym return [], [], [], bathym
+10 -2
查看文件
@@ -42,8 +42,16 @@ def main():
from pyat.tlcore import call_tl from pyat.tlcore import call_tl
import numpy as np 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) # 定义时间段
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 # write data to file
# 保存地形数据 # 保存地形数据