(57)【特許請求の範囲】
【請求項１】
地図を表示部に表示し、
ユーザから流入箇所の指定を上記地図上で受け、
上記入力指定から該流入箇所を示す線分を決定し、
上記線分の方向から流量ベクトルの方向を算出して上記地図上に該流入箇所とともに表示し、
上記流量ベクトルを用いた氾濫シミュレーションを実行することを特徴とする氾濫シミュレーションプログラム。
【請求項２】
上記流入箇所の指定は2以上の制御点の入力であって、
該制御点を直線又は曲線で補間することで上記線分を決定することを特徴とする請求項１に記載の氾濫シミュレーションプログラム。
【請求項３】
上記流量ベクトルの方向は、上記入力された制御点から次に入力された制御点に向かって、予め定められた左右いずれかの方向への該線分の法線と平行であることを特徴とする請求項２に記載の氾濫シミュレーションプログラム。
【請求項４】
上記地図は河川形状をその地図上の位置情報とともに管理し、
上記制御点の指定は任意の線分又は図形による入力であって、
上記線分又は図形と上記河川形状との交点を算出し、該交点を結ぶことで上記線分を決定することを特徴とする請求項１に記載の氾濫シミュレーションプログラム。
【請求項５】
上記流入箇所における流量の時系列の入力を受けることを特徴とする請求項１乃至４の何れかに記載の氾濫シミュレーションプログラム。
【請求項６】
上記流入箇所の水深を上記線分の幅として入力を受け、
該幅の大きさから該流入箇所における流量を算出することを特徴とする請求項1乃至４の何れかに記載の氾濫シミュレーションプログラム。
【請求項７】
上記シミュレーションを実行する単位である格子毎に該格子上に位置する上記線分の長さを求め、
上記長さに基づいて上記入力された流量から上記格子毎の上記流量ベクトルの大きさを算出し、
上記格子毎に上記流量ベクトルを用いたシミュレーションを実行することで上記氾濫シミュレーションを行うことを特徴とする請求項５又は６に記載の氾濫シミュレーションプログラム。
【請求項８】
上記シミュレーションを実行する単位である格子毎に該格子上に位置する上記線分の部分について上記法線方向を求め、
上記格子毎に上記法線方向を用いたシミュレーションを実行することで上記氾濫シミュレーションを行うことを特徴とする請求項５乃至７の何れかに記載の氾濫シミュレーションプログラム。
【請求項９】
上記地図は堤防形状を地物として管理するものであって、
上記ユーザからの流入箇所の指定として流入する区間の両端の入力を受け、該流入する区間中の上記堤防形状を該流入箇所を示す線分として決定することを特徴とする請求項１記載の氾濫シミュレーションプログラム。
【請求項１０】
地図を表示する表示装置と、
ユーザから流入箇所の指定を上記地図上で受ける入力装置と、
上記入力指定から該流入箇所を示す線分を決定し、上記線分の方向から流量ベクトルの方向を算出する処理部とを有し、
上記表示装置は上記流量ベクトルの方向を上記流入箇所とともに上記地図上に表示し、
上記処理部は上記流量ベクトルを用いた氾濫シミュレーションを実行することを特徴とする氾濫シミュレーション装置。
【請求項１１】
上記処理部は、上記入力された制御点から次に入力された制御点に向かって、予め定められた該線分に対して左右いずれかの方向への該線分の法線方向を上記流量ベクトルの方向とすることを特徴とする請求項１０に記載の氾濫シミュレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、水害の原因となる氾濫現象の予測・解析装置に関する。本発明は特に、コンピュータを用いて河川から市街地に河川水が流入する過程をシミュレートし、シミュレートの結果得られた空間情報をディスプレイに表示する、氾濫シミュレーションシステムに関する。
【背景技術】
【０００２】
近年、自然災害による人的・物的損害を軽減するために、災害現象を予測し、その予測に基づいて対策する試みが注目されている。災害現象を予測するためには空間シミュレーションが効果的である。空間シミュレーションでは、計算格子における予測変数で実空間における災害現象を表現し、予測変数を物理法則に基づいて時間変化させることにより災害現象の時間変化を表現する。空間シミュレーションの例として、河川から溢れた水が市街地に拡がる氾濫現象を扱う氾濫シミュレーションが知られている。氾濫シミュレーションでは、市街地に計算格子を配置し、計算格子上の流速と水深を表す変数を浅水方程式という物理法則を用いて変化させる。また、氾濫シミュレーションでは堤防決壊箇所や越流箇所、溢水箇所など、水が流入する箇所(流入箇所)に関する条件を設定する必要がある。以後、河川から水が溢れる代表的な原因である堤防決壊を想定し、流入箇所に関する条件を「破堤条件」と呼ぶ。
【０００３】
例えば、特許文献１に記載された「リアルタイム動的氾濫シミュレーションシステム」は、氾濫シミュレーションを実現するシステムに関する発明を開示している。ユーザはこのシステムのディスプレイに表示された地図上の1点を破堤点として指定でき、その点に配置された計算格子に対し破堤条件を設定する。このシステムの破堤条件は、破堤幅、破堤水位、破堤敷高である。なお、破堤点とは決壊した堤防の代表点、破堤幅とは決壊した堤防の長さ、破堤水位とは破堤点における河川水位、破堤敷高とは破堤点における標高である。
【０００４】
【特許文献１】特開２００４−１９７５５４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
従来のシミュレーションシステムでは、特許文献1に示されたように地図上の1点に対し破堤条件を与えていた。
【０００６】
ところが、従来のシミュレーションシステムでは以下の問題が生じる。
1. 破堤条件の1つである破堤幅が数値のみで表現され、ユーザが破堤幅を視覚的に確認できない。そのため、ユーザが非現実的な破堤幅を設定してしまうおそれがある。
2. 破堤条件の1つである、破堤流量(流入箇所を通過する流量)の方向が定まらない。
3. 決壊した堤防が複数の計算格子にまたがる破堤条件を入力できない。
【０００７】
これらの問題は、決壊した堤防を代表点と幅で近似していることが原因である。破堤幅が計算格子サイズに比べて十分小さい場合、この近似は誤差が小さい。一般的に、破堤幅は50から200 m程度になることが知られている。また、従来の氾濫シミュレーションでは、計算格子サイズを小さくすると現実的な時間内で計算が終了しないため、計算格子サイズは250m程度にしてあった。
【０００８】
ところが、より精度の高いシミュレーションを行うためには計算格子を小さくすることが求められ、破堤幅が計算格子サイズに比べて同等あるいは大きい場合、近似の誤差が無視できなくなる。
【０００９】
本発明はこれらの問題に鑑みてなされたものであり、ユーザに破堤幅を視覚的に提示し、破堤箇所から流れ出る河川水の方向が定まり、かつ決壊した堤防がまたがる計算格子が単数であっても複数であっても想定可能なシミュレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本願で開示する代表的な発明の概要は以下の通りである。
地図を表示し、ユーザから流入箇所の指定を上記地図上で受けてその入力指定から該流入箇所を示す線分を決定し、更に、線分の方向から流量ベクトルの方向を算出して上記地図上に表示して流量ベクトルを用いた氾濫シミュレーションを実行する氾濫シミュレーションプログラム、及び、その装置。
【発明の効果】
【００１１】
本発明により、以下の効果が生じる。
1. 流入箇所が図形で近似されるため、地図上で表現可能になる。
2. 流入箇所の形状と流れに関する流体の性質を利用することにより、破堤流量の方向を推定できる。
3. 図形、流れの方向、および計算格子の幾何学的配置を利用することにより、流入箇所が単数または複数の計算格子にまたがる場合でも流入箇所の条件を設定できる。
【発明を実施するための最良の形態】
【００１２】
初めにシミュレーションの精度を向上させるために格子サイズを小さくしつつ、現実的な時間内で計算を終わらせるための手法を開示する。以後、この計算方法をDynamic DDM (Domain Decomposition Method)と呼ぶ。Dynamic DDMを適用すると、計算格子サイズはたとえば10から50m程度に設定可能である。
【００１３】
まず氾濫シミュレーションの計算過程について説明する。図1は、一般的な氾濫シミュレーションの計算過程を示す概要図である。シミュレーション開始前に対象領域を設定し、その対象領域に計算格子を配置する(図1(a))。ユーザが破堤箇所を入力すると氾濫シミュレーションが開始される(図1(b))。開始後は、浅水方程式を解き対象領域内のすべての計算格子における予測変数を時間△t後の値に更新する。この1回の更新処理を時間ステップとよぶ。シミュレーション開始から時間ステップを1回繰り返した状態、つまりシミュレーション開始から時間ｔ＝Δｔだけ経過した状態を図1(c)に示す。同様に、シミュレーション開始から時間ステップを2回繰り返した状態(ｔ＝2Δｔ)を図1(d)に、3回繰り返した状態 (ｔ＝3Δｔ)を図1(e)に示す。このように時間ステップを繰り返すことにより任意の時刻における氾濫流の状態を算出する。
【００１４】
氾濫シミュレーションで浸水する領域は、シミュレーションの対象とする領域(対象領域)に比べ小さい。対象領域として河川の流域全域(500 km2程度)が考えられるのに対し、日本国内の水害は浸水面積が5 km2程度であることが多い。この場合、対象領域の1/100程度が浸水する領域である。浸水しない残りの領域は水深h = 0 m、流速( u, v )=(0, 0) m/sとなり、この領域では浅水方程式を解く必要がない。浸水する領域と浸水しない領域の両方で浅水方程式を解く従来手法は、不必要な計算を多く含んでいるといえる。
【００１５】
次に、Dynamic DDMの処理の流れを図2に示す。図2はDynamic DDMを適用した氾濫シミュレーションの計算過程を示す概要図である。Dynamic DDMでは、まず対象領域を部分領域に分割する(図2(a))。それぞれの部分領域の内部には計算格子が配置される。ユーザが破堤箇所を入力すると氾濫シミュレーションが開始される(図2(b))。氾濫シミュレーション開始後は、まず次の時間ステップで浸水する可能性がある部分領域を判別する。続いて、浸水する可能性がある部分領域についてのみ浅水方程式を解き、予測変数を更新する(図2(c)、(d)、(e))。
【００１６】
Dynamic DDMは、次の時間ステップで浸水する可能性がある部分領域のみで浅水方程式を解く。浸水面積を5 km2程度、対象領域を500 km2程度とした場合、Dynamic DDMで浅水方程式を解く計算格子数は従来手法の約1/100になる。このためDynamic DDMにより計算量を大幅に削減することができる。
【００１７】
本願では、前述した課題、すなわちこのDynamic DDMのようにより小さな計算格子を使用した場合により顕著になる、流入箇所を代表地点と幅で近似することに伴う課題を解決する。そのために、以下の手段を備えた氾濫現象をシミュレートする装置を用意する。
【００１８】
まず、流入箇所を折れ線、曲線などの線分図形として近似する処理を行う。流入箇所を代表点と幅で近似する従来の方法では、流入箇所を図形として表現できなかったが、本願の構成では流入箇所を図形で表現するため、流入箇所が地図上で表示できるようになる。
【００１９】
流入箇所を図形で表現するだけでは流入箇所における条件を氾濫シミュレーションで利用できない。そのためには、図形、流入箇所、および氾濫シミュレーションを関係づける必要がある。本願では、線分図形から流入箇所における流速の方向を算出し、流入箇所の条件をシミュレーションで用いる変数へ出力する処理を実行する。線分図形から流入箇所における流れの方向を算出する処理では、流入箇所の形状と流れの方向に関する流体の性質を利用する。堤防などの線形構造物を越える流れでは、線形構造物と直交する方向の成分が卓越することが知られている。たとえば、流入箇所からの流れは河川の流れと直交する成分が卓越する。この性質を利用すると、河川(堤外地)から溢れる水は、堤防決壊箇所を近似する線分図形の市街地(堤内地)側法線方向に流れる、と推定できる。
【００２０】
流入箇所の条件をシミュレーションで用いる変数へ出力する処理では、線分図形、流れの方向、および計算格子の幾何学的配置を利用する。まず線分図形を含む計算格子を検出し、その格子に含まれる線分の長さを算出する。この長さに応じて、スカラ量を計算格子に割り当てることができる。また、流れの方向と、計算格子の相対角度を算出する。この相対角度に応じて、ベクトル量を計算格子に割り当てることができる。
【００２１】
以上、これら3つの処理を行うことにより、氾濫シミュレーションにおける前述した課題を解決することができる。
【００２２】
以下、本発明の流入箇所の条件を入力するインタフェースを備えた氾濫シミュレーション装置の実施形態を添付図面に基づいて説明する。
【実施例１】
【００２３】
図3は、実施例1における本発明を実現するためのコンピュータシステムの構成を示す概略ブロック図である。氾濫シミュレーション装置のユーザはＰＣ（Personal Computer）300に接続されたキーボード311やマウス312等の入力部から命令を入力し、ディスプレイ313等の出力部からシミュレーションの結果を確認する。ＰＣ300の内部では、メモリ330に展開された氾濫シミュレーションプログラム331に基づいてＣＰＵ (Central Processing Unit)340が命令を実行する。ＣＰＵ340は、氾濫シミュレーションプログラム331の実行中に、ハードディスクなどの外部記憶装置320に格納された地理情報ファイル322を必要に応じて読み出す。また、入力された破堤条件を破堤条件データ333としてメモリ330に展開する。さらに、氾濫シミュレーションの結果をシミュレーション結果ファイル321として外部記憶装置320に格納する。なお、地理情報とは、駅、地物名称など位置に結びつけられた値からなるデータである。
【００２４】
図4は、氾濫シミュレーションプログラム331の主たるGUI(Graphical User Interface)を示す図である。ユーザは、このGUIを用いて破堤条件を設定すること、およびシミュレーション結果を確認することができる。ディスプレイ313の所定の領域にウィンドウ400が表示され、ユーザはマウス312を操作することによりマウスポインタ401を動かし、さらにウィンドウ上のオブジェクトを選択、操作できる。ウィンドウ上のオブジェクトとは、「設定」、「実行」、「停止」、「リセット」などの操作が選択できるメニューバー402、地図410である。ユーザがメニューバー402から「設定」を選択すると破堤条件設定の処理が開始する。「実行」を選択するとシミュレーションの処理が開始する。また、「停止」を選択するとシミュレーションの処理が停止する。さらに、「リセット」を選択すると設定した条件やシミュレーションの途中結果が破棄される。また、ユーザが適宜操作することにより地図410の縮尺を拡大・縮小させること、表示範囲を東西南北に移動させることができる。地図には地理情報ファイル322から読み出された地図が表示される。地図は航空写真、道路地図等ユーザに地理的情報を視認させるものであればよい。また、この地図には少なくとも河川420が含まれ、そのほか地物411などが表示される。
【００２５】
図5は破堤条件の設定処理に関するPAD (Problem Analysis Diagram)図である。この設定処理は、ユーザがメニューバー402から「設定」を選択することにより開始し、「実行」または「リセット」を選択することにより終了する。この処理は、大きく3ステップからなっている。まず破堤区間を作成し(ステップ501)、次に破堤流量を決定する(ステップ509)。最後に破堤条件を計算格子空間に離散化する(ステップ510)。
【００２６】
ステップ501はステップ502から508よりなる。これらのステップでは、ユーザから破堤区間の指定を受け直線または曲線で近似する。ユーザの入力に際して、直線または曲線の制御点(端点および節点)を所定の順で並べるように予め規定しておく。例えば本実施例では、破堤区間を折れ線(ポリライン)で近似することとし、そのポリラインの制御点は市街地(堤内地)側から河川(堤外地)側を見て左から右に向けて順に並べるように入力されることとする。以下、点r0, r1, ...を制御点とするポリラインrをpolyline(r0, r1, ...)と表す。ただし、rk: ポリラインrのk番目の制御点、rn: ポリラインrの制御点の数とする。ポリラインrはr0からrrn-1までの点により構成されており、rnは2以上の整数になる。以下、ステップ502から508について、図5および図6を参照しながら説明する。
【００２７】
ステップ502では、市街地側から河川を見て破堤区間の左端をユーザに指定させる。この点を第0点(r0)とする。図6(a)は、ステップ502をユーザが行っている状態にあるGUIの一部を示す図である。本実施例では、ユーザがマウスポインタ401を地図410上のある地点に移動させ、マウス312の左ボタンをクリックすることにより破堤区間の第0点を指定する。なお、図6(a)に示すように、ユーザの利便性向上のために第0点(r0)の位置にアイコン601などを表示することが望ましい。
【００２８】
ステップ503では、ステップ504で入力するポリラインの制御点のインデックスkに1を代入する。ステップ504では、破堤区間の第k点(rk)をユーザに指定させる。図6(b)は、ステップ504をユーザが行っている状態にあるGUIの一部を示す図である。ステップ502と同様に、本実施例ではユーザがマウスポインタ401を地図410上のある地点に移動させ、マウス312の左ボタンをクリックまたはダブルクリックすることにより破堤区間の第k点を指定する。なお、後述するように本実施例においては、クリックした場合は引き続き次の破堤区間の制御点の入力待ちの状態となり、ダブルクリックした場合は制御点の入力終了状態となる。
【００２９】
ステップ505では、第k-1点と第k点とを結ぶ線分を作成する。ここで、第k点(rk)とはユーザが直前に指定した点であり、第k-1点(rk-1)とはさらにその前に指定した点である。なお、図6(b)に示すように、ユーザの利便性向上のために第k-1点から第k点を結ぶ線分602を表示することが望ましい。
【００３０】
ステップ506では、上記のように、市街地(堤内地)側から河川(堤外地)側を見て左から右に向けて順に点入力されていることを前提に、第k-1点から第k点を見て右側にある法線nkを算出し、この法線を流入方向とする。法線nkは、式nk=outer_product( vector(rk-1, rk), ez)により求まる。ただし、outer_product(a, b)はベクトルaおよびbの外積を返す関数、vector(p0, p1)は点p0を始点とし点p1を終点とするベクトルを返す関数であり、ezは鉛直上向き方向の単位ベクトルである。このような流入箇所から流入する流れは横越流堰(河川の側岸に設置された越流堰)を越える流れで近似できることが知られている。この流れを横越流と呼び、流量を堰の幾何学的形状から推定する試みがなされている。その研究によると、流量の方向はおおむね堰と直交する方向である。したがって、ここでは法線nkを流入方向とした。なお、図6(b)に示すように、ユーザの利便性向上のために作成した流量ベクトルの方向nkを矢印603などで表示することが望ましい。こうすればユーザが破堤箇所における流入方向を推定することが可能となる。また、マウスポインタ401の近傍にツールチップ611を出現させ、その中に破堤幅、すなわち破堤区間の長さを表示してもよい。破堤区間の長さは、第i-1点から第i点までの線分vector(ri-1, ri)の長さlength(vector(ri-1, ri))を、iが1からkの値をとる場合について合計すれば求まる。
【００３１】
ステップ507では、ユーザから制御点入力の終了指示があるかを判別する。終了指示がある場合はステップ501を終了しステップ509に進み、ない場合はkに1を加え (ステップ508)、再びステップ504に戻る。図6(c)はステップ507においてユーザが終了指示を行った状態にあるGUIの一部を示す図である。本実施例ではユーザがステップ504にてマウス312の左ボタンをクリックした場合は終了指示なし、ダブルクリックした場合は終了指示ありとする。なお、図6(c)に示すように、ユーザの利便性向上のために最後に入力した制御点(第rn-1点)の位置にアイコン604などを表示することが望ましい。
【００３２】
なお、本実施例では破堤区間をポリラインで近似させたが、スプライン曲線など曲線で近似させてもよい。その場合、直線よりも現実に近い破堤区間の形状の入力できる。破堤区間をスプライン曲線で近似させるためには、ステップ505を第k-2点、第k-1点、および第k点を制御点とするスプライン曲線を作成するように変更すればよい。さらに、ステップ506を曲線の第k-1点から第k点を見て右側にある法線nkの方向を流入方向とするように変更すればよい。ただし、k<2の場合、スプライン曲線が作成できないため点またはポリラインで表現する。
【００３３】
なお、本実施例では破堤区間を近似したポリラインの制御点を、市街地側から堤防を見た場合の左端から入力するようにしたが、右端から入力するようにしてもよい。その場合、ステップ506における法線の向きを右向きから左向きに変更すればよい。
【００３４】
なお、本実施例では破堤区間の法線方向を破堤流量の流入方向と仮定した。この仮定は、破堤区間の上流端と下流端における河川水位の差が無視できる場合に精度よく成り立つと考えられる。ただし河道の急勾配部、屈曲部などにおける破堤では、水位差が無視できないおそれがある。よって、更に上記法線方向についてのユーザからの修正変更を受け付ける構成としてもよい。
【００３５】
また、ステップ506で作成される流入方向がユーザが意図する方向とは逆になるおそれがある。市街地側から河川を見て破堤区間の右端の地点をユーザが最初に入力することがあり得るためである。そこでユーザの利便性のためには、簡単な操作で流量ベクトルの方向を反転できることが望ましい。そのために本実施例では、ユーザがステップ501の終了後に流入方向を反転させるためのユーザインタフェースを備えた。図6(d)は、そのインタフェースを示す図である。ユーザがステップ501の終了後に、破堤区間を表すポリライン605の近傍でマウス312の右ボタンをクリックするとコンテキストメニュー620が出現する。ユーザが流量ベクトルの方向が反転させたい場合、「方向の反転」621を選択すればよい。
【００３６】
次にステップ509について図5および図6に加え図7を参照しながら説明する。ステップ509では、破堤区間から流入する流量(破堤流量)の時系列Qtotal(t)を決定する。本実施例では、作成した破堤区間にあらかじめ定めた適当な破堤流量を自動的に与え、ユーザの指示により流量を変更できるようにした。この最初に提示する破堤流量として、本実施例では、予め記録される過去に観測された破堤流量を用いる。図7は、ユーザが破堤流量を変更するためのGUIを示す図である。ユーザがコンテキストメニュー620を出現させ、「プロパティ」622を選択するとディスプレイ313の所定の位置にウィンドウ700が出現する。ユーザはウィンドウ700により、自らが作成した破堤区間の第0点および第rn-1点の緯度・経度をエディットボックス711および712にて、破堤幅をエディットボックス713にて確認できる。さらに、グラフ720に破堤区間からの流量の時系列変化が折れ線721で表示される。グラフ720の横軸は経過時間、縦軸は流量である。ユーザはマウス312を操作し、折れ線の制御点722を追加、削除、移動させて流量の時系列を変更する。変更後にOKボタン701を押下することにより変更が反映され、キャンセルボタン702を押下することにより変更が破棄される。なお、本実施例では流量を正の値としたが、流量は0または負の値でもよい。負の値の場合、破堤区間から河川に水が逆流する現象を表現できる。
また、このステップ509は、ユーザに破堤区間における破堤後の堤防上端(天端)から計った河川の水深Δhleveeを決定させることにより実現してもよい。図6(e)はユーザが河川の水深Δhleveeを入力している状態にあるGUIの一部を示す図である。最初に入力した点を示すアイコン601または最後に入力した点を示すアイコン604をユーザが3次元地図410の鉛直上方にドラッグすると、アイコン601および604が地図上の鉛直上方に移動する。同時に、アイコン601と604を結ぶポリライン606、およびポリライン605と606を接続する線分607が出現し、ポリラインがユーザの入力に応じた幅（線分607で表される距離）を有することになる。ポリライン605は堤防上端(天端)を、ポリライン606は水面を表し、線分607の長さは水深に比例する。また、ツールチップ611には破堤幅に加え水深が表示される。ユーザはツールチップ611を参照しながらドラッグ操作をすることにより、希望する水深の値を入力することができる。このように地図上で水深を入力するGUIを用意することで、ユーザは水深を周囲の地物と比較することが可能になる。なお、一般に破堤幅の値に比べ水深の値は小さいため、水深を強調するために地図の鉛直方向の縮尺を大きくするとよい。ユーザが入力した水深Δhleveeから破堤流量Qtotalを求めるために、以下の式を用いる。
Qtotal = C * LENGTH(r0, rrn-1) * (Δhlevee)1.5    (1)
ただしC: 越流係数(本実施例ではC=1.55とした)、LENGTH(r0, rrn-1): ポリラインrの全長、すなわちLENGTH(r0, rrn-1)=(length(vector(r0, r1))+ ... +length(vector(rrn-2, rrn-1))であり、常にΔhlevee > 0である。なお、このようにステップ509を実現した場合、Qtotalは時間によらない定数となる。時間変化をさせる必要があるときは、図7に示したGUIを用いればよい。
【００３７】
以上、ステップ501およびステップ509で破堤条件が作成された。作成された破堤条件はメモリ330に破堤条件データ333として展開される。図8は本実施例の破堤条件データ333のメモリ上の構造を示す図である。破堤条件データは、破堤区間領域810および流量時系列領域820から構成される。破堤区間領域810にはポリラインの制御点r0, r1, ...が格納される。また、流量の時系列領域820には、グラフ720に示した制御点の経過時間t0, t1, ...およびその時間における流量Qtotal(t0), Qtotal(t1) , ...が格納される。Qtotalが時間によらない定数の場合、流量の時系列領域820には、t0としてあらかじめ定めた時間変化をしないことを表す値を入れればよい。なお、経過時間および流量は、適宜補間した経過時間における値でもよい。また、破堤条件データ333を外部記憶装置320にファイルとして保存してもよい。
【００３８】
ステップ510では、破堤条件データ333を計算格子空間に離散化し、予測変数に代入する。ここで、まず計算格子空間について説明する。計算格子空間とはシミュレーションで用いる計算格子で表現された空間であり、空間における位置は整数値のみをとる変数i, j を用いて座標(i, j)で表現される。この計算格子を、現実の空間を表す座標(x, y)と変換可能にしておく。図9は本実施例の計算格子を示す図である。x軸901および y軸902はそれぞれ東および北を正方向とした原点からの距離を表す。x軸901とi軸911、y軸902とj軸912の変換は、i=floor(x/dx), j=floor(y/dy)である。ただし、dx, dyはそれぞれx, y軸方向の計算格子の大きさであり、floor(a)は引数aの小数点以下を切り捨てた整数値を返す関数である。この計算格子に予測変数h, q, u, v, M, Nを配置する。ただし、h: 水深、q: 流入量、u, v: それぞれx軸、y軸方向の流速、M, N: 流量フラックス(M=u*h, N=v*h)とする。以後、計算格子座標(i, j)における予測変数VarをVari,jとして表現する。本実施例ではスタッガードグリッド(staggered grid)を用いるため予測変数ui,jおよびMi,jの位置922はhi,jおよびqi,jの位置921に対しそれぞれ-dx/2ずれて配置される。同様に、ui,jおよびMi,jの位置923はhi,jおよびqi,jの位置921に対しそれぞれ-dy/2ずれて配置される。
【００３９】
次に、破堤条件を予測変数に変換する方法について説明する。破堤条件を予測変数に変換する方法として、いくつかの方法が考えられる。本実施例では状況に適した変換方法を提供するため、以下の3つの方法のいずれかをユーザが選択できるようにした。1) 破堤区間近傍の流量フラックスM, Nを破堤流量Qtotalから算出する、2)破堤区間近傍の流入量qを破堤流量Qtotalから算出する、3) 破堤区間近傍の水深hを破堤流量Qtotalから算出する。1)の表現方法では破堤流量の運動量が保存されやすい。2)の表現方法では破堤流量の質量が保存されやすい。3)の表現方法ではシミュレーションが不安定になりにくい。ユーザはいずれかの方法をあらかじめ選択しておくことができる。
【００４０】
図10は、ステップ510の詳細を示すPAD図である。ステップ510はステップ1001から1006からなる。
【００４１】
ステップ1001では、破堤区間を計算格子空間に離散化する。図11は、破堤区間を計算格子空間に離散化するための方法を説明する図である。離散化のために、まずポリラインpolyline(r0, r1, ...)とi軸およびj軸との交点を求める。図では、ポリラインとi軸との交点が点1102、点1106で、ポリラインとj軸との交点が点1103、点1105、点1107で示されている。求めた交点と元のポリラインの制御点r0, r1, ...とを制御点とするポリラインpolyline(s0, s1, ...)を新たに作成し、このポリラインの制御点の数をsnとする。
【００４２】
ステップ1002では、破堤区間を含む計算格子の予測変数を初期化する。破堤条件を予測変数で表現する方法として、本実施例では前述したとおり3つの表現方法のいずれかを選択できるようにしてある。いま、vector(sk, sk+1)が計算格子i,jに含まれているとするとして、それぞれの初期化について説明する。破堤流量を流量フラックスM, Nに変換する方法1)を用いる場合は以下の初期化を行う。
Mi+1,j = 0    (2-1)
Mi,j = 0    (2-2)
Ni,j+1 = 0    (3-1)
Ni,j = 0    (3-2)
破堤流量を流入量qに変換する方法2)を用いる場合は以下の初期化を行う。
qi,j = 0    (4-1)
破堤流量を水深hに変換する方法3)を用いる場合は以下の初期化を行う
hi,j = 0    (5-1)
ステップ1003では、ステップ1004から1005で処理する制御点のインデックスkを0からsn-2まで1ずづ増加させる。
【００４３】
ステップ1004では、破堤流量の方向nkとi軸のなす角qを算出する。図11にvector(s2, s3)における破堤流量Q2 (1112)の方向n2とi軸のなす角q(1111)を示した。破堤流量の方向nkはすでにステップ506で算出してある。これとi軸との角度qはq=acos(innter_product(nk, ei)/length(nk))で算出できる。ただし、inner_product(a, b)はベクトルaおよびbの内積を返す関数、acos()はアークコサインを返す関数、eiはi軸方向の単位ベクトルである。
【００４４】
ステップ1005では、ベクトルvector(sk, sk+1)の長さに応じた流量の大きさQk(t)を算出する。Qk(t)の算出は、Qk(t) = Qtotal(t) * length(vector(sk, sk+1)) /LENGTH(s0, ssn-1)とすればよい。
【００４５】
ステップ1006では破堤条件を予測変数に変換して代入する。破堤条件を予測変数で表現する方法として、本実施例では前述したとおり3つの表現方法のいずれかを選択できるようにしてある。いま、vector(sk, sk+1)が計算格子i,jに含まれているとするとして、それぞれの変換方法について説明する。破堤流量Qk(t)を流量フラックスM, Nに変換する方法1)は以下の式を用いる。
cos(θ)≧0ならば  Mi+1,j += (Qk / dx) *cos(θ)    (2-3)
cos(θ) < 0ならば  Mi,j += (Qk / dx) *cos(θ)    (2-4)
sin(θ)≧ 0ならば  Ni,j+1 += (Qk / dy) *sin(θ)    (3-3)
sin(θ) < 0ならば  Ni,j += (Qk / dy) *sin(θ)    (3-4)
ただし、演算子+=は左辺の変数の現在の値と右辺の値とを加算し、その値を左辺の変数に代入する演算を表す。この演算により、たとえば制御点s3(1104)を含む格子のように、格子内で流量方向が変化する場合に対応することができる。破堤流量Qk(t)を流入量qに変換する方法2)は以下の式を用いる。
qi,j += Qk    (4-2)
破堤流量Qk(t)を水深hに変換する方法3)は以下の式を用いる。
hi,j += Qk / (C *length(sk, sk+1))2/3    (5-2)
ただし、C: 越流係数であり、本実施例ではC=1.55とした。方法2)および3)では、破堤区間から市街地(堤内地)側と河川(堤外地)側の両方に向かって流速が発生するおそれがある。これを防ぐために以下の式を用いるとよい。
cos(θ) ≧ 0ならば  Mi,j = 0    (6-1)
cos(θ) < 0ならば  Mi+1,j = 0    (6-2)
sin(θ) ≧ 0ならば  Ni,j =0    (7-1)
sin(θ) < 0ならば  Ni,j+1 = 0    (7-2)
以上、ステップ501からステップ510により破堤条件の設定が完了する。ユーザはこの後、メニューバー402から「実行」を選択し、シミュレーションの処理を開始する。図12はシミュレーションの処理開始から数秒たった状態にあるGUIを示す図である。地図410に重ねて表示されたポリゴン462の形状が浸水した地域を、ポリゴン462の色が浸水深を表している。また、ユーザの利便性のためには、マウスポインタ401の近傍にツールチップ463を出現させ、内部にマウスポインタの位置における浸水深を表示することが望ましい。
本シミュレーションにおいて、上記GUIを介した条件設定による効果は、以下の通りである。1. 流入箇所が図形になるため、地図上で流入箇所を表現可能になる。これにより、ユーザが流入箇所の位置と形状を正確に入力することが可能になる。2. 破堤流量の方向を推定できる。これにより、境界条件として流入フラックスを自動的に設定することが可能になる。3. 流入箇所が単数または複数の計算格子にまたがる場合でも流入箇所の条件を設定できる。これによりユーザは、計算格子サイズを意識せずに流入箇所の条件を入力することが可能になる。
【実施例２】
【００４６】
図13は、実施例2における本発明を実現するためのコンピュータシステムの構成を示す概略ブロック図である。この図は、実施例1にて示した図3に以下のブロックが追加されている。河川情報ファイル323、気象情報ファイル324、河川シミュレーションプログラム332、ネットワークインタフェース351、インターネット352、河川情報サーバ353、気象情報サーバ354。河川情報ファイル323には、堤防形状、河川現況図、横断形状、縦断形状、距離票(河口などの基準点から現在地までの河川に沿った距離)などが記録されている。堤防形状はポリライン等で近似されているため、システムは堤防の位置と形状を認識できる。気象情報ファイル324には過去の降雨量時系列などが記録されている。河川シミュレーションプログラム332は、河川情報ファイル323に格納されたデータを用いて河川の水位や流速を算出する。PC300はネットワークインタフェース351、インターネット352を経由し河川情報サーバ353、気象情報サーバ354に接続されている。河川情報サーバ353は河川水位の最新の観測値及び予測値を配信する。気象情報サーバ354は降水量の最新の観測値及び予測値を配信する。
【００４７】
図14は、氾濫シミュレーションプログラム331の主たるGUIを示す図である。ウィンドウ1400内の地図410には、地理情報ファイル322から読み出された地物411の他、河川の情報(421から427)、時刻の情報(431および432)、気象および河川の情報(440から443)、堤防の情報(451および452)、氾濫シミュレーションの情報(461)が表示されている。
【００４８】
ユーザに破堤危険箇所を推定する材料を提供するために、地図410に河道法線421を表示するとよい。これは、経験を積んだユーザは、河道法線から瀬と淵、すなわち水深が小さく流速が大きい箇所と水深が大きく流速が小さい箇所を読み取り、河道内の流れ、さらには水が堤防に及ぼす影響を推定できることに基づく。また、重点的に監視すべき箇所(重要水防箇所)が指定されている場合、その箇所にアイコン422および管理番号423を表示するとよい。また、河川に一定の間隔で横断線424を重ね、距離票425を表示してもよい。河川の流下方向426や堤防法線427を表示してもよい。これらの情報は、外部記憶装置320に格納された河川情報ファイル323、あるいは河川情報サーバ353から取得すればよい。このようにすると、河川周辺の地理情報を河道との相対位置や距離票で管理することになれているユーザにとって、破堤区間の位置を把握しやすく表示できる。さらに、重要水防箇所を表示することで破堤が危惧される箇所をユーザが把握しやすくなる。
【００４９】
時刻の情報として、破堤時刻431および予測時刻432を表示するとよい。破堤時刻431欄には、破堤が開始した時刻を、また予測時刻432欄には、シミュレーションにおける時刻を表示するとよい。このようにすると、破堤が開始した時刻およびシミュレーションにおける時刻に加え、両者の時間差をユーザが把握しやすくなる。
【００５０】
気象および河川の情報として、河川水位・降雨量グラフ440を表示するとよい。グラフ440には、ユーザがマウスポインタ401で選択した地点近傍における単位時間ごとの降雨量が棒グラフ441で、河川水位時系列が折れ線グラフ442で示されている。また、計画高水位を横線443で示すとよい。これらの情報は、外部記憶装置320に格納された河川情報ファイル323および気象情報ファイル324、あるいは河川情報サーバ353および気象情報サーバ354から取得すればよい。あるいは、河川シミュレーションプログラム332の情報を記録したシミュレーション結果ファイル321から取得すればよい。
【００５１】
堤防の情報として水面と堤防上端(天端)の距離を地図上の堤防の位置452に色表示するとよい。また、その凡例451を表示するとよい。これらの情報は、外部記憶装置320に格納された河川情報ファイル323、あるいは河川情報サーバ353から取得すればよい。あるいは、河川シミュレーションプログラム332の情報を記録したシミュレーション結果ファイル321から取得すればよい。
【００５２】
氾濫シミュレーションの情報として、浸水深を色表示するとよい。また、その凡例461を表示するとよい。これらの情報は、氾濫シミュレーションプログラム331の情報を記録したシミュレーション結果ファイル321から取得すればよい。
【００５３】
ユーザは図14に示したGUIを用いて氾濫条件を設定することができる。図15は破堤条件の設定処理に関するPAD図である。
【００５４】
ステップ1501はステップ1502から1505よりなる。これらのステップでは、実施例1と同様に破堤区間を0点以上の節点を持つ折れ線(ポリライン)で近似し、さらにこのポリラインを構成する点は、市街地から堤防を見て左から右に向けて順に並べるようにする。ただし、河川情報ファイル323に格納された堤防に関する情報を利用することで、ユーザに入力を要求する情報を実施例1よりも削減できる。以下、破堤区間を作成するステップについて、図15および図16を参照しながら説明する。
【００５５】
ステップ1502では、ユーザに始点候補および終点候補を指定させる。図16(a)はステップ1502をユーザが行っている状態にあるGUIの一部を示す図である。本実施例では、ユーザが地図410の一点をクリックしてドラッグすることにより任意の選択用図形を作成し、その図形と堤防との位置関係により始点・終点候補を指定する。図では、クリックした位置631と、現在のマウスポインタの位置632を対角線とし、ディスプレイ313の水平方向および鉛直方向に辺を持つ矩形633を選択用図形とし、選択用図形と交差する堤防を始点・終点候補として選択している。矩形を用いた選択になれたユーザにとってこの選択方法は直感的にわかりやすい。なお、選択用図形は矩形でなくてもよく、たとえばクリックした位置を中心とし、クリックした位置と現在のマウスポインタの位置間の距離を半径とする円でもよい。広範囲が破堤した場合などでは円で選択する方法が便利である。
【００５６】
ステップ1503では、始点・終点を決定し、始点・終点間の堤防を破堤区間とする。ステップ1502で作成した選択用図形と堤防との位置関係から、破堤区間の始点および終点を検索する。本実施例では、選択用図形と堤防との交点を始点または終点とする。ここで、選択用図形と堤防との交点のうち、距離票の値が最小の点を始点、最大の点を終点とする。堤防の位置は、河川情報ファイル323より取得すればよい。続いて、堤防の制御点のうち、始点の距離票以上であり、かつ終点の距離票以下である制御点を河川情報ファイル323から選択する。選択された制御点がない場合は始点と終点を端点とするポリラインを作成する。また、選択された制御点がある場合は、始点、終点、選択された制御点を距離票の値が昇順になるように接続するポリラインを作成する。このポリラインを以後破堤区間とよぶ。なお、図16(a)に示すように、ユーザの利便性向上のためにステップ1503で作成された破堤区間をポリライン605により表示することが望ましい。
【００５７】
ステップ1504では、破堤区間の市街地(堤内地)向き法線を流入方向とする。ステップ1503で作成した破堤区間と河川情報ファイル323より取得した河道位置との相対関係から、破堤区間の市街地向き法線がポリラインの左側または右側に位置するかが判別できる。ポリラインの右側の法線の算出方法は実施例1に示した通りであり、同様にしてポリラインの左側の法線も算出できる。なお、図16(a)に示すように、ユーザの利便性向上のためにステップ1504で作成された流入方向を矢印603により表示することが望ましい。また、マウスポインタの近傍にツールチップ613を出現させ、その中に始点・終点の距離票、破堤区間代表点の水位hrep、破堤幅Bを表示することが望ましい。始点・終点の距離票は河川情報ファイル323から取得すればよい。また破堤区間代表点の水位hrepは、破堤区間に最も近い河川水位計の最新の観測値を取得すればよい。あるいは、河川シミュレーションプログラム332により得られる水位のうち、破堤区間に最も近い地点の値を取得すればよい。破堤幅Bの計算方法は実施例1に示した通りである。
【００５８】
なお、矢印603の長さを破堤区間代表点における単位幅あたりの流量に比例させてもよい。こうすれば矢印603は破堤箇所における流量Qtotalの大きさと向きを同時に表現できる。矢印の長さLarrowは破堤区間代表点の水位hrepを用いて以下の式で算出すればよい。
Larrow = LQ * qrep    (8-1)
qrep = C * (hrep - zrep)1.5    (8-2)
ただし、LQ: 単位流量に対応するピクセル数、qrep: 破堤区間代表点における単位幅あたり流量、C: 越流係数(本実施例ではC=1.55とした)、zrep: 破堤区間代表点における天端高(標高)であり、常にhrep ≧ zrepが成り立つ。zrepは河川情報ファイル323から取得するか、適宜ユーザに指定させればよい。
【００５９】
あるいは、矢印603の長さを破堤区間代表点における流速に比例させてもよい。矢印の長さLarrowは破堤区間代表点の水位hrepを用いて以下の式で算出すればよい。
Larrow = LU * Urep     (9-1)
Urep = C * (hrep - zrep)0.5    (9-2)
ただし、LU: 単位流速に対応するピクセル数、Urep: 破堤区間代表点における流速である。
【００６０】
あるいは、矢印の長さLarrowを流れが単位時間あたりに進む距離としてもよい。この場合、式(9-1)の係数LUを以下の式で求め、その係数を用いて矢印の長さLarrowを上述した式(9-1)、(9-2)で求めればよい。
LU = Tunit * scale * resol    (10)
ただし、Tunit: 単位時間、scale: 地図410の縮尺、resol: ディスプレイ313の解像度である。たとえば、72 dpi (resol=2.8*103 pixel/m)のディスプレイで縮尺1/25,000 (scale=4.0*10-5)の地図を利用し、破堤箇所における最大流速で10分間 (Tunit =600 sec)に進む距離を矢印の長さLarrow により表現したい場合、LU= 68 pixel*sec/mとなる。
【００６１】
ステップ1505では、ユーザから終了指示があるかを判別する。終了指示がある場合はステップ1501を終了しステップ1506に進み、ない場合は再びステップ1502に戻る。図6(b)はステップ1505においてユーザが終了指示を行った状態にあるGUIの一部を示す図である。本実施例ではユーザがマウス312を引き続きドラッグした場合は終了指示なし、マウス312の左ボタンを放した場合は終了指示ありとした。なお、図6(b)に示すように、ユーザの利便性向上のために始点および終点にそれぞれアイコン601、604などを表示することが望ましい。
【００６２】
ステップ1506では、破堤流量を河川シミュレーションプログラム332から算出する。本実施例では、河川シミュレーションプログラム332により得られる水位のうち、破堤区間に最も近い地点の値を破堤区間における河川水位として取得し、その河川水位から破堤流量を算出する。河川水位Hから破堤流量Qtotalを求めるために、以下の式が利用できる。
Qtotal = C * B * ( hrep - zrep)1.5  (11)
以上、ステップ1501およびステップ1506で破堤条件が作成された。作成された破堤条件はメモリ330に破堤条件データ333として展開される。図17は本実施例の破堤条件データ333のメモリ上の構造を示す図である。破堤条件データは、破堤区間領域1710から構成される。破堤区間領域1710には破堤開始時刻t0、その時刻における破堤区間の始点r0(t0)、終点r1(t0)、破堤区間における破堤後の天端高zrep (t0)が格納される。以後、破堤開始時刻t0と破堤終了時刻t1の間の任意の時刻tのr0(t), r1(t), zrep (t)が繰り返し格納される。なお、破堤条件データ333を外部記憶装置320にファイルとして保存してもよい。
【００６３】
ステップ1507では、破堤条件を計算格子空間に離散化する。この方法は、すでに実施例1に示したとおりである。
【００６４】
以上、ステップ1501からステップ1507により破堤条件の設定が完了する。ユーザはこの後、メニューバー402から「実行」を選択し、シミュレーションの処理を開始する。図18はシミュレーションの処理開始から数秒たった状態にあるGUIを示す図である。地図410に重ねて表示されたポリゴン462の形状が浸水した地域を、ポリゴン462の色が浸水深を表している。また、ユーザの利便性のためには、マウスポインタ401の近傍にツールチップ463を出現させ、内部にマウスポインタの位置における浸水深を表示することが望ましい。
【００６５】
なお、本実施例では氾濫現象の原因として河川の堤防決壊(破堤)を挙げて説明したが、破堤と同様に線形構造物から水が溢れる現象には、破堤以外にも河川の越水、溢水、高潮、津波などがある。これらの現象が原因となる氾濫シミュレーションにも本発明が適用できることは、実施例から明らかである。
【産業上の利用可能性】
【００６６】
以上述べたとおり、本発明によれば、氾濫シミュレーションを簡便に設定でき、浸水被害の推定等に適用することができる。
【図面の簡単な説明】
【００６７】
【図１】氾濫シミュレーションの計算過程の一例を示す概要図。
【図２】Dynamic DDMを適用した氾濫シミュレーションの計算過程の一例を示す概要図。
【図３】実施例1における本発明を実現するためのコンピュータシステムの構成の一例を示す概略ブロック図。
【図４】氾濫シミュレーションプログラム331の主たるGUI(Graphical User Interface) の一例を示す図。
【図５】破堤条件の設定処理の一例に関するPAD (Problem Analysis Diagram)図。
【図６】ユーザが破堤区間作成操作を行っている状態にあるGUIの一例の一部を示す図。
【図７】ユーザが破堤流量を変更するためのGUIの一例を示す図。
【図８】実施例1の破堤条件データ333のメモリ上の構造の一例を示す図。
【図９】本実施例の計算格子の一例を示す図である。
【図１０】ステップ510の一例の詳細を示すPAD図。
【図１１】破堤区間を計算格子空間に離散化するための方法を説明する図。
【図１２】シミュレーションの処理開始から数秒たった状態にあるGUIの一例を示す図。
【図１３】実施例2における本発明を実現するためのコンピュータシステムの構成の一例を示す概略ブロック図。
【図１４】氾濫シミュレーションプログラム331の主たるGUIの一例を示す図。
【図１５】堤条件の設定処理の一例に関するPAD図。
【図１６】ユーザが破堤区間作成操作を行っている状態にあるGUIの一例の一部を示す図。
【図１７】本実施例の破堤条件データ333のメモリ上の構造の一例を示す図。
【図１８】シミュレーションの処理開始から数秒たった状態にあるGUIの一例を示す図。
【符号の説明】
【００６８】
300   PC
322   地理情報ファイル
331   氾濫シミュレーションプログラム
333   破堤条件データ
401   マウスポインタ
410   地図
601   破堤区間の端を示すアイコン
602   破堤区間を示すポリライン
603   破堤区間からの流入方向を示す矢印
633   破堤区間を選択するための矩形。
【図１】
0004431545.tif 000002
【図２】
0004431545.tif 000003
【図３】
0004431545.tif 000004
【図４】
0004431545.tif 000005
【図５】
0004431545.tif 000006
【図６】
0004431545.tif 000007
【図７】
0004431545.tif 000008
【図８】
0004431545.tif 000009
【図９】
0004431545.tif 000010
【図１０】
0004431545.tif 000011
【図１１】
0004431545.tif 000012
【図１２】
0004431545.tif 000013
【図１３】
0004431545.tif 000014
【図１４】
0004431545.tif 000015
【図１５】
0004431545.tif 000016
【図１６】
0004431545.tif 000017
【図１７】
0004431545.tif 000018
【図１８】
0004431545.tif 000019