tsutsuji package

Submodules

tsutsuji.backimg module

class tsutsuji.backimg.BackImgControl(mainwindow)[source]

Bases: object

class BackImgData(path)[source]

Bases: object

rotate(rad)[source]
show(ax, as_ratio=1, ymag=1)[source]
clickimglist(event)[source]
closewindow()[source]
create_window()[source]
deleteimg()[source]
imgsarea(extent_input=None)[source]
load_setting(path=None)[source]
newimg()[source]
save_setting(outputpath=None)[source]
sendtopmost(event=None)[source]
showimg()[source]
class tsutsuji.backimg.TileMapControl(mainwindow)[source]

Bases: object

closewindow()[source]
create_paramwindow(event=None)[source]
export()[source]
getimg(scalex, as_ratio, maptilenumwarning=36)[source]
getparameters()[source]
for i in self.wd_variable.keys():

print(i, self.wd_variable[i].get())

sendtopmost(event=None)[source]
setparams_fromcfg(cfgd)[source]
showimg(ax, as_ratio=1, ymag=1)[source]

tsutsuji.config module

class tsutsuji.config.Config(path)[source]

Bases: object

get_trackdata(keys)[source]

tsutsuji.cui2 module

tsutsuji.drawcursor module

class tsutsuji.drawcursor.arrow(parent, marker)[source]

Bases: object

move(event)[source]
press(event)[source]
set_direct()[source]
setobj(element, reset=False)[source]
settangent(pointerpos, reset=False)[source]
start()[source]
class tsutsuji.drawcursor.cursor(parent)[source]

Bases: object

distance2pos()[source]
point_and_dir()[source]
class tsutsuji.drawcursor.marker(parent, color)[source]

Bases: object

move(event)[source]
nearestpoint(x, y)[source]
press(event)[source]
setmarkerobj(pos=False)[source]
setpos(x, y)[source]
start()[source]
class tsutsuji.drawcursor.marker_pos(parent, color)[source]

Bases: object

move(event)[source]
nearestpoint(x, y)[source]
posfunc(xpos, ypos)[source]
press(event)[source]
pressfunc(parent)[source]
set_direct(replot=False)[source]
setmarkerobj(pos=False)[source]
start()[source]
class tsutsuji.drawcursor.marker_simple(parent, ax, canvas, color, ch_main, ch_measure)[source]

Bases: object

move(event)[source]
press(event)[source]
setobj()[source]
setpos(x, y, direct=False)[source]
start(posfunc, pressfunc)[source]

tsutsuji.gui_tsutsuji module

class tsutsuji.gui_tsutsuji.Catcher(func, subst, widget)[source]

Bases: object

tsutsuji.gui_tsutsuji.main()[source]
class tsutsuji.gui_tsutsuji.mainwindow(master)[source]

Bases: Frame

aboutwindow(event=None)[source]
ask_quit(event=None, ask=True)[source]
bind_keyevent()[source]
create_menubar()[source]
create_widgets()[source]
draw2dplot()[source]
draw_tracks_cp()[source]
drawall()[source]
generate_output(event=None)[source]
get_othertrack(event=None)[source]
getmaptile(event=None)[source]
measure(event=None)[source]
move_xy(x, y)[source]
open_webdocument(event=None)[source]
opencfg(event=None, in_dir=None)[source]
press_arrowkey(event=None)[source]
press_return(event=None)[source]
reloadcfg(event=None)[source]
sendtopmost(event=None)[source]

tsutsuji.math module

tsutsuji.math.angle_twov(phiA, phiB)[source]

ベクトルA (方位角phiA)からベクトルB(方位角phiB)への方位角変化を求める

tsutsuji.math.calc_pl2xy(phi_deg, lambda_deg, phi0_deg, lambda0_deg)[source]

緯度経度を平面直角座標に変換する - input:

(phi_deg, lambda_deg): 変換したい緯度・経度[度](分・秒でなく小数であることに注意) (phi0_deg, lambda0_deg): 平面直角座標系原点の緯度・経度[度](分・秒でなく小数であることに注意)

tsutsuji.math.calc_xy2pl(x, y, phi0_deg, lambda0_deg)[source]

平面直角座標を緯度経度に変換する - input:

(x, y): 変換したいx, y座標[m] (phi0_deg, lambda0_deg): 平面直角座標系原点の緯度・経度[度](分・秒でなく小数であることに注意) * x軸正方向は北、y軸正方向は東を指すことに注意

tsutsuji.math.cross_kilopost(track, result)[source]

minimumdistで求めたtrack上の最近傍点について、対応する距離程を求める。

Parameters:
  • track (ndarray) -- np.array([x0,y0],[x1,y1],...,[xn,yn])

  • result (list) -- minimumdistの出力

Returns:

最近傍点の距離程。track端点が最近傍点の場合はNone

Return type:

float

tsutsuji.math.cross_normal(position, track)[source]

曲線trackの法線のうち、positionを通過するものを求める

Parameters:
  • ndarray -- position: np.array([x,y])

  • ndarray -- track: np.array([[x0,y0],[x1,y1],...,[xn,yn]])

Return:

tsutsuji.math.interpolate_with_dist(track, element, cp_dist)[source]
tsutsuji.math.lat2py(l, z, L=85.05112878)[source]

緯度をマップタイルのピクセル座標に変換する - input:

l: 変換したい緯度(latitude) [deg] z: ズームレベル (0-18) L: 緯度の上限値 [deg]

  • output:

    y: ピクセル座標y成分 (256で割るとタイル座標になる)

tsutsuji.math.long2px(l, z)[source]

経度をマップタイルのピクセル座標に変換する - input:

l: 変換したい経度(longitude) [deg] z: ズームレベル (0-18)

  • output:

    x: ピクセル座標x成分 (256で割るとタイル座標になる)

tsutsuji.math.mindist_crossline(position, phiA, track)[source]

曲線trackとpositionを通る方位角phiAの直線Uの交点について、positionとの距離が最小となるものを求める

track上の各点をT_k, positionをP, 座標原点Oとして、直線Uに沿う単位ベクトルをeUで表す。 OT_k - (OP + α * eU) が最小となるようなαを求める。

Parameters:
  • position (ndarray) -- np.array([x,y])

  • phiA (float) -- 絶対座標x軸に対して直線がなす角

  • track (ndarray) -- np.array([[x0,y0],[x1,y1],...,[xn,yn]])

Returns:

[[alpha: 最小となる距離, sort_ix: 距離が最小となる点のインデックス],...] :

Return type:

np.array

tsutsuji.math.minimumdist(track, p)[source]

二次元曲線trackについて、座標pから最も近い曲線上の点を求める。 trackの点間は線形補間される。

Parameters:
  • track (ndarray) -- np.array([x0,y0],[x1,y1],...,[xn,yn])

  • p (ndarray) -- np.array([xp,yp])

Returns:

float

mindist: 曲線交点との距離

ndarray

crosspt: 曲線との交点座標

int

min_ix: track中で最もpに近い点のindex

int

second_min_ix: 最もpに近い点が含まれる区間の他端index。直交点が見つからない場合は-1。

tsutsuji.math.px2long(x, z)[source]

ピクセル座標を経度に変換する - input:

x: 変換したいピクセル座標x成分 z: ズームレベル (0-18)

  • output:

    l: 経度 [deg]

tsutsuji.math.py2lat(y, z, L=85.05112878)[source]

ピクセル座標を経度に変換する - input:

y: 変換したいピクセル座標y成分 z: ズームレベル (0-18) L: 緯度の上限値 [deg]

  • output:

    l: 緯度 [deg]

tsutsuji.math.rotate(tau1)[source]

2次元回転行列を返す。

tau1: 回転角度 [rad]

tsutsuji.measure module

class tsutsuji.measure.interface(mainwindow)[source]

Bases: object

closewindow()[source]
create_widgets()[source]
ctfit()[source]

カーソルA, B間を結ぶ最適な曲線軌道を求める

distacrosscursor()[source]

カーソルAの法線上の任意の点との距離を求める

distalongcursor()[source]

カーソルAの延長線上の任意の点との距離を求める

drawall()[source]
nearesttrack()[source]

指定した軌道上のカーソルAに最も近い点を求める

printdirection(mycursor=None)[source]
printdistance(mycursor=None)[source]
reload_nearesttrack_keys(target=None)[source]
reload_trackkeys()[source]
sendtopmost(event=None)[source]
setdistance()[source]
setmarkerpos_fromkeyboard()[source]
class unit(name, parentwindow, frame, parent, row, color)[source]

Bases: object

create_widgets(row)[source]
make_trackkeylist()[source]
printmode()[source]
setmarkerpos_fromkeyboard()[source]

tsutsuji.solver module

class tsutsuji.solver.IF(A, B, C, phiA, phiB, phiC, lenTC1, lenTC2, lenTC3, lenTC4, lenCC, lenLint, R_input, R2_input, tranfunc, fitmode, curve_fitmode_box, cursor_obj, cursor_f_name, cursor_t_name, cursor_via_name)[source]

Bases: object

gen_paramstr_mode1_2()[source]
gen_paramstr_mode3()[source]
gen_paramstr_mode4_5()[source]
gen_paramstr_mode6_7()[source]
gen_paramstr_mode8(withCpos=True, endpos=True, givenR=False, givenR2=False, givenLint=True)[source]
gen_paramstr_mode9(givenR=False, givenR2=False)[source]
generate_mapsyntax()[source]
generate_mapsyntax_compoundcurve()[source]
generate_mapsyntax_reversecurve(initial_shift=None)[source]
mode1()[source]
mode10()[source]
mode11()[source]
mode11_13()[source]
mode12()[source]

mode 9-2 + L_intermediate

mode13()[source]

mode 9-3 + L_intermediate

mode2()[source]
mode3()[source]
mode4_5(assigncursor)[source]
mode6()[source]
mode7()[source]
mode8(withCpos=True)[source]
mode9(givenR1=False)[source]
mode9_12(givenR1=False)[source]
class tsutsuji.solver.solver[source]

Bases: object

compound_curve(A, phiA, B, phiB, C, phiC, lenTC1, lenTC2, lenTC3, tranfunc, dl=0.1, error=0.01, num_max=50, givenR1=None)[source]

[A]-TC-CC-[C]-CC-TC-CC-TC-[B] based on mode1

compound_curve_Linterm(A, phiA, B, phiB, C, phiC, lenTC1, lenTC2, lenTC3, lenTC4, lenLint, tranfunc, dl=0.1, error=0.01, num_max=50, givenR1=None)[source]

[A]-TC-CC-TC-S-TC-CC-TC-[B] based on mode1

compound_curve_givenR(A, phiA, B, phiB, lenTC1, lenTC2, lenTC3, R1, R2, tranfunc, dphi=0.001, error=0.01, num_max=50)[source]
compound_curve_givenR_Lint(A, phiA, B, phiB, lenTC1, lenTC2, lenTC3, lenTC4, lenLint, R1, R2, tranfunc, dphi=0.001, error=0.01, num_max=50)[source]
compound_curve_shiftStartPos(A, phiA, B, phiB, C, phiC, lenTC1, lenTC2, lenTC3, tranfunc, dl=0.1, error=0.01, num_max=50, givenR1=None)[source]

[A]-TC-CC-[C]-CC-TC-CC-TC-[B] based on mode2

curvetrack_fit(A, phiA, B, phiB, lenTC1, lenTC2, tranfunc, Rtmp=1000, dr=0.1, error=0.01, R0=0)[source]

AB間を結ぶ曲線軌道の半径を返す A: 始点座標 phiA: 始点での軌道方位 B: 終点座標 phiB: 終点での軌道方位 lenTC1: 始点側の緩和曲線長さ lenTC2: 終点側の緩和曲線長さ tranfunc: 逓減関数 'line' or 'sin' Rtmp: 曲線半径初期値 dr: 残差の微分で使う error: 許容誤差

R0: 始点での軌道半径(複合曲線の緩和曲線を求める際に使用, default: 0)

curvetrack_relocation(A, phiA, B, phiB, lenTC1, lenTC2, tranfunc, R, dx=0.1, error=0.01)[source]

A,Bを通る直線を結ぶ曲線軌道の始点を返す A: 始点座標 phiA: 始点での軌道方位 B: 終点座標 phiB: 終点での軌道方位 lenTC1: 始点側の緩和曲線長さ lenTC2: 終点側の緩和曲線長さ tranfunc: 逓減関数 'line' or 'sin' R: 曲線半径 dx: 残差の微分で使う error: 許容誤差

reverse_curve(A, phiA, B, phiB, lenTC11, lenTC12, lenTC21, lenTC22, tranfunc, len_interm=0, C=None, R1=None, R2=None, lenCC1=None, lenCC2=None)[source]

[A]-TC-CC-TC-[C]-S-TC-CC-TC-[B]

shift_by_TCL(A, phiA, B, phiB, C, tranfunc, TCLtmp=0, dl=0.1, error=0.001)[source]

AB間を結び、Cに最も近い点を通過する曲線軌道の半径、TCL, CCLを返す。 始点: A、終点: Bの延長線上となる曲線軌道について、点Cとの距離が最小となるR, TCLをニュートン法で求める。 A: 始点座標 phiA: 始点での軌道方位 B: 終点座標 phiB: 終点での軌道方位 C: 経由点 tranfunc: 逓減関数 'line' or 'sin' TCLtmp: 緩和曲線長の初期値 dl: 残差の微分で使う error: 許容誤差

temporal_trackparam(Rtmp, lenTC1, lenTC2, A, B, phiA, phiB, tranfunc, R0=0)[source]

tsutsuji.track_control module

class tsutsuji.track_control.TrackControl[source]

Bases: object

convert_cant_with_relativecp(tr, cp_dist)[source]

trで指定した軌道について、対応する距離程でのカントを求める

convert_relativecp(trackkey, pos_cp, owntrack=None, checkU=False)[source]

抽出した制御点を自軌道座標に変換 :param trackkey: 注目軌道キー :type trackkey: string :param pos_cp: self.takecpで抽出した注目軌道の制御点リスト :type pos_cp: list :param owntrack: 座標変換の基準となる軌道キー (Noneの場合はself.conf.owntrack) :type owntrack: string :param checkU: U字軌道チェックを行う場合はTrue :type checkU: bool

Returns:

ndarray

resultcp: [注目軌道基準の距離程, 注目軌道基準のx, y座標, 自軌道基準制御点の距離程, 自軌道基準のx方向距離, 自軌道基準制御点のx, y座標]

drawarea(extent_input=None)[source]
dump_trackdata()[source]
dump_trackpos()[source]
generate_mapdata()[source]

self.conf.owntrackを基準とした他軌道構文データを生成, 出力する

generate_otdata()[source]

generate結果から他軌道座標データを生成する

get_trackkeys(owntrack)[source]
loadcfg(path)[source]

cfgファイルの読み込み

loadmap(to_load=None)[source]

mapファイルの読み込みと座標データ生成

plot2d(ax)[source]
plot_controlpoints(ax, owntrack=None)[source]
plot_symbols(ax, symboltype, size=20)[source]

制御点座標をプロットする

read_owntrackmap(filepath, rootpath=None)[source]
relativepoint_all(owntrack=None)[source]

読み込んだ全ての軌道についてowntrackを基準とした相対座標への変換。

relativepoint_single(to_calc, owntrack=None, parent_track=None)[source]

owntrackを基準とした相対座標への変換

Parameters:
  • string -- to_calc: 変換する軌道

  • string -- owntrack: 自軌道 (Option)

Returns:

ndarray

[[owntrack基準の距離程, 変換後x座標成分(=0), 変換後y座標成分, 変換後z座標成分, 対応する軌道の距離程,絶対座標x成分,絶対座標y成分,絶対座標z成分,カント], ...]

relativeradius(to_calc=None, owntrack=None)[source]
relativeradius_cp(to_calc=None, owntrack=None, cp_dist=None)[source]

self.relativepoint_all()及びself.relativeradius()の結果(self.rel_track, self.rel_track_radius)について、cp_distで指定した距離程ごとに相対半径の平均値、相対座標の内挿値を出力する。

take_cp_by_types(source, types=None)[source]

軌道要素が存在する距離程を要素毎にリスト化する

takecp(trackkey, owntrack=None, elem=None, supplemental=True)[source]

注目軌道の制御点を抽出

Parameters:
  • trackkey (string) -- 注目軌道キー

  • owntrack (string) -- 座標変換の基準となる軌道キー (Noneの場合はself.conf.owntrack)

  • elem (string) -- elemで指定した要素のみ抽出する

Returns:

list

cp_dist: 注目軌道の制御点距離程

list

pos_cp: 制御点における軌道座標データ

tsutsuji.trackwindow module

class tsutsuji.trackwindow.CheckboxTreeview_tsutsuji(master=None, **kw)[source]

Bases: CheckboxTreeview

子要素のチェックを全てon/offした場合に親要素のチェックを操作しないように変更

class tsutsuji.trackwindow.TrackWindow(mainwindow)[source]

Bases: Frame

click_tracklist(event=None)[source]

軌道リストをクリックしたときのイベント処理

closewindow()[source]
create_window()[source]
reset_treevalue()[source]

ツリーリストを再構築する

sendtopmost(event=None)[source]
set_treevalue()[source]

軌道データをツリーリストに表示する

Module contents