粉山葵様開発のBVE Trainsim マップ製作支援スクリプト『Tsutsuji trackcomputer』では空中写真(航空写真)を用いた配線を行うことができます。
今回はJR西日本 呉線 広駅を現地取材なし、情報源はgooglemapとYouTubeの前面展望のみで作ってみます。
はじめに
広駅は呉線の主要駅の1つであり、三原・広島それぞれの方面に多数の列車が折り返していきます。
駅構造は2面3線+留置線が5線となっており、さらに引き上げ線が両側にあります。
範囲が広いため配線図を用意しましたが、簡略化しているのでgoolemap等で照らし合わせながら閲覧していただければ幸いです。
下り本線である2番線を基準に製作を進めていきます。
下準備
製作用のフォルダを作成し作業を行っていきます。
緯度・経度を調べる
基準とする白岳第1踏切の緯度・経度をgooglemapで右クリックすることで取得します。緯度34.2256163322165, 経度132.6381455396338 でした。
設定ファイルを作る
Tsutsuji で読み込むための設定ファイルを作ります。origin_distanceは基準距離程の59K247M、offset_variableは広駅の駅番号Y17から取っています。
[@TSUTSUJI_GENERAL]
owntrack = Hiro_2
unit_length = 1
origin_distance = 59247
offset_variable = Y17_RP
output_path = ./2
[@MAPTILE]
# 緯度・経度
latitude = 34.2256163322165
longitude = 132.6381455396338
x0 = 0
y0 = 0
alpha = 1
zoomlevel = 18
# オルソ画像 or シームレス 適宜見えやすい方を使う
template_url = https://cyberjapandata.gsi.go.jp/xyz/ort/{z}/{x}/{y}.jpg
# template_url = https://cyberjapandata.gsi.go.jp/xyz/seamlessphoto/{z}/{x}/{y}.jpg
toshow = True
autozoom = False
[Hiro_2]
file = Hiro_2.txt
# 自線扱いとするのでTrue(絶対座標)
absolute_coordinate = True
x = 0
y = 0
z = 0
angle = 0
color = aqua
BveTs Map 2.02:utf-8
#【記載区間】広駅2番線(下り本線)
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
distance + 1000;
実際の向きとは異なりますが、軌道が表示されました。
下り本線を配線する
向きを合わせる
まずは2面2線の両開き分岐器を持つ配線を作ることを目標とします。
Tsutsuji上で角度を測定し設定に反映します。ここでは angle = -160.4 としました。
線路方向が一致しました。
左右に留置線がありますが後ほど作ることとし、画面を上下本線の別れる分岐器付近まで移動させます。
12番両開き分岐器(左)
- 補助線を引く
- 分岐器は前端(1線)側から作る
補助線を引く
分岐地点を推測すると59K800M付近でしたので、まずはそこから分岐する前を保存する意味で補助線を引きます。
以下のように記述し再読み込みを行います。
# 追加
[guide_main]
# 三原起点59K800M 59247-59800=553
file = guide.txt
absolute_coordinate = False
parent_track = Hiro_2
origin_kilopost = 553
x = 0
y = 0
z = 0
angle = 0
color = violet
[guide_2]
file = guide.txt
absolute_coordinate = False
parent_track = guide_main
origin_kilopost = 100
# 下り本線は基準線(guide_main)から 2m左
x = -2
y = 0
z = 0
angle = 0
color = red
BveTs Map 2.02:utf-8
#【記載区間】補助線
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
distance + 300;
同じ txt を読み込み使いまわすことが可能です。
guide_main が分岐前、guide_2 は分岐後を意味する補助線です。
guide_2 に繋げる形で配線を行うので、奥にずらした位置から開始しています。
また、これらの補助線を引くことで設定ファイルにおいて初めに指定した Hiro_2 の angle が適しているかどうか確認可能です。もしずれがあれば0.1°単位で調整します。
分岐器左曲線
軌道 Hiro_2 の553m地点(全体距離程59K800M)から12番両開き分岐器左曲線(半径535m、曲線長22m)を作ります。
# 追加
# 12番両開き分岐器左曲線 59K800M
553;
Curve.Begin(-535);
distance + 22;
Curve.End();
右曲線(1)
軌道 Hiro_2 と guide_2 を Measure機能の一つ、CurveTrack Solver Mode3-1 を用いて繋げていきます。
この曲線の半径Rは730m、そのほかの条件は不明ですが曲線長CCLについては15mほどはありそうです。
このように半径のみが分かっている場合では緩和曲線長を5m単位で変化させながら適切な値を推測していきます。
Mode3-1: R, TCL 固定
TCL = 15 としたときの出力結果は以下のようになりました。
CCL ≒ 15 より、ほどよい結果が得られたので $pt_a = 575 以下を反映し再読み込みを行います。
guide_2 は使わないのでコメントアウトしました。
適度に延長し、続いて下り方の合流地点を配線していきます。
右曲線・12番両開き分岐器左曲線
実は広駅の下り本線の構造は対称となっているので、先ほどの出力結果に手を加えて作ることも可能ですが分岐器に関してはそれは行わず、同様に補助線を活用する形で行っていきます。
補助曲線を引く
のちに分岐器左曲線となる補助曲線を引きます。以下を新たに記述し再読み込みを行います。
guide_curve に関してはコメントアウト切り替えで各種分岐器を使えるようにしておくと便利です。
# 追加
[guide_curve]
file = guide_curve.txt
absolute_coordinate = False
parent_track = guide_main
origin_kilopost = 625
x = 0
y = 0
z = 0
angle = 180
color = red
angle = 180 としていることに注意してください。
BveTs Map 2.02:utf-8
#【記載区間】補助線(曲線)
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
Curve.Begin(-535);
distance + 22;
Curve.End();
# distance + 1000;
記述を反映した結果です。
ここからは CurveTrack Solver Mode3-2 を用いて 軌道Hiro_2 の延長と guide_curve を繋げていきます。
曲線の条件は以下の通りです。
- R1=730, TCL(α,γ)=15?
- R2=-535, TCL(δ,β)=0, CCL=22
- A:始端 Hiro_2 1050m地点
- B:終端 guide_curve 0m地点(分岐器前端、向き注意)
- guide_main の延長線上でも可
- C:経由 guide_curve 22m地点(分岐器後端、向き注意)
出力結果にも問題がないので Hiro_2 に反映し、guide_curve をコメントアウトして再読み込みします。
これで下り本線の駅構内は完成です。
上り本線(自軌道扱い)を配線する
上り本線(1番線)から出発する列車が存在するので、自軌道扱いで配線していきます。
以下を新たに記述し再読み込みを行います。
[Hiro_1]
file = Hiro_1.txt
absolute_coordinate = True
x = 0
y = 0
z = 0
angle = -160.4
color = lime
BveTs Map 2.02:utf-8
#【記載区間】広駅1番線(上り本線)
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
# 12番両開き分岐器右曲線 59K800M
553;
Curve.Begin(535);
distance + 22;
Curve.End();
下り本線を配線したときと同様、ここからは補助線を引いていくのが基本です。
ただ、もし上下線の構造が対称であれば下り本線の曲線半径の正負を逆にすることで製作可能です。
実際ほぼ同じように見えるので反映してみます。もし異なる場合は先ほどと同じ手順で配線を行いましょう。
Generate を押下し自軌道を Hiro_2 としたマップを生成し読み込んでみました。カントや勾配は全ての線路を引き終わってから改めて設定します。
上下副本線(自軌道扱い)を作る
上下副本線(3番線)も広島、三原方面それぞれに発着が可能なので自軌道扱いで配線します。
10番片開き分岐器左曲線とその先
空中写真などから推測し三原起点59K775Mから10番片開き分岐器(半径185.5m、曲線長20m)で左に分岐していくものとします。
[Hiro_3]
file = Hiro_3.txt
absolute_coordinate = True
x = 0
y = 0
z = 0
angle = -160.4
color = coral
BveTs Map 2.02:utf-8
#【記載区間】広駅3番線(上下副本線)
#----------基本線形----------
# 59K247M
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
# 10番片開き分岐器左曲線 59K775M
528;
Curve.Begin(-185.5);
distance + 20;
Curve.End();
# distance + 1000;
前面展望等で確認していただくと分かりやすいのですが、この付近は分岐器が入り組んでいます。3番線は次に右カーブを描きながら分岐していくので、外方分岐器ではないかと考えました。
開始地点を軌道 Hiro_3 基準598m、半径を300m、曲線長を25mとすると以下のようになります。
# 外方分岐器?右曲線
#598mにて電留線合流、603mから4番線分岐
598;
Curve.Begin(300);
distance + 25;
Curve.End();
Hiro_1 はコメントアウトしています。
強引に合わせた感じはありますが悪くはないと思われます。
ホーム部分
補助線を引く
まずは補助線を引きます。ずれが無いか確認するため4番線用の補助線も用意しました。
[guide_3]
file = guide.txt
absolute_coordinate = False
parent_track = Hiro_2
origin_kilopost = 800
x = -9
y = 0
z = 0
angle = 0
color = red
[guide_4]
file = guide.txt
absolute_coordinate = False
parent_track = Hiro_2
origin_kilopost = 800
x = -13
y = 0
z = 0
angle = 0
color = red
右曲線(1)
右曲線で Hiro_3 の延長と guide_3 を繋げていきます。
半径が分かりませんが、緩和曲線長TCL、曲線長CCLはそれぞれ10m必要と考えているので、TCLを10mで固定し半径を変化させていきます。
R=1000とするとCCL≒15となったのでこの値を採用します。値に拘らなければ Mode1(始点指定)やMode2(終点指定)などを用いるとよいでしょう。
出力を反映し再読み込みを行います。guide_3 はコメントアウトしました。
10番片開き分岐器(本線合流地点)まで
引き続き延長していくと反向曲線と8番片開き分岐器左曲線(背向)が存在しますが飛ばし、合流地点から製作していきます。分岐器は前端側から作るのが楽です。
補助曲線を引く(1)
この分岐器は上下本線の少し先、架線柱の下辺りに前端があるので Hiro_2 基準で補助曲線を作ります。
Measure機能で測定するとHiro_2 1208m 地点でした。
以下のように記述し読み込んでみます。
今回はこの補助曲線を延長したいので guide_curve ではなく guide_curve3 と別の名前を付けました。
[guide_curve3]
file = guide_curve3.txt
absolute_coordinate = False
parent_track = Hiro_2
origin_kilopost = 1208
x = 0
y = 0
z = 0
angle = 180
color = red
BveTs Map 2.02:utf-8
#【記載区間】
#----------基本線形----------
0;
Curve.SetGauge(1.067);
Curve.SetCenter(1.067/2);
Curve.SetFunction(1);
0;
Curve.Begin(185.5);
distance + 20;
Curve.End();
記述を反映しました。
補助曲線を引く(2)
この補助曲線はのちに8番片開き分岐器左曲線(背向)となります。この半径は118m、曲線長は15mです。
空中写真に合うように開始地点を設定します。guide_curve3 を延長し、Measure機能で測定するとよいでしょう。
今回は70m地点と推測しました。
# 追加
70;
Curve.Begin(-118);
distance + 15;
Curve.End();
反向曲線を作る
Hiro_3 と guide_curve3 を繋げていきます。反向曲線を求めることができるモードにはいくつかありますが、個人的に曲線半径は指定したいので今回は Mode9-2 を用います。指定せずに求めることができるモードも存在します。
分岐器も連続する反向曲線の一部になっているようなので、Hiro_3 側の始点をずらしながら、ちょうどよい結果が得られるまで試行錯誤します。
緩和曲線長は全て10m、中間直線長は0mとしました。
出力を反映します。
補助曲線を上書き
CurveTrack Solver を繰り返し用いて補助曲線 guide_curve3 を Hiro_3 で上書きしていきます。
Mode3-2 を用いれば一度で出力可能です。
反映したものを生成し実際に読み込んでみます。うまくいったようです。
情報がほとんどない中でも配線作業をすることができました。
次の記事では留置線など他軌道扱いの軌道を作っていきます。