ティーザー(河川流一次元モデルの構築:ティーザー - 趣味で計算流砂水理)を出した後、予備知識が無いと伝わらないことに気付きいろいろ関連記事を書いていました。
記事も揃ったので続きを書きます。
入力データの形式
- 基本的な形式は、我々が提案する河川横断データのgeojsonです(参照 河川横断測量成果のデータ形式は絶対にこうすべき! - 趣味で計算流砂水理)。
- そのgeojsonのpropertiesに'cal-input'という項目で計算用データを追加する形式です。
- 一次元の計算方法は分割断面法を採用し(参照 現場の水理学のヒントシリーズ:自然河道断面の平均流速公式 - 趣味で計算流砂水理)、各分割断面を要素とするリスト形式とします。つまり、要素が一つの場合は径深分割法になります。
- 各リスト内はディクショナリ(key-value)形式で、座標を示す'point'とマニングの粗度係数を示す'manning'の2要素で構成されます。
- 'point'はxyzのn個の点情報、'manning'はn-1の線情報になります。
- 'manning'は、分割断面内ですべて等しい場合も想定し、1個の値でも入力可能にしています。
データのイメージはこんな感じです。
'properties': { 'calc-input': [ // 分割断面1の情報 {'point': [ [x[1],y[1],z[1]], [x[2],y[2],z[2]], // --------- [x[n],y[n],z[n]], ] , 'manning': [man[1],man[2].....man[n-1]]} // 分割断面2の情報 , {'point': [ [x[1],y[1],z[1]], [x[2],y[2],z[2]], // --------- [x[n],y[n],z[n]], ] , 'manning': [man]} // 粗度係数は1要素のリストでも.man[1] = man[2].....= man[n-1] = manを想定 ] }
ティーザーに上げたデータを示すと以下です。
'properties': { 'calc-input': [{'point': [[-24017.545356, -40951.686842, 26.07], [-24021.866931, -40954.201597, 25.59], [-24026.188506, -40956.716352, 24.06], [-24034.831655, -40961.745862, 21.82], [-24047.796379, -40969.290127, 21.7], [-24056.439528, -40974.319637, 20.96], [-24073.725827, -40984.378656, 18.83], [-24095.3337, -40996.952431, 18.66], [-24099.655275, -40999.467186, 16.87], [-24151.514171, -41029.644245, 16.46], [-24155.835746, -41032.159, 18.39], [-24173.122044, -41042.21802, 19.09], [-24220.659366, -41069.880324, 19.67], [-24255.231963, -41089.998364, 18.62], [-24259.553538, -41092.513119, 20.17], [-24268.196687, -41097.542629, 21.37]], 'manning': [0.025]}, {'point': [[-24268.196687, -41097.542629, 21.37], [-24281.161411, -41105.086893, 21.8], [-24289.80456, -41110.116403, 21.61], [-24302.769284, -41117.660668, 22.69], [-24307.090859, -41120.175423, 22.6], [-24311.412434, -41122.690178, 22.03], [-24345.985031, -41142.808218, 22.02], [-24354.62818, -41147.837727, 24.12], [-24358.949755, -41150.352482, 25.53]], 'manning': [0.04, 0.04, 0.04, 0.04, 0.04, 0.035, 0.04, 0.04]}]}
データはこちら
次回はようやくインターフェイスです。Herokuを使っているのでそっちも書かないと。
fuckin CORONA