LoginSignup
0
0

セミ・ダイナミック補正

Posted at

地殻変動補正パラメータファイルを読み込む

地殻変動補正パラメータファイル を読み込む

def load_par(filename):
    par = pd.read_csv(filename, delim_whitespace=True, skiprows=15, index_col=0)
    return par

※モジュールのimport は割愛

補正値を計算

def semi_dyna_diff(par, lat, lon):
    phi_pitch = 2/3 / 8 / 2
    lamda_pitch = 1 / 8 / 2
    down  = np.floor(lat / phi_pitch  ) * phi_pitch
    up    = np.ceil( lat / phi_pitch  ) * phi_pitch
    left  = np.floor(lon / lamda_pitch) * lamda_pitch
    right = np.ceil( lon / lamda_pitch) * lamda_pitch
    
    z00 = latlon2mesh(down,  left) # 格子左下
    z01 = latlon2mesh(down, right) # 格子右下
    z10 = latlon2mesh(  up,  left) # 格子左上
    z11 = latlon2mesh(  up, right) # 格子右上
    
    p00 = par.loc[z00]
    p01 = par.loc[z01]
    p10 = par.loc[z10]
    p11 = par.loc[z11]

    t = (lat - down) / phi_pitch
    u = (lon - left) / lamda_pitch

    b00 = p00['dB(sec)'].to_numpy()
    b01 = p01['dB(sec)'].to_numpy()
    b10 = p10['dB(sec)'].to_numpy()
    b11 = p11['dB(sec)'].to_numpy()

    l00 = p00['dL(sec)'].to_numpy()
    l01 = p01['dL(sec)'].to_numpy()
    l10 = p10['dL(sec)'].to_numpy()
    l11 = p11['dL(sec)'].to_numpy()

    h00 = p00['dH(m)'].to_numpy()
    h01 = p01['dH(m)'].to_numpy()
    h10 = p10['dH(m)'].to_numpy()
    h11 = p11['dH(m)'].to_numpy()
    
    tu00 = (1 - t) * (1 - u)
    tu01 = (1 - t) * u
    tu10 = t * (1 - u)
    tu11 = t * u
    
    dB = tu00 * b00 + tu01 * b01 + tu10 * b10 + tu11 * b11
    dL = tu00 * l00 + tu01 * l01 + tu10 * l10 + tu11 * l11
    dH = tu00 * h00 + tu01 * h01 + tu10 * h10 + tu11 * h11
    
    return dB / 60 / 60, dL / 60 / 60, dH

セミダイナミック補正

def semi_dyna(par, lat, lon, alt=None, sokuchi=0):
    """
    sokuchi:補正方向  =0:元期→今期, =1:今期→元期
    """
    
    dB, dL, dH = semi_dyna_diff(par, lat, lon)
    if sokuchi == 1:
        # 今期→元期
        dB, dL, dH = -dB, -dL, -dH
    
    if alt is None:
        return lat + dB, lon + dL
    else:
        return lat + dB, lon + dL, alt + dH

とりあえず、見よう見まねで下記を計算。
いくつかサンプルでは同じになっていたけど。あってそう?

https://www.gsi.go.jp/sokuchikijun/semidyna.html
https://vldb.gsi.go.jp/sokuchi/surveycalc/semidyna/web/index.html

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0