落水線編集プログラム及び落水線編集装置
【課題】ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持する。
【解決手段】空間を構成するセルの指定及び前記指定されたセルを始点とする新たな落水線の指定を受ける第1手順と、前記指定された落水線が不正であるか否かを判定する第2手順と、前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第3手順と、前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第4手順と、をプロセッサに実行させ、前記第2手順において、前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記第3手順および前記第4手順の前に、前記指定されたセルについて、前記第1手順を再び前記プロセッサに実行させる。
【解決手段】空間を構成するセルの指定及び前記指定されたセルを始点とする新たな落水線の指定を受ける第1手順と、前記指定された落水線が不正であるか否かを判定する第2手順と、前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第3手順と、前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第4手順と、をプロセッサに実行させ、前記第2手順において、前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記第3手順および前記第4手順の前に、前記指定されたセルについて、前記第1手順を再び前記プロセッサに実行させる。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、コンピュータを使って流域情報を編集する方法に関する。本発明は特に、数値地形モデル(digital elevation mode, DEM)に基づいてコンピュータプログラムによって作成した落水線を編集する方法に関する。
【背景技術】
【0002】
落水線(channel network)は、水文学の基本的なデータの一種である。落水線は地表面の水が流れる方向を示す有向線分である。より正確には、水文学の対象とする時空間スケールにおける表流水の流向を示すデータであり、地図では有向線分として表現されることが多い。落水線を用いれば、流域を容易に求めることができる。ある地点の流域を求めるには、その地点から落水線を逆に(すなわち上流方向に)たどればよい。また、分布型流出モデル(流域における水の流れを再現する物理モデル)に必要な流向と勾配は、落水線に沿った地表面標高の勾配として容易に算出できる。このように落水線は水文学の調査研究において、広く使われるデータである。
【0003】
落水線は、コンピュータプログラム(落水線作成プログラム)によって作成されることが多い。落水線作成プログラムの入力データは地表面の標高データである。これは、水文学的な時空間スケールにおいて、水の流向は地表面の最も急な下り勾配方向(最急勾配方向)と一致するという経験的知識を利用するためである。主要な落水線作成プログラムの比較、およびそれらの処理手順は、非特許文献1に詳しい。
【0004】
落水線の表現方法は一意ではない。たとえば、落水線の方向、すなわち地表面の最急勾配方向を0以上360未満の角度で表す方法(非特許文献1)が考えられる。しかし、現在最も広く使われている方法(D8 Methodと呼ばれる)はそれとは異なり、落水線の方向が8方向のみで表現される(非特許文献2、非特許文献3)。D8 methodでは、セル(cell)と呼ばれる矩形の小領域の集合で地表面を表現する。この実装では、入力データとして利用する地表面の標高データが、DEM(Digital Elevation Model)と呼ばれる表現形式をとる。DEMでは、セルごとに与えた標高値によって地表面の標高が表現される。また、あるセルを始点とする落水線は、1本かつ終点が隣接するセルとなるものに限定される。隣接するセルは8個あるので、この限定によって落水線は8方向のみとなる。このようにして作成された落水線が、水文学の調査研究で利用されている。たとえば特許文献1に開示された「全国合成レーダ雨量を用いた分布型流出予測システム」、特許文献2に開示された「洪水予測システム」が挙げられる。さらには、インターネットを介したクライアント・サーバシステムで流域分割を行う方法が提案されている(非特許文献4)。また、D8 methodと類似の方法によって8方向のみの落水線を生成する方法が特許文献3の「地下標高モデル作成方法、排水処理領域分割方法、排水処理能力評価方法および装置」に開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−8651号公報
【特許文献2】特開2007−11582号公報
【特許文献3】特開2007−204932号公報
【特許文献4】特開2009−163621号公報
【非特許文献】
【0006】
【非特許文献1】Tarboton, D. G.: A New Method for the Determination of Flow Directions and Upslope Areas in Grid Digital Elevation Models, Water Resources Research, Vol. 33, No. 2, pp. 309-319, 1997.
【非特許文献2】O'Callaghan, J. F., and D. M. Mark: The extraction of drainage networks from digital elevation data, Computer Vision, Graphics, and Image Processing, Vol. 28, No. 3, pp. 323-344, 1984.
【非特許文献3】Jenson, S. K., and J. O. Domingue: Extracting topographic structure from digital elevation data for geographic information system analysis, Photogrammetric Engineering & Remote Sensing, Vol. 54, No. 11, pp. 1593-1600, 1988.
【非特許文献4】Choi, J. Y., and B. A. Engel: Real-Time watershed delineation system using Web-GIS, Journal of Computing in Civil Engineering, Vol. 17, No. 3, pp. 189-196, DOI: 10.1061/(ASCE)0887-3801(2003)17:3(189), 2003.
【非特許文献5】Kobayashi, K., K. Takara, Y. Tachikawa and T. Sayama, Analysis of the Yuragawa River Flood by Typhoon No. 23 in October 2004 using a distributed rainfall-runoff model, 京都大学防災研究所年報, No. 49 C, 2006.
【非特許文献6】Yamazaki, D., T. Oki, and S. Kanae, Deriving a global river network map and its sub-grid topographic characteristics from a fine-resolution flow direction map, Hydrology and Earth System Sciences, Vol. 13, Issue 11, pp. 2241-2251, 2009.
【非特許文献7】Freeman, T. G.: Calculating catchment area with divergent flow based on a regular grid, Computers & Geosciences, Vol. 17, Issue 3, pp. 413-422, DOI: 10.1016/0098-3004(91)90048-I, 1991.
【非特許文献8】Quinn, P., K. Beven, P. Chevallier, and O. Planchon: The prediction of hillslope flow paths for distributed hydrological modelling using digital terrain models, Hydrological Processes, Vol. 5, Issue 1, pp. 59-79, DOI: 10.1002/hyp.3360050106, 1991.
【非特許文献9】Shrestha, R., Y. Tachikawa and K. Takara: A new method to define flow direction using grid digital elevation models, Annual Journal of Hydraulic Engineering, JSCE, Vol. 47, pp. 241-246, 2003.
【発明の概要】
【発明が解決しようとする課題】
【0007】
落水線作成プログラムによって作成された落水線が、実際に水が流れる方向とは異なることがある。このような問題は、発明者らがすでに開示した発明「流域推定プログラム」(特許文献4の図6)のように、地図と落水線とを重ねて表示することで顕在化する。一般に地図には水路が示されており、これと落水線とを重ねて表示すると、両者の位置および形状の差異が明確になる。一方で発明者らは、これらの問題はごく限定された地域のみに発生すると考えたため、ごく限定されたセルのデータを専門家が直に編集すればよいと考えていた。実際に、特許文献1では「メッシュに分割された流域について、数値地図(1kmメッシュ平均標高、KS−273:流域界位置、KS−272:流路位置)に基づき落水線図を作成し、さらに目視よる修正を加える。」と記述されており、このような考え方が一般的であることが推測される。
【0008】
ところが実際には、その編集作業がきわめて困難で生産性が低いことがわかった。落水線は水文学的な時空間スケールにおける表流水の流向という、物理的意味を持ったデータである。一方、人間が落水線を任意に編集すると、この物理的意味と矛盾する不正な落水線が生成されうる。不正な落水線の例を図23に示す(図23は不正な落水線の例を示す説明図である)。
【0009】
図23(a)において、セル2301から落水線の方向に進むと、もとのセル2301に戻る。すなわち、セル2301に流れ下った水は、それ以後位置エネルギーを永遠に失わず永遠に流れ下り続ける。ポンプ等の人工設備を使わない限り、このような流れを実現できない。
【0010】
別の例を図23(b)に示す。この例では、セル2311、2314、2313、2312の順に水が流れる。セル2311から出る落水線とセル2313から出る落水線が交差している。落水線の交差部分に立体交差を実現するサイフォンなどの人工設備を使わない限り、このような流れを実現できない。
【0011】
さらに別の例を図23(c)に示す。この図23(c)では、地表面の標高はセル2321が最大で降順にセル2321、2322、2323、2324であり、落水線がセル2321、2322、2323、2324の順に通過している。この落水線は下り方向に流れているため、一見正しいように思える。しかしこの落水線は、地表面の最急勾配方向と一致していないため不正である。
【0012】
この地形において正しい落水線を図23(d)に示す。セル2331、2332、2333が、それぞれ2334と落水線で直接結ばれている。すなわち、セル2331、2332及び2333から流出した水がセル2334に直接流れ込む。
【0013】
水文学では1000万本程度の落水線からなる領域を対象とすることもある。たとえば、落水線作成プログラムにより作成された落水線のわずか0.01%を修正するとしても1000本の落水線を編集することになる。このような不正な落水線を1本も発生させることなく落水線を編集することは事実上不可能であり、仮に可能であってもきわめて生産性が低い作業である。
【0014】
作成された落水線は、水文学上の種々の処理、たとえばある地点の上流を特定する処理、流域面積を求める処理、または平均勾配を求める処理などに使用される。しかし、編集された落水線に上記のような不正が存在することによって、上記のような処理に支障が生じる場合がある。たとえば、図23(a)のように循環する落水線を用いた場合、上流を特定する処理が正常に終了しないといった問題が発生する。
【0015】
本発明はこの問題に鑑みてなされたものである。本発明の目的は、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供することである。
【課題を解決するための手段】
【0016】
本願で開示する代表的な発明の概要は以下の通りである。すなわち、コンピュータを制御する落水線編集プログラムであって、前記コンピュータは、前記落水線編集プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、前記落水線編集プログラムは、前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受ける第1手順と、前記指定された落水線が不正であるか否かを判定する第2手順と、前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第3手順と、前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第4手順と、を前記プロセッサに実行させ、前記第2手順において、前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記第3手順および前記第4手順の前に、前記指定されたセルについて、前記第1手順を再び前記プロセッサに実行させることを特徴とする。
【発明の効果】
【0017】
本発明の一実施形態によれば、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供できる。このプログラムによって、ユーザの知見を反映した落水線を短時間で生成し水文学に使用できるようになる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態におけるコンピュータシステムの構成を示す概略ブロック図である。
【図2】本発明の実施形態における落水線編集プログラムとハードウェア資源との相互作用を示すシーケンス図である。
【図3】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集を開始した状態を示す説明図である。
【図4】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集を開始した状態を示す第1の説明図である。
【図5】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集を継続している状態を示す第2の説明図である。
【図6】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集内容を確定している状態を示す説明図である。
【図7】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける地形を編集している状態を示す説明図である。
【図8】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集後の落水線を表示した状態を示す説明図である。
【図9】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、追加モードにおける地形を編集している状態を示す説明図である。
【図10】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、追加モードにおける地形を編集後の落水線を表示した状態を示す説明図である。
【図11】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、削除モードにおける地形を編集している状態を示す説明図である。
【図12】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、削除モードにおける地形を編集後の落水線を表示した状態を示す説明図である。
【図13】本発明の第1の実施形態の落水線編集プログラムの機能モジュール構成を示すパッケージ図である。
【図14】本発明の第1の実施形態のセルのデータ構造を示す説明図である。
【図15】本発明の第1の実施形態の落水線編集内容の指定の処理における、落水線編集プログラムとハードウェア資源との相互作用の詳細を示すシーケンス図である。
【図16】本発明の第1の実施形態における落水線編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図17】本発明の第1の実施形態の地形編集内容の指定の処理における、落水線編集プログラムとハードウェア資源との相互作用の詳細を示すシーケンス図である。
【図18】本発明の第1の実施形態の地形編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図19】本発明の第2の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集中の状態を示す説明図である。
【図20】本発明の第2の実施形態における落水線編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図21】本発明の第2の実施形態における落水線編集プログラムが提供するGUIの、流域外の一部領域を流域として追加する場合における編集中の状態を示す説明図である。
【図22】本発明の第2の実施形態における落水線編集プログラムが提供するGUIの、流域の一部領域を流域外として削除する場合における編集中の状態を示す説明図である。
【図23】不正な落水線の例を示す説明図である
【発明を実施するための形態】
【0019】
最初に、本発明の概要を説明する。
【0020】
本発明は、発明者らが見いだした、実際の流れが次の3種類に分類されるという原理に基づく。
【0021】
流れ1:落水線として表現できる流れ。
【0022】
流れ2:セル同士を結ぶ流れとして表現できる流れ。
【0023】
流れ3:セル同士を結ぶ流れとして表現できない流れ(たとえば、セルよりも空間スケールが小さい流れ、水深方向に均一でない流れなど)。
【0024】
明らかに、流れ2は流れ1を包含する。流れ2の具体的な例を図23に示す。図23(a)から図23(d)に示した流れはすべてセル同士を結ぶ流れとして表現されており、明らかに流れ2である。一方、落水線として正しい流れは前述したとおり図23(d)のみであり、落水線(流れ1)は流れ2の一部である。
【0025】
流れ2のうち、図23(c)および図23(d)の流れは、セルを結ぶ水路内の流れとして落水線と同じ物理法則(標高の下り方向に流れる流れ)で表現できる。なぜならば、落水線が有する「水が流れる方向」が落水線のように周囲のセルの標高により決定されても、水路のように水路の壁により決定されても、標高の下り方向に流れるという流れの性質に違いがないからである。このことは、セルに比べ幅が十分広い水路は、落水線で表現できることからも明らかである。このことからも示唆されるとおり、図23(c)および図23(d)の流れが落水線として表現できない理由は直感的にわかりにくい。図23(a)および図23(b)がセルの大きさを変更することでは表現できず、その表現には専用の物理モデル(ポンプまたはサイフォンなど)が必要なこととは大きく異なる。
【0026】
一方、ユーザが「実際の流れと落水線とが違う」と考える原因は、地図に記載された水路を暗黙のうちにセルを結ぶ水路として近似表現し、その水路と落水線生成プログラムの作成した落水線とが大きく異なると判断するためと考えられる。したがって、落水線と水路とを共存させるようにすれば、ユーザにとって正しいと考えられる「落水線」が実現できる、と発明者らは考えた。
【0027】
落水線は最急勾配方向に、水路は水路の中心線に沿って流れる。しかしどちらも、下り勾配方向に流れ下ることは共通である。したがってこれらの流れを共存させるためには、最急勾配方向でない方向に流れる落水線を許容し、かつ水路中心線に沿って下り勾配方向になるように地形を変更すればよい。ただしこの操作は、水路の上流端と落水線、および下流端と落水線とが矛盾なく接続するよう、落水線と水路の上流端とを結ぶ勾配、水路の下流端と落水線とを結ぶ勾配のどちらもが下り勾配になる場合のみ可能である。
【0028】
以上の原理に基づき、発明者らが考案した本発明の落水線編集プログラムは以下のステップ1からステップ3によって構成される。
【0029】
ステップ1:ユーザからセルおよび流れる方向の指定を受ける。このステップでは、ユーザに水路となるセルおよびその流れ方向を、落水線編集指示として入力させればよい。
【0030】
ステップ2:指定されたセルの流れる方向に基づき、指定されたセルの標高を決定する。ただし、1つのセルに2種類の標高が与えられる場合、または、指定されたセルであって、上流のセルが指定されなかったセルであり、かつ、上流のセルよりも標高が高い場合、または、指定されたセルであって、下流のセルが指定されなかったセルであり、かつ、下流のセルよりも標高が低い場合、地形の編集指示に変更不可能な指示と見なし、処理を中断するか、ステップ1に戻ってユーザに水路の位置の再入力を要求する。
【0031】
ステップ3:落水線を更新する。このステップでは、ステップ1で受け取ったセルおよび流れる方向、およびステップ2で決定された地形を用いて落水線を生成し、既存の落水線を上書きすればよい。
【0032】
なお、本発明は、流れ1および流れ2を対象とする。セルを用いて流れ3を表現できないことは明らかである。ただし、流れ3についてはすでに知られている技術と本発明とを組み合わせて用いることで対応できる。流れ1と流れ3とを表現する方法として、たとえば非特許文献5では、流れ1を表すモデルの特定のセルを別のモデル(河川モデル)のセルに接続する方法が用いられている。また非特許文献6では、1セルで2つ以上の流れを表現する方法を提案している。これらの方法は落水線を用いるモデルに組み合わせて用いることができるため、本発明に組み合わせて用いることができる。
【0033】
以下、落水線編集プログラムの実施形態を2つの例を用いて説明する。第1の実施形態は落水線1本ごとの編集に適しており、第2の実施形態はより広い領域における複数本の落水線の編集に適している。どちらも同じ原理に基づいているため、1つのプログラムで両方の機能を備えても矛盾は生じない。したがって、両方の機能を備えるプログラムを作成し、これらの実施形態のどちらかをユーザに選択させてもよい。
【0034】
なお、説明の都合上、実施例において落水線はD8 methodで生成するものとする。したがって、各セルから出る落水線は1本である。また、落水線はセルの中心同士を結ぶ線分または矢印として表示される。ただし、本発明はD8 methodにのみ適用可能なわけではなく、セルにおける標高データを用いて落水線を生成し、セル同士を結ぶ有向線分として落水線を表現する場合に適用可能である。本実施例に記載した落水線生成方法D8 methodではない落水線生成方法として、たとえば非特許文献7または非特許文献8に示されたMultiple flow direction method、非特許文献9に示されたRanked flow tendency methodが挙げられる。これらの方法では、D8 methodとは異なり、各セルから出る落水線は1本以上となる。また、本実施形態に記載した落水線表示方法ではない方法として、非特許文献4(Fig.4d)に示された、セルの辺または頂点を結ぶ方法が挙げられる。
【0035】
<第1の実施形態>
以下、本発明の第1の実施形態を添付図面に基づいて説明する。
【0036】
図1は、本発明の実施の形態におけるコンピュータシステムの構成を示す概略ブロック図である。
【0037】
本実施の形態のコンピュータシステムは、PC(Personal Computer)100によって構成される。PC100は、入出力部110を備える。入出力部110は、キーボード111およびマウス112などからなる入力部と、ディスプレイ113などからなる出力部によって構成される。ユーザは、入力部から命令を入力し、出力部から結果を確認することができる。
【0038】
さらにPC100は、メモリ120およびCPU(Central Processing Unit)130を備える。メモリ120には落水線編集プログラム141が展開される。この落水線作成プログラム141はCPUへの命令から構成される。CPU130は、落水線作成プログラム141の命令に従い、計算、HDD(Hard Disk Drive)190へのアクセス、および入出力部110との情報の交換などを行う。以下の説明において落水線編集プログラム141が実行する処理は、実際には、流域抽出プログラム141に記述された命令に従うCPU130によって実行される。
【0039】
HDD190には標高データ191、落水線データ192、および地図データ193が格納されており、落水線編集プログラム141はこれらのデータを読み込むこと、および書き込むことができる。なお、HDD190は、PC100に内蔵されてもよいし、PC100の外部に接続されてもよいし、PC100からネットワーク経由でアクセスできる別の装置に接続されてもよい。
【0040】
標高データ191は、一般的にDigital elevation model(DEM)と呼ばれるデータである。すなわち、標高データ191は、セルの位置とそのセルにおける地表面の標高を記載した情報である。ある位置に割り当てられるセルは唯一であるため、セルの位置情報に基づいてセルに一意な識別番号(ID)を割り当てることができる。また、この標高データ191では、陸域には標高値が、海域には海域を示す値が格納されている。なお、海域とは、流出口がない水域、つまり、海洋および閉塞湖沼域(水の流出口がない湖)等である。
【0041】
落水線データ192は、標高データ191と同様にセルの位置とそのセルにおける落水線の属性とを記載した情報である。落水線の属性とは、向き、勾配などである。さらにこの属性に、そのセルより上流のセルの数、最下流のセルのIDなど、落水線データの解析結果を含めてもよい。このデータは、落水線生成プログラムを用いてあらかじめ作成しておく。落水線生成プログラムとして、たとえば発明者らが特許文献4で開示した発明「流域推定プログラム」を使うことができる。
【0042】
地図データ193は、ユーザが落水線を編集するための判断材料となる情報であればよい。地図データ193として適している情報として、河川等の位置が記載された地形図などが挙げられる。
【0043】
図2は、PC100によって実行される落水線編集プログラム141とハードウェア資源との相互作用を示すシーケンス図である。
【0044】
PC100で落水線編集プログラム141が起動される。落水線編集プログラム141は、HDD190から落水線データ192を読み出す(ステップ201)。データを読み出した落水線編集プログラム141は、ウィンドウ300からなるGUI(Graphical User Interface)をディスプレイ113に出力する(ステップ202)。このGUIを用いて、落水線編集プログラム141は、編集モードの指定を受ける(ステップ203)。このステップは省略可能である。このステップを実行すると、ユーザの誤操作を防ぐためにユーザの操作が制限される。さらにGUIを用いて、落水線編集プログラム141は、ユーザから落水線編集指示を受け取る(ステップ204)。落水線編集プログラム141は、指示された落水線が不正なものであるか否かを判定し、不正なものでない場合にのみこの指示を受け取る。
【0045】
つづいて落水線編集プログラム141は、ユーザによる落水線の編集指示を、地形の編集指示に変換する(ステップ205)。このステップでは、変換の詳細についてユーザに問い合わせを行ってもよい。本実施形態(第1の実施形態)は問い合わせる場合について説明し、別の実施形態(第2の実施形態)では問い合わせない場合について説明する。落水線編集プログラム141は、この地形の編集指示に従い地形を編集し(ステップ206)、さらに編集された地形に基づき落水線を生成する(ステップ207)。
【0046】
このステップ207においては、落水線生成部1322(図13参照)を用いて下り勾配方向の落水線が生成される。落水線生成部1322としては、たとえば発明者らが特許文献4で開示した発明「流域推定プログラム」を使うことができる。なおステップ207において、落水線生成部1322は、ユーザが指定した落水線に戻る(すなわち循環する)落水線、および、ユーザが指定した落水線を横切る落水線を生成させないように落水線を生成する。
【0047】
また、後で詳細に説明するように、本実施形態では、あるセルについて無効方向が定められている場合、無効方向ではない方向のうち下り勾配方向に一致するように落水線が生成される。たとえば、上記の「流域推定プログラム」は、下りの最急勾配方向に一致する落水線を作成するが、本実施形態に「流域推定プログラム」を用いた場合、無効方向ではない方向のうち最急勾配方向に一致する落水線が作成される。
【0048】
落水線編集プログラム141は、生成した落水線をGUIに表示し(ステップ208)、落水線が意図通りであることをユーザに確認させてもよい。また、ユーザからデータを保存するコマンドを受け付けて、標高データ191および落水線データ192の書き込み(ステップ209および210)を行ってもよい。これらによって標高データ191および落水線データ192が更新される。
【0049】
なお、落水線編集プログラムは、ステップ203において、「付け替え」、「追加」または「削除」のいずれかをユーザに選択させることが望ましい。
【0050】
「付け替え」が選択された場合、ユーザが編集可能な落水線が流域内に制限される。この場合流域界が変更されないため、ステップ207の処理は流域内(すなわちステップ201で読み込んだ時点における落水線データ192によって特定される流域内)のみを対象にすればよい。具体的には、ステップ207において、落水線生成部1322は、流域内のセルのみについて最急勾配方向を特定し、それに基づいて落水線を作成するが、流域外のセルについては最急勾配方向を特定する処理を実行しない。
【0051】
「追加」が選択された場合、ユーザが編集可能な落水線の始点が流域外となるよう制限される。この場合流域が拡張されるため、ステップ207の処理は流域外も対象にする必要がある。すなわち、ステップ207において、落水線生成部1322は、流域内のセルだけでなく、流域外のセルについても最急勾配方向を特定し、それに基づいて落水線を作成する必要がある。
【0052】
「削除」が選択された場合、ユーザが編集可能な落水線の終点が流域外となるよう制限される。この場合流域が縮小されるため、「付け替え」の場合と同様、ステップ207の処理は流域内のみを対象にすればよい。
【0053】
なお、落水線編集プログラム141のシーケンスにおいて重要な点は、落水線編集指示の受け取り(ステップ204)、落水線の編集指示を地形等の編集指示に変換(ステップ205)、標高データの変更(ステップ206)、落水線データの変更(ステップ207)の順に処理がなされることである。この順に処理がなされる限り、その他のシーケンスを変更させることができる。たとえば、ステップ210の後再びステップ203に戻り新たな編集作業を継続することは可能である。
【0054】
ステップ203からステップ208に関するGUIの遷移を図3から12に示す。
【0055】
図3は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集を開始した状態(ステップ204)を示す説明図である。
【0056】
図3のGUIは、ディスプレイ113の所定の領域に表示されるウィンドウ300からなり、キーボード111およびマウス112による入力を受け付ける。ウィンドウ300は、少なくとも落水線表示部310を備え、さらに編集コマンド入力部320および地形断面表示部330を備えることが望ましい。
【0057】
落水線表示部310は、少なくともステップ201で読み込んだ落水線データ192に含まれる落水線(たとえば落水線311など)を表示する。これらの落水線はすべて下流端セル343に到達する。すなわち、この状態で落水線表示部310に表示されているセルはセル343の流域である。このことを明示するため、太い線分362のように流域界を表すことが望ましい。セルの位置を示すために線分361のようにセルの辺(枠線)を示してもよい。図3の例では、線分361のような枠線によって格子状に区切られた矩形の各領域がセル(たとえばセル341)である。
【0058】
また落水線表示部310は、編集対象とする落水線をユーザに指定させる機能を備える。本実施例では、マウス112の動きを検知しマウスポインタ301を動かし、マウス112の操作(例えば左クリック)を検知することによって編集対象とする落水線をユーザに指定させる。ユーザの操作結果をユーザにわかりやすく伝えるために、指定された落水線311を太線等で表示する、かつ・または指定された落水線311の終点にアイコン302を表示することが望ましい。
【0059】
さらに落水線表示部310は、マウス112の右クリックを検知し、ユーザが落水線編集プログラム141に編集終了を通知するためのユーザインタフェース(コンテキストメニュー)を出現させることが望ましい。その詳細については図6で説明する。編集コマンド入力部320は、ユーザに「編集モード」を指定させるドロップダウンリスト321を備える。ドロップダウンリスト321は、ユーザに「付け替え」、「追加」、「削除」のいずれかを選択させる。
【0060】
地形断面表示部330は、後述する落水線編集内容の指定処理(ステップ204)および落水線の編集指示を地形等の編集指示に変換(ステップ205)におけるユーザ操作を支援するためのGUIである。地形断面表示部330は、縦軸331および横軸332を備える。後述するとおり、この横軸に沿ってあるセルをある順番に従って並べ、それらの標高を縦軸に示す。さらに、地形断面表示部330は、ユーザに標高値を変更させるインターフェースを備える。このようにウィンドウ300は、少なくとも1以上の落水線を指定する機能を備える。
【0061】
また、ウィンドウ300の落水線表示部310に地図データ193を表示してもよい。これによって、ユーザが落水線を編集することが容易になる。この機能を実装するためには、ステップ201で落水線編集プログラム141が落水線データ192および地図データ193を読み込めばよい。
【0062】
本実施形態では、編集コマンド入力部320から「付け替え」、「追加」、「削除」のいずれかをユーザに選択させることでステップ203を実現する。
【0063】
第一に、ユーザが「付け替え」モードを選択した場合について図3から図8を参照して説明する。
【0064】
ユーザは、落水線表示部310において1つの落水線を選択する。図3は、落水線311が選択された直後の状態である。選択された落水線の終点にアイコン302が表示され、マウスポインタ301を動かすことでそのアイコンが動く。このアイコン302は、セル341(落水線311の始点セル)に隣接する8セルのうち、マウスポインタ301から最も近いセルの中心のみに表示される。ユーザがマウス112を左クリックすることで、落水線の終点をクリックしたセルに付け替えることができる。例えば、ユーザがセル342上にマウスポインタ301を置いて左クリックすると、画面は図4に遷移する。
【0065】
図4は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集を継続している状態(ステップ204)を示す第1の説明図である。
【0066】
図4のセル441および442は、それぞれ図3のセル341および342に相当する。
【0067】
図3の落水線311は図4の落水線411に付け替えられる。さらに、この落水線411の下流に位置する落水線412が太線表示されている。これらの落水線411および412に沿った地形断面、すなわちセル441から443の標高が、地形断面表示部430に示されている。落水線411から412が矢印431から432に、セル441から443が矩形451から453にそれぞれ対応している。
【0068】
この地形断面表示部430の左端のセル451の標高より右端セル453の標高の方が低い。この状態、すなわちユーザが指定を開始したセル(441)の標高より、そのセルの下流に位置するいずれかのセルの標高が低い状態において、ユーザはこの編集内容を確定すること、または編集を継続することのどちらかを選択できる。ユーザがセル444上にマウスポインタ401を置いて左クリックすると、ユーザが編集の継続を選択したと判定され、画面は図5に遷移する。
【0069】
図5は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集を継続している状態(ステップ204)を示す第2の説明図である。
【0070】
図5のセル541、542および543は、それぞれ図4のセル441、442および444に相当する。
【0071】
図4の落水線412は図5の落水線512に付け替えられる。図4同様、この落水線512の下流にある落水線513および514が太線表示されている。落水線511から514に沿った地形断面、すなわちセル541から545までの標高が、地形断面表示部530に示されている。落水線511から514が矢印531から534に、セル541から545が矩形551から555にそれぞれ対応している。
【0072】
この地形断面表示部530の左端のセル551の標高よりも右端セル555の標高の方が低い。やはりこの状態で、ユーザはこの編集内容を確定すること、または編集を継続することのどちらかを選択できる。ユーザがマウス112を操作(たとえば右クリック)すると、画面は図6に遷移する。
【0073】
図6は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集内容を確定している状態(ステップ204)を示す説明図である。
【0074】
ユーザがマウス112を右クリックすると、「確定」および「キャンセル」と書かれたコンテキストメニュー601が出現し、「確定」を選択することでユーザは編集内容を確定することができ、「キャンセル」を選択することでコンテキストメニュー601を非表示にすることができる。この状態でユーザが「確定」を選択すると、落水線編集プログラム141はステップ205に移行し、画面は図7に遷移する。
【0075】
図7は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける地形を編集している状態(ステップ205)を示す説明図である。
【0076】
図7のセル741から745は、それぞれ図5のセル541から545に相当する。
【0077】
GUIがこの状態に遷移すると、ユーザが編集コマンド入力部720の確定ボタン725、及び地形断面表示部730を操作することが可能になる。地形断面表示部730には実線の矩形(矩形751から755)および破線の矩形(矩形756から758)が描かれている。破線の矩形は図5および図6同様、セル742から744の標高を表す。実線の矩形は、地形断面表示部730の左端のセル751から右端セル755に向けて下り勾配になるように(すなわち、各落水線の終点のセルの標高が始点のセルの標高より低くなるように)自動的に算出された標高を表す。
【0078】
この自動的に算出された標高がユーザの意図と異なる場合、ユーザがそれを編集できる。ユーザが実線の矩形の上辺にマウスポインタを近づけると、マウスポインタが矢印型のアイコン701に変化し、矩形の上辺が変更可能であることを示す。また、セル751からセル755に向けて下り勾配であれば、確定ボタン725は操作可能な状態となっている。すなわち、ユーザが指定を開始したセル(741)から、ユーザが指定を確定したセル745にかけて全て下り勾配である場合にステップ205を完了することができる。
【0079】
この状態でユーザが確定ボタン725を操作(たとえば確定ボタン上にマウスポインタを置いてマウス112を操作)すると、落水線編集プログラム141はステップ205を完了させるとともにステップ206から208までを実行し、画面は図8に遷移する。
【0080】
図8は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集後の落水線を表示した状態(ステップ208)を示す説明図である。
【0081】
図8のセル842から844は、それぞれ図7のセル742から744に相当する。
【0082】
ステップ206(標高データの変更)によって、セル842から844までの標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。一方、これらのセルを始点とする落水線はステップ204でユーザが指定した通りに変更される。図8の例では、図7の落水線746から747が落水線846から847にそれぞれ自動的に付け替えられる。
【0083】
ユーザは落水線表示部810を参照して落水線が意図通りであることを確認し、データを保存するコマンドを必要に応じて発行する。これを受けた落水線編集プログラム141はステップ209から210を実行する。ステップ209(標高データ191の書き込み)およびステップ210(落水線データ192の書き込み)によって、編集作業の結果がHDD190に保存されることになる。
【0084】
なお、図7の地形編集処理において、始点(セル751)および終点(セル755)の標高の編集を省略することで、よりユーザの利便性を向上させることができる。ユーザがこれらのセルを選択したという事実から、ユーザは始点(セル751)より上流の落水線、および始点(セル755)より下流の落水線を正しいと判断したと解釈できるためである。
【0085】
第二に、ステップ203(編集モードの指定)においてユーザが「追加」モードを選択した場合について図9から図10を参照して説明する。
【0086】
図9は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、追加モードにおける地形を編集している状態(ステップ205)を示す説明図である。
【0087】
この図9は、落水線編集内容の指定処理(ステップ204)がなされた状態、すなわち図6に示したようなコンテキストメニュー601を通じて、落水線の編集内容がユーザによって確定された状態である。ステップ204においてユーザは、流域外のセルを始点とし、流域内のセルを終点とする落水線を指定する。図9では、ユーザによってセル941を始点とし、セル942を終点とする落水線911が指定されている。また、図4同様、この落水線911の下流にある落水線912が太線表示されている。
【0088】
落水線911から912に沿った地形断面、すなわちセル941から943までの標高が、地形断面表示部930に示されている。落水線911から912が矢印931から932に、セル941から943が矩形951から953にそれぞれ対応している。この地形断面表示部930の左端のセル951の標高よりも右端セル953の標高の方が低い。このようにステップ204は、ユーザが指定を開始したセル(941)の標高よりも、そのセルの下流に位置するいずれかのセルの標高が低い場合に完了させることができる。また、ステップ205は、ユーザが指定を開始したセル(941)から、ユーザが指定を確定したセル943にかけて全て下り勾配である場合に完了することができる。
【0089】
つづいてユーザが確定ボタン925を操作すると、落水線編集プログラム141はステップ206から208を実行し、画面は図10に遷移する。
【0090】
図10は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、追加モードにおける地形を編集後の落水線を表示した状態(ステップ208)を示す説明図である。
【0091】
ステップ206(標高データの変更)によって、セル1042の標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。図10の例では、落水線1011から1014が追加される。
【0092】
第三に、ステップ203(編集モードの指定)においてユーザが「削除」モードを選択した場合について図11から図12を参照して説明する。
【0093】
図11は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、削除モードにおける地形を編集している状態(ステップ205)を示す説明図である。
【0094】
図9同様、この図11は落水線編集内容の指定処理(ステップ204)がなされた状態、すなわち図6に示したようなコンテキストメニュー601を通じて、落水線の編集内容がユーザにより確定された状態を示す。ただし、「追加」モードとは逆に、この「削除」モードではステップ204においてユーザは流域内のセルを始点とし、流域外のセルを終点とする落水線を指定する。ここで、「流域内」とは流域界1162によって囲まれた流域の内側、[流域外]とはその流域の外側を意味する。流域界1162は、図3の流域界362に対応するが、流域界362は上記の「追加」モードの編集によって流域界1162に変更されている。
【0095】
図11では、ユーザによってセル1142を始点とし、セル1143を終点とする落水線1112が追加されている。図4同様、この落水線1112の下流にある落水線1113が太線表示されている。
【0096】
落水線1111から1113に沿った地形断面、すなわちセル1141から1144までの標高が、地形断面表示部1130に示されている。落水線1111から1113が矢印1131から1133に、セル1141から1144が矩形1151から1154にそれぞれ対応している。この地形断面表示部1130の左端のセル1151の標高よりも右端セル1154の標高の方が低い。
【0097】
なお、この図11におけるステップ204は以下の通り実行された。ユーザが指定を開始したセルは1141であり、このセルを始点とする落水線1111の終点として、ユーザは流域内のセル1142を指定した。この時点でステップ204を完了することは許可されない。この時点では、セル1141から流出した水が、ユーザによって指定された落水線を経由して、セル1141より標高の低い流域外のセルに流れ込むことができないためである。このため、落水線編集プログラム141はコンテキストメニュー601の「確定」メニューを出現させず、セル1142を始点とする落水線の終点を指定させる操作を受け付ける。
【0098】
つづいてユーザはセル1142を始点とする落水線の終点をセル1143に指定した。この段階で落水線1113が太線表示される。この落水線1113は、セル1143が指定された時点(すなわちセル1143の標高が編集される前の時点)における最急勾配方向を示す。落水線1113の終点セルであるセル1144の標高はセル1141の標高より低く、かつ、そのセル1144は流域外のセル(すなわち流域界1162の外側のセル)である。この場合、ユーザの指定に整合するように各セルの標高を変更することによって、セル1141を、流域界362が示す流域から削除することができる。このため、セル1143が指定された時点で、ステップ204を完了することが許可される。
【0099】
コンテキストメニュー601の「確定」メニューをユーザが選択すると、落水線編集プログラム141はステップ204を完了させる。つづいてユーザが確定ボタン1125を操作すると、落水線編集プログラム141はステップ206から208を実行し、画面は図12に遷移する。
【0100】
図12は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、削除モードにおける地形を編集後の落水線を表示した状態(ステップ208)を示す説明図である。
【0101】
図12のセル1241から1243は、それぞれ図11のセル1141から1143に相当する。また、図12の落水線1211から1213は、それぞれ図11の落水線1111から1113に相当する。
【0102】
ステップ206(標高データの変更)によって、セル1242から1243の標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。図12の例では、落水線1214が削除される。また、ユーザの指定した落水線1211から1213も流域から削除される。これに伴い流域界も図3の流域界362から図12の流域界1262のように変更される。
【0103】
図13は、本発明の第1の実施形態の落水線編集プログラム141の機能モジュール構成を示すパッケージ図である。
【0104】
落水線編集プログラム141は、ウィンドウ管理モジュール1310およびロジック管理モジュール1320の2つのモジュールから構成される。ウィンドウ管理モジュール1310には、ウィンドウ枠管理部1311、落水線表示部1312、編集コマンド入力部1313、および地形断面表示部1314が含まれる。一方、ロジック管理モジュール1320には、落水線編集部1321、落水線生成部1322、およびファイル入出力部1323が含まれる。
【0105】
図3に示した落水線編集プログラム141のGUIについて、ウィンドウ300はウィンドウ枠管理部1311が管理し、その内部の落水線表示部310、編集コマンド入力部320、および地形断面表示部330は落水線表示部1312、編集コマンド入力部1313、および地形断面表示部1314がそれぞれ管理する。また、図2に示した落水線編集プログラム141のシーケンスにおいて、落水線データ192の読み込み(ステップ201)、標高データ191の書き込み(ステップ209)、および落水線データ192の書き込み(ステップ210)は主にファイル入出力部1323が管理する。落水線編集指示の受け取り(ステップ204)、落水線編集指示を地形の編集指示に変換(ステップ205)、標高データの変更(ステップ206)は主に落水線編集部1321が管理する。落水線データの変更(ステップ207)は主に落水線生成部1322が管理する。落水線生成部1322としては、たとえば発明者らが特許文献4で開示した発明「流域推定プログラム」を使うことができる。
【0106】
図14は、本発明の第1の実施形態のセルのデータ構造を示す説明図である。
【0107】
図14の表1400にセル型のデータを示す。セル型(クラス名Cell)は、Glev、IsTheBasin、LowerDirection、およびInvalidDirectionsの4つのメンバ変数を持つクラスとする。Glevは浮動小数点型であり、標高を保持する。IsTheBasinはブール型であり、セルが流域内のセルであればtrueを、そうでなければfalseを保持する。LowerDirectionは列挙型であり、水が流れる方向(8種類)、またはそのセルから水が流れないことを示す合計9種類の値のいずれかを保持する。
【0108】
InvalidDirectionsはビットフィールドを表す列挙型である。InvalidDirectionsが保持できる値はLowerDirection同様、セルから水が流れる方向(8種類)、またはそのセルから水が流れないことを示す合計9種類であるが、LowerDirectionとは異なりこれら9種類がそれぞれtrueまたはfalseの値を保持する。
【0109】
流域界362は、IsTheBasinを参照し流域内のセルと流域外のセルとの境界に作成される。
【0110】
InvalidDirectionsは、無効な落水線の方向、すなわち、落水線の生成が禁止される方向を示す。たとえば、ユーザが作成した落水線を横切る方向の値がtrueとなる。これは、ユーザが作成した落水線を横切る方向が無効な方向であること、すなわちその方向の落水線の生成が禁止されることを意味する。同様に、ユーザがあるセルを始点とする落水線の方向を指定した場合、そのセルについて、指定された方向以外の方向のInvalidDirectionsの値はtrueになる。落水線生成部1322はステップ207においてこのInvalidDirectionsを参照し、その値trueに対応する方向の落水線を生成しないようにする。なお、このセル型のデータは拡張可能であり、他の変数を持たせてもよい。
【0111】
以下、これらの画面遷移を実現する処理シーケンス(図2)におけるステップ204、205の詳細を説明する。これら以外のステップの処理内容は、画面遷移から明らかであるため説明は割愛する。
【0112】
図15は、本発明の第1の実施形態の落水線編集内容の指定(ステップ204)の処理における、落水線編集プログラム141とハードウェア資源との相互作用の詳細を示すシーケンス図である。
【0113】
ステップ204において落水線編集プログラム141はユーザからの開始セル(すなわち対象とする落水線の始点セル)の指定を受け付ける(ステップ1501)。ユーザは入出力部110を通じ開始セルを指定する(ステップ1502)。この際、ステップ203で指定した編集モードが「付け替え」および「削除」の場合、流域内にあるセルのみ指定可能にする。一方「追加」の場合、流域外にあるセルのみ指定可能にする。
【0114】
つづいて落水線編集プログラム141は通過セルの指定を受け付ける(ステップ1503)。通過セルとは、開始セルを始点とする落水線の、終点となるセルである。図3の画面状態は、このステップ1502に該当する。
【0115】
ユーザは入出力部110を通じ通過セルを指定する(ステップ1504)。このようにして入力された落水線は、「地形編集指示に変換可能」、「地形編集指示に変換不可能」、および「不正」の3種類に判別される。これらの判別方法は後述する図16を用いて説明する。
【0116】
入力された落水線が「不正」であると判定された場合、入力値は拒絶され、ステップ1503に戻る。それ以外の場合、落水線編集プログラム141は落水線編集指示を地形編集指示へ変換する(ステップ1505)。このステップ1505において標高データ191が読み込まれる(ステップ1506)。また、ステップ1505の処理結果が入出力部110に地形断面図として表示される(ステップ1507)。
【0117】
落水線編集プログラム141は、「地形編集指示に変換可能」な場合は確定指示またはさらなる通過セルの指定を受け付け、「地形編集指示に変換不可能」の場合はさらなる通過セルの指定を受け付ける(ステップ1508)。図4および5の画面状態は、このステップ1508に該当する。
【0118】
ユーザは入出力部110を通じ確定指示または通過セルを指定する(ステップ1509)。図6の画面は、このステップ1509において確定指示を入力している状態である。
【0119】
ユーザが入出力部110を通じ通過セルを指定した場合、ステップ1505に戻る(ステップ1510)。確定指示の場合はステップ204を終了する。
【0120】
図16は、本発明の第1の実施形態における落水線編集内容の指定(ステップ204)の処理のアルゴリズムを示すフローチャートである。
【0121】
図15と図16との関係は以下の通りである; ステップ1501がステップ1601に、ステップ1503がステップ1602−1603に、ステップ1505−1506がステップ1604−1610に、ステップ1508がステップ1611−1612に対応する。
【0122】
落水線編集プログラム141はユーザからの開始セルの指定を受け付ける(ステップ1601)。落水線編集プログラム141は、ユーザからの入力を受け付ける関数WaitUserInputを呼び出し、ユーザから入力された値をtheCellに格納する。そして、落水線編集プログラム141は、この値theCellは要素のない空のセル配列Cellsの最初の要素として追加する(ステップ1602)。
【0123】
ただし、編集モードが「付け替え」かつtheCellが流域外にある場合、または編集モードが「追加」かつtheCellが流域内にある場合、または編集モードが「削除」かつtheCellが流域外にある場合、落水線編集プログラム141はユーザからの入力を拒絶しステップ1601に戻る。
【0124】
つづいて落水線編集プログラム141は、ユーザからの通過セルの指定を受け付け(ステップ1603)、ユーザから入力された値をtheCellに格納する。このことは、セル配列Cellsの最後の要素とtheCellとを結ぶ方向の落水線(たとえば、ステップ1601において図4のセル441が指定され、ステップ1603においてセル442が指定された場合、落水線411)がユーザによって指定されたことを意味する。
【0125】
ただし、落水線編集プログラム141は、入力された落水線が不正なものであるか否かを判定し、不正なものである場合はユーザから入力された値をtheCellに格納しない。具体的には、次の場合、落水線編集プログラム141はユーザが指定した落水線を「不正」な落水線と判定してユーザからの入力を拒絶する(ステップ1604);(1)theCellの値がすでにセル配列Cellsに格納されている場合、または(2)新たな落水線が既存のユーザ指定の落水線を交差する場合。
【0126】
なお、theCellの値がすでにセル配列Cellsに格納されていることは、入力された新たな落水線と既に入力されている落水線とがループを形成することを意味する。すなわち、図23に記載された落水線がすべてユーザ指定の落水線であると仮定した場合、図23(a)は上記(1)の場合に、図23(b)は上記(2)の場合に該当する。
【0127】
ユーザが指定した落水線が「不正」な落水線でない場合、ユーザが指定した落水線は、「地形編集指示に変換可能」な落水線または「地形編集指示に変換不可能」な落水線のいずれかである。この場合、落水線編集プログラム141はユーザから入力された値theCellをセル配列Cellsに追加する(ステップ1605)。この際、落水線編集プログラム141は、セル配列Cellsの追加前の最後の要素(変数cellとする)のInvalidDirectionsに、cellとtheCellとを結ぶ方向(すなわちユーザが指定した落水線の方向)をのぞく7方向を設定する。さらに、落水線編集プログラム141は、cellに隣接するセルのInvalidDirectionsに、cellとtheCellとを結ぶ方向と交差する方向を設定する。
【0128】
なお、このように設定されたInvalidDirectionsは、ステップ207において、落水線生成部1322によって参照される。落水線生成部1322は、ステップ207において、たとえば特許文献4に開示されたように、最急勾配法によって落水線を生成する。このとき、落水線生成部1322は、各セルのInvalidDirectionsを参照して、無効な方向以外の方向のうち最急勾配の方向の落水線を生成する。これによって、ユーザが指定した落水線がステップ207において確実に生成され、さらに、ユーザが指定した落水線と交差する落水線の生成が禁止される。
【0129】
つづいて落水線編集プログラム141は、セル配列Cellsの最後の要素、すなわちtheCellの下流のセルを変数cellに代入する(ステップ1606)。このtheCellの下流セルとは、theCellを始点とする落水線の終点セルのことであり、theCellとこの下流セルとは隣接する。たとえばtheCellが図4のセル442とすると、下流セルはセル443である。この下流セルは、たとえば最急勾配法によって定められる。ただし、既にtheCellについて無効な方向(InvalidDirections)が定められている場合、その無効方向を除く方向のうち最急勾配の方向の落水線が定められる。後述するステップ1607も同様である。
【0130】
落水線の始点が流域外である場合、下流セルが落水線データ192に存在しない。この場合、落水線編集プログラム141は地形データ191から下流セルを求めてもよいし、変数cellにtheCellを代入しステップ1610に進んでもよい。
【0131】
このステップ1606の終了後、落水線編集プログラム141は、セル配列LowerCellsを初期化(すなわちセル配列LowerCellsに含まれる全要素を削除)しておく。つづいて落水線編集プログラム141は、ステップ1606で探索した下流セルをセル配列LowerCellsに追加する(ステップ1608)。
【0132】
つづいて、落水線編集プログラム141は、ステップ1608で追加された下流セルに至る落水線が「地形編集指示に変換不可能」であるか否かを判定する(ステップ1609)。具体的には、セル配列LowerCellsに変数cellが含まれている場合、ユーザに指定された落水線及びその下流の落水線がループを形成する(図23(a)参照)。このような場合、および、ステップ1608で追加された下流セルに至る落水線が、既にユーザに指定された落水線またはその下流の落水線と交差する場合(図23(b)参照)、ユーザからの入力は「地形編集指示に変換不可能」である。この場合はステップ1603に戻り、落水線編集プログラム141はユーザからのさらなる通過セルの入力を受け付ける。
【0133】
このセル配列LowerCellsに変数cellが含まれていない場合(ステップ1609)、かつ開始セルの標高よりも変数cellの標高が低い場合(ステップ1610)、ユーザからの入力は「地形編集指示に変換可能」である。この場合、落水線編集プログラム141の処理はステップ1611に進む。一方、開始セルの標高よりも変数cellの標高が低くない場合は、ユーザからの入力が「地形編集指示に変換可能」であるか「地形編集指示に変換不可能」であるかを判定できないため、落水線編集プログラム141は変数cellの下流セルを探索し、探索された下流セルを変数cellに格納した(ステップ1607)のち、再びステップ1608を実行する。
【0134】
図7の例では、セル741がユーザによって指定された開始セル、セル742および743がユーザによって指定された通過セル、セル744および745が探索された下流セルである。開始セルから通過セルに至る落水線、および、通過セルから通過セルに至る落水線がユーザ指定の落水線である。
【0135】
なお、図7の例では、ユーザによって指定された末尾の落水線の終点であるセル743の標高が、先頭の落水線の始点であるセル741の標高より高いため、入力された指示が地形編集指示に変換可能であるか否かを判定するために、セル743の下流を探索する必要があった。しかし、仮に図7の例においてセル744および745もユーザによって通過セルとして指定された場合、セル745の標高がセル741の標高より低いため、セル745の下流の落水線が既に指定されたセルに戻る(すなわちループが形成される)または既に指定された落水線と交差する可能性がいずれもない。このため、セル745の下流セルを探索する必要はない。
【0136】
ただし、ステップ1607において変数cellが流域外であるためにそれの下流セルが存在しない場合には、落水線編集プログラム141は地形データ191から下流セルを求めてもよいし、ステップ1603に進んでもよい。
【0137】
ユーザからの入力が「地形編集指示に変換可能」である場合、落水線編集プログラム141はユーザからのさらなる通過セルの入力、または確定指示を受け付け、ユーザの入力を変数theCellに格納する(ステップ1611)。変数theCellがさらなる通過セルの入力である場合はステップ1603に戻り、変数theCellが確定指示である場合はステップ204を終了する(ステップ1612)。
【0138】
図17は、本発明の第1の実施形態の地形編集内容の指定(ステップ205)の処理における、落水線編集プログラム141とハードウェア資源との相互作用の詳細を示すシーケンス図である。
【0139】
落水線編集プログラム141は、セル標高を仮に決める(ステップ1701)。仮決めの方法は後述する図18を用いて説明する。
【0140】
落水線編集プログラム141は、ステップ1701における仮決めの結果を地形断面図として入出力部110に表示し(ステップ1702)、ユーザからの確定指示または標高の指定を受け付ける(ステップ1703)。図7、図9、および図11の画面状態は、このステップ1703に該当する。
【0141】
ユーザは、入出力部110を通じ確定指示または標高の指定を行う(ステップ1704)。ユーザが標高の指定を行った場合(ステップ1705)ステップ1703に戻り(ステップ1706)、確定指示の場合ステップ205を終了する。
【0142】
図18は、本発明の第1の実施形態の地形編集内容の指定(ステップ205)の処理のアルゴリズムを示すフローチャートである。
【0143】
図17と図18との関係は以下の通りである; ステップ1701がステップ1801−1804に、ステップ1703がステップ1805に、ステップ1705がステップ1806に、ステップ1706がステップ1807−1808に対応する。
【0144】
落水線編集プログラム141は、図16のステップ1608で作成したセル配列LowerCellsをセル配列Cellsに追加する(ステップ1801)。
【0145】
つづいて、落水線編集プログラム141は、これらのセルの平均勾配AveSlopeを算出する(ステップ1802)。このAveSlopeの値はセル配列Cellsの最初の要素(図7の例では、セル751)の標高Cells.Front.Glevと最後の要素(図7の例では、セル755)の標高Cells.Last.Glevとの差を、落水線の長さの合計値で割ることによって求める。
【0146】
つづいて、落水線編集プログラム141は、このAveSlopeを用いてセル標高の仮の値を求める(ステップ1803)。セル配列Cellsのi番目のセルの標高Cells[i].Glevの仮の値はAveSlope * Distance(Cells[i-1], Cells[i]) + Cells[i-1].Glevとする。ただし、Distance(cell0, cell1)はcell0とcell1の間の距離を返す関数である。また、最初の要素(Cells[0]、すなわちCells.Front)および最後の要素(Cells.Last)については、標高の仮の値を求めない。これによって、最初の要素から最後の要素に至るまでに落水線が通過する隣接セル間の勾配が一定になる。図7の例では、セル751から755に至る各落水線の方向が下り勾配方向に一致するように、セル752から754までの標高が変更され、かつ、それらの勾配が一定になる。
【0147】
なお、この標高の仮の値は、セル配列Cellsの全要素間が下り勾配となる限り、別の方法によって求めてもよい。したがって、ユーザによって指定された全ての落水線が、最急勾配方向とは一致しないとしても、下り勾配方向とは一致する場合、セルの標高値を変更しなくてもよい(すなわち、ステップ205および206を省略してもよい)。
【0148】
つづいて、落水線編集プログラム141は、セル配列Cellsの全要素間が下り勾配であることを示すフラグIsValidUserChannelをtrueにする(ステップ1804)。これによって、標高の仮の値を、各セルの標高として確定することが可能になる。すなわち、フラグIsValidUserChannelがtrueになると、確定ボタン(たとえば図7の確定ボタン725)が表示され、それに対するユーザの操作を受け付けることが可能になる。
【0149】
つづいて、落水線編集プログラム141は、標高の仮の値を入出力部110に表示しユーザからの指示を受け付ける(ステップ1805)。落水線編集プログラム141は、フラグIsValidUserChannelがtrueである場合は標高の変更または確定の指示を受け付け、フラグIsValidUserChannelがfalseである場合は標高の変更を受け付ける。ユーザの指示は変数Commandに格納される。
【0150】
変数Commandが標高の変更の指示である場合(ステップ1806)、落水線編集プログラム141は、その指示を標高に反映し、セル配列Cellsの全要素間の勾配を計算する(ステップ1807)。落水線編集プログラム141は、すべての要素間の勾配が下り勾配の場合、フラグValidUserChannelをtrueにする。一方、いずれかの要素間の勾配が下り勾配でない(すなわち上り勾配である)場合、落水線編集プログラム141は、フラグValidUserChannelをfalseにして、ステップ1805に戻る(ステップ1808)。ステップ1806において変数Commandが標高の変更の指示である場合(すなわち確定ボタンが操作された場合)、ステップ205を終了する。
【0151】
上記のように標高を編集することによって、ユーザが指定した落水線の方向は必ず下り勾配方向と一致する。しかし、ユーザが指定した落水線が最急勾配の方向と一致するとは限らない。したがって、ステップ206において標高データが変更された後のステップ207の落水線生成を、落水線の方向を制限することなく行えば、ユーザが指定した落水線が生成されない可能性がある。このため、本実施形態では既に説明したように、ユーザが指定したセルに関して、ユーザが指定した方向以外の方向が無効な方向として登録され、落水線生成部1322は無効な方向の落水線を生成しない。これによって、ユーザが指定した落水線がステップ207の落水線生成の後も維持される。しかし、このことは、本実施形態において図23(c)のような落水線の生成が許容されることをも意味する。
【0152】
しかしながら、本実施形態では、既に説明したように図23(a)および(b)のような落水線の生成は確実に防止され、さらに、上り勾配方向の落水線も生成されない。このため、本実施形態によって生成された落水線は、水文学上の種々の処理、たとえば流域面積の算出などに支障なく使用することができる。
【0153】
以上のように、本発明の第1の実施形態によれば、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供することができる。これによって、実際の水路の形状等、ユーザの知見を反映した落水線を短時間で生成し、水文学に使用することができる。
【0154】
<第2の実施形態>
以下、本発明の第2の実施形態を添付図面に基づいて説明する。本発明の実施の形態におけるコンピュータシステムの構成を示す概略ブロック図(図1)、および、PC100によって実行される落水線編集プログラム141とハードウェア資源との相互作用を示すシーケンス図(図2)は、第1の実施形態において説明したものと同じである。ただし、ステップ203、204および205の処理の詳細が異なる。これらの差異について言及しながら、ステップ201からステップ208について図19から図22を参照して説明する。
【0155】
図19は、本発明の第2の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集中の状態(ステップ204)を示す説明図である。
【0156】
図19に示すウィンドウ1900は、図3に示したウィンドウ300と類似の機能を提供する。ただしウィンドウ300の落水線表示部310ではすべての落水線を表示していたのに対し、ウィンドウ1900の落水線表示部1910にはあらかじめ設定した値以上の流域面積を持つセルの落水線(たとえば落水線1921)、および流域界1922が表示される。一般に流域面積が大きいセルの落水線ほど重要なため、このようにすることで重要な落水線のみを編集対象とすることができる。また、ウィンドウ300で提供された編集コマンド入力部320および地形断面表示部330が、ウィンドウ1900では提供されない。本実施例においては、落水線の編集として「付け替え」のみが使用される。また、ユーザからの地形編集指示は受け付けず、ステップ1803で算出される仮の標高を常に採用する。したがって、編集コマンド入力部320を使用するステップ203、および地形断面表示部330を使用するステップ205は、ユーザに問い合わせを行うことなく処理される。
【0157】
このウィンドウ1900は、落水線編集プログラム141がHDD190から落水線データ192を読み出した(ステップ201)後に、ディスプレイ113に出力される(ステップ202)。編集モードは常に「付け替え」である(ステップ203)。このウィンドウ1900を使って、ユーザは落水線を編集する(ステップ204)。なお、ユーザによる編集が開始される前の時点において、ウィンドウ1900には太い実線で示す落水線1911及びその両端のアイコン1912、1913は表示されていない。
【0158】
まず、落水線編集プログラム141は、流域内の任意の1セルを開始セル(ユーザの入力した落水線の始点)としてユーザに指定させ、開始セルの中心にアイコン1912を表示する。つづいて、落水線編集プログラム141は、流域内にあり、かつ開始セルよりも標高が低い任意の1セルを終了セル(すなわちユーザの入力した落水線の終点)としてユーザに指定させる。終了セルを指定すると、終了セルの中心にアイコン1913が表示され、さらに開始セルと終了セルとを結ぶ線分が通過するセルに落水線1911が表示される。
【0159】
この状態で、ユーザはこの落水線1911を確定すること、または落水線1911が通過するセルを変更することができる。前者の場合、ユーザは確定ボタン1931を操作する。後者の場合、ユーザはポリライン編集に必要な一般的な機能を使って落水線1911を編集する。ただし、ポリライン編集において制御点はセル上にのみ限定される。
【0160】
たとえば生成された落水線1911の形状を変更したい場合、マウス112を用いて落水線1911を構成する1セルをクリックする。するとクリックしたセルの位置にポリラインの制御点が追加され、かつマウスカーソルがマウスカーソル1901のように変化し、制御点が移動可能なことを表示する。ユーザはこの制御点を別のセルに移動させることができる。ユーザが確定ボタン1931を操作すると、ステップ204が終了する。
【0161】
つづいて、落水線の編集指示を地形等の編集指示に変換(ステップ205)、標高データの変更(ステップ206)および落水線データの変更(ステップ207)が実行される。この処理において、落水線生成部1322が対象とすべきセルはステップ201で読み込んだ時点における落水線データ192に示された流域内のみであり、流域外は対象外にできる。なぜならば、「付け替え」において流域界は変更しないためである。
【0162】
これらの処理によって、落水線は変更される。変更された落水線は落水線表示部1910に表示される(ステップ208)。図19の落水線は図21の落水線のように変更される。ユーザの指定した落水線(落水線1911および2111)は、そのユーザの指定のとおりに作成される。一方、その周囲の落水線も標高データの変更により影響を受けることによって形状が変更される。たとえば図19の落水線1921は、図21の落水線2121のように変更される。
【0163】
なお、ウィンドウ1900は、編集コマンド入力部320、および地形断面表示部330を提供することも可能である。その場合、編集コマンド入力部320、および地形断面表示部330の操作方法は実施例1と同様となる。
【0164】
編集モードが「追加」の場合、ウィンドウ1900において、流域外の任意の1セルが開始セルとして指定され、流域内にあり、かつ開始セルよりも標高が低い任意の1セルが終了セルとして指定される。
【0165】
編集モードが「削除」の場合、ウィンドウ1900において、流域内の任意の1セルが開始セルとして指定され、流域外にあり、かつ開始セルよりも標高が低い任意の1セルが終了セルとして指定される。
【0166】
第1の実施形態と同様に、「追加」「削除」どちらの編集モードでも、ステップ204以外の処理は「付け替え」の場合と同じである。
【0167】
図20は、本発明の第2の実施形態における落水線編集内容の指定(ステップ204)の処理のアルゴリズムを示すフローチャートである。
【0168】
まず、落水線編集プログラム141は、ユーザによる開始セルの指定を受け付ける(ステップ2001)。落水線編集プログラム141は、ユーザからの入力を受け付ける関数WaitUserInputを呼び出し、ユーザから入力された値をtheCellに格納する。この値theCellは要素のない空のセル配列Cellsの最初の要素として追加される(ステップ2002)。ただし、theCellが流域外にある場合、ユーザからの入力を拒絶しステップ2001に戻る。
【0169】
つづいて落水線編集プログラム141は、ユーザからの終了セルの指定を受け付け(ステップ2003)、ユーザから入力された値をtheCellに格納する。ただし、theCellが流域外にある場合、またはtheCellの標高が開始セルCells.First.Glevの標高以上の場合、落水線編集プログラム141は、ユーザからの入力を「不正」または「地形編集指示に変換不可能」な落水線として拒絶する(ステップ2004)。この場合、落水線編集プログラム141はステップ2003に戻り、再びユーザからの終了セルの指定を受け付ける。
【0170】
theCellが流域内にあり、かつ、theCellの標高が開始セルCells.First.Glevの標高より低い場合、落水線編集プログラム141は、ユーザからの入力を「地形編集指示に変換可能」であると判定し、ユーザから入力された値theCellをセル配列CtrlCellsに追加する(ステップ2005)。
【0171】
つづいて落水線編集プログラム141は、セル配列CtrlCellsの全要素を順に結ぶ線分をセル配列に変換する(ステップ2006)。変換方法としては、ブレゼンハム法(Bresenham’s line algorithm)など、線分をセルに変換する一般的な方法を用いればよい。このようにして最初の要素が開始セル、最後の要素が終了セルとなるセル配列Cellsが作成される。
【0172】
つづいて落水線編集プログラム141は、作成したセル配列上に落水線を表示し、ユーザからの通過セルの指定を受け付け、ユーザの入力を変数theCellに格納する(ステップ2007)。変数theCellが確定指示、すなわち確定ボタン1931の操作である場合、落水線編集プログラム141はこのステップ204を終了する(ステップ2008)。
【0173】
変数theCellが通過セルの指定である場合には、落水線編集プログラム141は、ユーザ指定の落水線がループを描く、またはユーザ指定の落水線同士が交差するという条件が真であるかを判別する(ステップ2009)。ユーザ指定の落水線がループを描くか否かは、図18のステップ1807と同様の方法で判定されてもよい。ステップ2009の条件が偽である場合(すなわち、ユーザ指定の落水線がループを描かず、かつ、ユーザ指定の落水線同士が交差しない場合)には、落水線編集プログラム141はそのセルをセル配列CtrlCellに挿入し(ステップ2010)、ステップ2006に戻る。条件が真である場合にはそのセルを破棄してステップ2006に戻る。
【0174】
本実施例における落水線の追加および削除の処理は、流域界の追加または削除の処理の後、落水線の付け替え処理を行うことで実現する。
【0175】
図21は、本発明の第2の実施形態における落水線編集プログラム141が提供するGUIの、流域外の一部領域を流域として追加する場合における編集中の状態を示す説明図である。
【0176】
図21に示すGUIは、流域界を示す線分2122を、マウスカーソル2101を用いて流域外に拡張する機能を提供する。線分2123は、このようにして拡張された新たな流域界である。
【0177】
図22は、本発明の第2の実施形態における落水線編集プログラム141が提供するGUIの、流域の一部領域を流域外として削除する場合における編集中の状態を示す説明図である。
【0178】
図21と同様に、図22に示すGUIは、流域界を示す線分2222を、マウスカーソル2201を用いて流域内に縮小する機能を提供する。線分2223は、このようにして縮小された新たな流域界である。
【0179】
図21および図22に示した操作によって流域界を示す線分を移動させたのちに、ユーザが確定ボタン2231を操作すると、落水線編集プログラム141は、新たな流域界に接するセルについて、新たな流域界を横切る方向を「無効な方向」に設定する(すなわち、そのような「無効な方向」を示す値をInvalidDirectionsに追加する)。また、消去された流域界に接するセルについて、消去された流域界を横切る方向について、「無効な方向」の設定を解除する(すなわち、そのような「無効な方向」を示す値をInvalidDirectionsから削除する)。
【0180】
その後、このセルデータに基づき落水線データの変更(ステップ207)が実行される。なお、落水線データの変更(ステップ207)の処理において、この流域界の横切る落水線を生成させないようにする。このようにして流域界を変更した後、必要に応じユーザは、図19を用いて説明した落水線付け替えの操作によって、流域内の落水線を編集する。
【0181】
以上の本発明の第2の実施形態によれば、比較的簡便なユーザインターフェースを用いて、第1の実施形態と同様の落水線の編集をすることが可能になる。
【産業上の利用可能性】
【0182】
以上述べたとおり、本発明によればユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するプログラムコンピュータプログラムが提供できる。このプログラムによって、地図に示された水路と落水線とで両者の位置および形状が異なる箇所をユーザが発見した場合、ユーザ自身が落水線を地図に示された水路に合うように編集することができるようになる。
【符号の説明】
【0183】
100 PC
141 落水線編集プログラム
191 標高データ
192 落水線データ
1911 ユーザの入力した落水線
1912 開始セル(ユーザの入力した落水線の始点)
1913 終了セル(セルユーザの入力した落水線の終点)
1921 落水線データ192に基づく、閾値以上の流域面積を持つ落水線
2111 ユーザの入力情報に基づいて生成された新たな落水線
【技術分野】
【0001】
本発明は、コンピュータを使って流域情報を編集する方法に関する。本発明は特に、数値地形モデル(digital elevation mode, DEM)に基づいてコンピュータプログラムによって作成した落水線を編集する方法に関する。
【背景技術】
【0002】
落水線(channel network)は、水文学の基本的なデータの一種である。落水線は地表面の水が流れる方向を示す有向線分である。より正確には、水文学の対象とする時空間スケールにおける表流水の流向を示すデータであり、地図では有向線分として表現されることが多い。落水線を用いれば、流域を容易に求めることができる。ある地点の流域を求めるには、その地点から落水線を逆に(すなわち上流方向に)たどればよい。また、分布型流出モデル(流域における水の流れを再現する物理モデル)に必要な流向と勾配は、落水線に沿った地表面標高の勾配として容易に算出できる。このように落水線は水文学の調査研究において、広く使われるデータである。
【0003】
落水線は、コンピュータプログラム(落水線作成プログラム)によって作成されることが多い。落水線作成プログラムの入力データは地表面の標高データである。これは、水文学的な時空間スケールにおいて、水の流向は地表面の最も急な下り勾配方向(最急勾配方向)と一致するという経験的知識を利用するためである。主要な落水線作成プログラムの比較、およびそれらの処理手順は、非特許文献1に詳しい。
【0004】
落水線の表現方法は一意ではない。たとえば、落水線の方向、すなわち地表面の最急勾配方向を0以上360未満の角度で表す方法(非特許文献1)が考えられる。しかし、現在最も広く使われている方法(D8 Methodと呼ばれる)はそれとは異なり、落水線の方向が8方向のみで表現される(非特許文献2、非特許文献3)。D8 methodでは、セル(cell)と呼ばれる矩形の小領域の集合で地表面を表現する。この実装では、入力データとして利用する地表面の標高データが、DEM(Digital Elevation Model)と呼ばれる表現形式をとる。DEMでは、セルごとに与えた標高値によって地表面の標高が表現される。また、あるセルを始点とする落水線は、1本かつ終点が隣接するセルとなるものに限定される。隣接するセルは8個あるので、この限定によって落水線は8方向のみとなる。このようにして作成された落水線が、水文学の調査研究で利用されている。たとえば特許文献1に開示された「全国合成レーダ雨量を用いた分布型流出予測システム」、特許文献2に開示された「洪水予測システム」が挙げられる。さらには、インターネットを介したクライアント・サーバシステムで流域分割を行う方法が提案されている(非特許文献4)。また、D8 methodと類似の方法によって8方向のみの落水線を生成する方法が特許文献3の「地下標高モデル作成方法、排水処理領域分割方法、排水処理能力評価方法および装置」に開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2009−8651号公報
【特許文献2】特開2007−11582号公報
【特許文献3】特開2007−204932号公報
【特許文献4】特開2009−163621号公報
【非特許文献】
【0006】
【非特許文献1】Tarboton, D. G.: A New Method for the Determination of Flow Directions and Upslope Areas in Grid Digital Elevation Models, Water Resources Research, Vol. 33, No. 2, pp. 309-319, 1997.
【非特許文献2】O'Callaghan, J. F., and D. M. Mark: The extraction of drainage networks from digital elevation data, Computer Vision, Graphics, and Image Processing, Vol. 28, No. 3, pp. 323-344, 1984.
【非特許文献3】Jenson, S. K., and J. O. Domingue: Extracting topographic structure from digital elevation data for geographic information system analysis, Photogrammetric Engineering & Remote Sensing, Vol. 54, No. 11, pp. 1593-1600, 1988.
【非特許文献4】Choi, J. Y., and B. A. Engel: Real-Time watershed delineation system using Web-GIS, Journal of Computing in Civil Engineering, Vol. 17, No. 3, pp. 189-196, DOI: 10.1061/(ASCE)0887-3801(2003)17:3(189), 2003.
【非特許文献5】Kobayashi, K., K. Takara, Y. Tachikawa and T. Sayama, Analysis of the Yuragawa River Flood by Typhoon No. 23 in October 2004 using a distributed rainfall-runoff model, 京都大学防災研究所年報, No. 49 C, 2006.
【非特許文献6】Yamazaki, D., T. Oki, and S. Kanae, Deriving a global river network map and its sub-grid topographic characteristics from a fine-resolution flow direction map, Hydrology and Earth System Sciences, Vol. 13, Issue 11, pp. 2241-2251, 2009.
【非特許文献7】Freeman, T. G.: Calculating catchment area with divergent flow based on a regular grid, Computers & Geosciences, Vol. 17, Issue 3, pp. 413-422, DOI: 10.1016/0098-3004(91)90048-I, 1991.
【非特許文献8】Quinn, P., K. Beven, P. Chevallier, and O. Planchon: The prediction of hillslope flow paths for distributed hydrological modelling using digital terrain models, Hydrological Processes, Vol. 5, Issue 1, pp. 59-79, DOI: 10.1002/hyp.3360050106, 1991.
【非特許文献9】Shrestha, R., Y. Tachikawa and K. Takara: A new method to define flow direction using grid digital elevation models, Annual Journal of Hydraulic Engineering, JSCE, Vol. 47, pp. 241-246, 2003.
【発明の概要】
【発明が解決しようとする課題】
【0007】
落水線作成プログラムによって作成された落水線が、実際に水が流れる方向とは異なることがある。このような問題は、発明者らがすでに開示した発明「流域推定プログラム」(特許文献4の図6)のように、地図と落水線とを重ねて表示することで顕在化する。一般に地図には水路が示されており、これと落水線とを重ねて表示すると、両者の位置および形状の差異が明確になる。一方で発明者らは、これらの問題はごく限定された地域のみに発生すると考えたため、ごく限定されたセルのデータを専門家が直に編集すればよいと考えていた。実際に、特許文献1では「メッシュに分割された流域について、数値地図(1kmメッシュ平均標高、KS−273:流域界位置、KS−272:流路位置)に基づき落水線図を作成し、さらに目視よる修正を加える。」と記述されており、このような考え方が一般的であることが推測される。
【0008】
ところが実際には、その編集作業がきわめて困難で生産性が低いことがわかった。落水線は水文学的な時空間スケールにおける表流水の流向という、物理的意味を持ったデータである。一方、人間が落水線を任意に編集すると、この物理的意味と矛盾する不正な落水線が生成されうる。不正な落水線の例を図23に示す(図23は不正な落水線の例を示す説明図である)。
【0009】
図23(a)において、セル2301から落水線の方向に進むと、もとのセル2301に戻る。すなわち、セル2301に流れ下った水は、それ以後位置エネルギーを永遠に失わず永遠に流れ下り続ける。ポンプ等の人工設備を使わない限り、このような流れを実現できない。
【0010】
別の例を図23(b)に示す。この例では、セル2311、2314、2313、2312の順に水が流れる。セル2311から出る落水線とセル2313から出る落水線が交差している。落水線の交差部分に立体交差を実現するサイフォンなどの人工設備を使わない限り、このような流れを実現できない。
【0011】
さらに別の例を図23(c)に示す。この図23(c)では、地表面の標高はセル2321が最大で降順にセル2321、2322、2323、2324であり、落水線がセル2321、2322、2323、2324の順に通過している。この落水線は下り方向に流れているため、一見正しいように思える。しかしこの落水線は、地表面の最急勾配方向と一致していないため不正である。
【0012】
この地形において正しい落水線を図23(d)に示す。セル2331、2332、2333が、それぞれ2334と落水線で直接結ばれている。すなわち、セル2331、2332及び2333から流出した水がセル2334に直接流れ込む。
【0013】
水文学では1000万本程度の落水線からなる領域を対象とすることもある。たとえば、落水線作成プログラムにより作成された落水線のわずか0.01%を修正するとしても1000本の落水線を編集することになる。このような不正な落水線を1本も発生させることなく落水線を編集することは事実上不可能であり、仮に可能であってもきわめて生産性が低い作業である。
【0014】
作成された落水線は、水文学上の種々の処理、たとえばある地点の上流を特定する処理、流域面積を求める処理、または平均勾配を求める処理などに使用される。しかし、編集された落水線に上記のような不正が存在することによって、上記のような処理に支障が生じる場合がある。たとえば、図23(a)のように循環する落水線を用いた場合、上流を特定する処理が正常に終了しないといった問題が発生する。
【0015】
本発明はこの問題に鑑みてなされたものである。本発明の目的は、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供することである。
【課題を解決するための手段】
【0016】
本願で開示する代表的な発明の概要は以下の通りである。すなわち、コンピュータを制御する落水線編集プログラムであって、前記コンピュータは、前記落水線編集プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、前記落水線編集プログラムは、前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受ける第1手順と、前記指定された落水線が不正であるか否かを判定する第2手順と、前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第3手順と、前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第4手順と、を前記プロセッサに実行させ、前記第2手順において、前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記第3手順および前記第4手順の前に、前記指定されたセルについて、前記第1手順を再び前記プロセッサに実行させることを特徴とする。
【発明の効果】
【0017】
本発明の一実施形態によれば、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供できる。このプログラムによって、ユーザの知見を反映した落水線を短時間で生成し水文学に使用できるようになる。
【図面の簡単な説明】
【0018】
【図1】本発明の実施形態におけるコンピュータシステムの構成を示す概略ブロック図である。
【図2】本発明の実施形態における落水線編集プログラムとハードウェア資源との相互作用を示すシーケンス図である。
【図3】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集を開始した状態を示す説明図である。
【図4】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集を開始した状態を示す第1の説明図である。
【図5】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集を継続している状態を示す第2の説明図である。
【図6】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集内容を確定している状態を示す説明図である。
【図7】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける地形を編集している状態を示す説明図である。
【図8】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集後の落水線を表示した状態を示す説明図である。
【図9】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、追加モードにおける地形を編集している状態を示す説明図である。
【図10】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、追加モードにおける地形を編集後の落水線を表示した状態を示す説明図である。
【図11】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、削除モードにおける地形を編集している状態を示す説明図である。
【図12】本発明の第1の実施形態における落水線編集プログラムが提供するGUIの、削除モードにおける地形を編集後の落水線を表示した状態を示す説明図である。
【図13】本発明の第1の実施形態の落水線編集プログラムの機能モジュール構成を示すパッケージ図である。
【図14】本発明の第1の実施形態のセルのデータ構造を示す説明図である。
【図15】本発明の第1の実施形態の落水線編集内容の指定の処理における、落水線編集プログラムとハードウェア資源との相互作用の詳細を示すシーケンス図である。
【図16】本発明の第1の実施形態における落水線編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図17】本発明の第1の実施形態の地形編集内容の指定の処理における、落水線編集プログラムとハードウェア資源との相互作用の詳細を示すシーケンス図である。
【図18】本発明の第1の実施形態の地形編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図19】本発明の第2の実施形態における落水線編集プログラムが提供するGUIの、付け替えモードにおける編集中の状態を示す説明図である。
【図20】本発明の第2の実施形態における落水線編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図21】本発明の第2の実施形態における落水線編集プログラムが提供するGUIの、流域外の一部領域を流域として追加する場合における編集中の状態を示す説明図である。
【図22】本発明の第2の実施形態における落水線編集プログラムが提供するGUIの、流域の一部領域を流域外として削除する場合における編集中の状態を示す説明図である。
【図23】不正な落水線の例を示す説明図である
【発明を実施するための形態】
【0019】
最初に、本発明の概要を説明する。
【0020】
本発明は、発明者らが見いだした、実際の流れが次の3種類に分類されるという原理に基づく。
【0021】
流れ1:落水線として表現できる流れ。
【0022】
流れ2:セル同士を結ぶ流れとして表現できる流れ。
【0023】
流れ3:セル同士を結ぶ流れとして表現できない流れ(たとえば、セルよりも空間スケールが小さい流れ、水深方向に均一でない流れなど)。
【0024】
明らかに、流れ2は流れ1を包含する。流れ2の具体的な例を図23に示す。図23(a)から図23(d)に示した流れはすべてセル同士を結ぶ流れとして表現されており、明らかに流れ2である。一方、落水線として正しい流れは前述したとおり図23(d)のみであり、落水線(流れ1)は流れ2の一部である。
【0025】
流れ2のうち、図23(c)および図23(d)の流れは、セルを結ぶ水路内の流れとして落水線と同じ物理法則(標高の下り方向に流れる流れ)で表現できる。なぜならば、落水線が有する「水が流れる方向」が落水線のように周囲のセルの標高により決定されても、水路のように水路の壁により決定されても、標高の下り方向に流れるという流れの性質に違いがないからである。このことは、セルに比べ幅が十分広い水路は、落水線で表現できることからも明らかである。このことからも示唆されるとおり、図23(c)および図23(d)の流れが落水線として表現できない理由は直感的にわかりにくい。図23(a)および図23(b)がセルの大きさを変更することでは表現できず、その表現には専用の物理モデル(ポンプまたはサイフォンなど)が必要なこととは大きく異なる。
【0026】
一方、ユーザが「実際の流れと落水線とが違う」と考える原因は、地図に記載された水路を暗黙のうちにセルを結ぶ水路として近似表現し、その水路と落水線生成プログラムの作成した落水線とが大きく異なると判断するためと考えられる。したがって、落水線と水路とを共存させるようにすれば、ユーザにとって正しいと考えられる「落水線」が実現できる、と発明者らは考えた。
【0027】
落水線は最急勾配方向に、水路は水路の中心線に沿って流れる。しかしどちらも、下り勾配方向に流れ下ることは共通である。したがってこれらの流れを共存させるためには、最急勾配方向でない方向に流れる落水線を許容し、かつ水路中心線に沿って下り勾配方向になるように地形を変更すればよい。ただしこの操作は、水路の上流端と落水線、および下流端と落水線とが矛盾なく接続するよう、落水線と水路の上流端とを結ぶ勾配、水路の下流端と落水線とを結ぶ勾配のどちらもが下り勾配になる場合のみ可能である。
【0028】
以上の原理に基づき、発明者らが考案した本発明の落水線編集プログラムは以下のステップ1からステップ3によって構成される。
【0029】
ステップ1:ユーザからセルおよび流れる方向の指定を受ける。このステップでは、ユーザに水路となるセルおよびその流れ方向を、落水線編集指示として入力させればよい。
【0030】
ステップ2:指定されたセルの流れる方向に基づき、指定されたセルの標高を決定する。ただし、1つのセルに2種類の標高が与えられる場合、または、指定されたセルであって、上流のセルが指定されなかったセルであり、かつ、上流のセルよりも標高が高い場合、または、指定されたセルであって、下流のセルが指定されなかったセルであり、かつ、下流のセルよりも標高が低い場合、地形の編集指示に変更不可能な指示と見なし、処理を中断するか、ステップ1に戻ってユーザに水路の位置の再入力を要求する。
【0031】
ステップ3:落水線を更新する。このステップでは、ステップ1で受け取ったセルおよび流れる方向、およびステップ2で決定された地形を用いて落水線を生成し、既存の落水線を上書きすればよい。
【0032】
なお、本発明は、流れ1および流れ2を対象とする。セルを用いて流れ3を表現できないことは明らかである。ただし、流れ3についてはすでに知られている技術と本発明とを組み合わせて用いることで対応できる。流れ1と流れ3とを表現する方法として、たとえば非特許文献5では、流れ1を表すモデルの特定のセルを別のモデル(河川モデル)のセルに接続する方法が用いられている。また非特許文献6では、1セルで2つ以上の流れを表現する方法を提案している。これらの方法は落水線を用いるモデルに組み合わせて用いることができるため、本発明に組み合わせて用いることができる。
【0033】
以下、落水線編集プログラムの実施形態を2つの例を用いて説明する。第1の実施形態は落水線1本ごとの編集に適しており、第2の実施形態はより広い領域における複数本の落水線の編集に適している。どちらも同じ原理に基づいているため、1つのプログラムで両方の機能を備えても矛盾は生じない。したがって、両方の機能を備えるプログラムを作成し、これらの実施形態のどちらかをユーザに選択させてもよい。
【0034】
なお、説明の都合上、実施例において落水線はD8 methodで生成するものとする。したがって、各セルから出る落水線は1本である。また、落水線はセルの中心同士を結ぶ線分または矢印として表示される。ただし、本発明はD8 methodにのみ適用可能なわけではなく、セルにおける標高データを用いて落水線を生成し、セル同士を結ぶ有向線分として落水線を表現する場合に適用可能である。本実施例に記載した落水線生成方法D8 methodではない落水線生成方法として、たとえば非特許文献7または非特許文献8に示されたMultiple flow direction method、非特許文献9に示されたRanked flow tendency methodが挙げられる。これらの方法では、D8 methodとは異なり、各セルから出る落水線は1本以上となる。また、本実施形態に記載した落水線表示方法ではない方法として、非特許文献4(Fig.4d)に示された、セルの辺または頂点を結ぶ方法が挙げられる。
【0035】
<第1の実施形態>
以下、本発明の第1の実施形態を添付図面に基づいて説明する。
【0036】
図1は、本発明の実施の形態におけるコンピュータシステムの構成を示す概略ブロック図である。
【0037】
本実施の形態のコンピュータシステムは、PC(Personal Computer)100によって構成される。PC100は、入出力部110を備える。入出力部110は、キーボード111およびマウス112などからなる入力部と、ディスプレイ113などからなる出力部によって構成される。ユーザは、入力部から命令を入力し、出力部から結果を確認することができる。
【0038】
さらにPC100は、メモリ120およびCPU(Central Processing Unit)130を備える。メモリ120には落水線編集プログラム141が展開される。この落水線作成プログラム141はCPUへの命令から構成される。CPU130は、落水線作成プログラム141の命令に従い、計算、HDD(Hard Disk Drive)190へのアクセス、および入出力部110との情報の交換などを行う。以下の説明において落水線編集プログラム141が実行する処理は、実際には、流域抽出プログラム141に記述された命令に従うCPU130によって実行される。
【0039】
HDD190には標高データ191、落水線データ192、および地図データ193が格納されており、落水線編集プログラム141はこれらのデータを読み込むこと、および書き込むことができる。なお、HDD190は、PC100に内蔵されてもよいし、PC100の外部に接続されてもよいし、PC100からネットワーク経由でアクセスできる別の装置に接続されてもよい。
【0040】
標高データ191は、一般的にDigital elevation model(DEM)と呼ばれるデータである。すなわち、標高データ191は、セルの位置とそのセルにおける地表面の標高を記載した情報である。ある位置に割り当てられるセルは唯一であるため、セルの位置情報に基づいてセルに一意な識別番号(ID)を割り当てることができる。また、この標高データ191では、陸域には標高値が、海域には海域を示す値が格納されている。なお、海域とは、流出口がない水域、つまり、海洋および閉塞湖沼域(水の流出口がない湖)等である。
【0041】
落水線データ192は、標高データ191と同様にセルの位置とそのセルにおける落水線の属性とを記載した情報である。落水線の属性とは、向き、勾配などである。さらにこの属性に、そのセルより上流のセルの数、最下流のセルのIDなど、落水線データの解析結果を含めてもよい。このデータは、落水線生成プログラムを用いてあらかじめ作成しておく。落水線生成プログラムとして、たとえば発明者らが特許文献4で開示した発明「流域推定プログラム」を使うことができる。
【0042】
地図データ193は、ユーザが落水線を編集するための判断材料となる情報であればよい。地図データ193として適している情報として、河川等の位置が記載された地形図などが挙げられる。
【0043】
図2は、PC100によって実行される落水線編集プログラム141とハードウェア資源との相互作用を示すシーケンス図である。
【0044】
PC100で落水線編集プログラム141が起動される。落水線編集プログラム141は、HDD190から落水線データ192を読み出す(ステップ201)。データを読み出した落水線編集プログラム141は、ウィンドウ300からなるGUI(Graphical User Interface)をディスプレイ113に出力する(ステップ202)。このGUIを用いて、落水線編集プログラム141は、編集モードの指定を受ける(ステップ203)。このステップは省略可能である。このステップを実行すると、ユーザの誤操作を防ぐためにユーザの操作が制限される。さらにGUIを用いて、落水線編集プログラム141は、ユーザから落水線編集指示を受け取る(ステップ204)。落水線編集プログラム141は、指示された落水線が不正なものであるか否かを判定し、不正なものでない場合にのみこの指示を受け取る。
【0045】
つづいて落水線編集プログラム141は、ユーザによる落水線の編集指示を、地形の編集指示に変換する(ステップ205)。このステップでは、変換の詳細についてユーザに問い合わせを行ってもよい。本実施形態(第1の実施形態)は問い合わせる場合について説明し、別の実施形態(第2の実施形態)では問い合わせない場合について説明する。落水線編集プログラム141は、この地形の編集指示に従い地形を編集し(ステップ206)、さらに編集された地形に基づき落水線を生成する(ステップ207)。
【0046】
このステップ207においては、落水線生成部1322(図13参照)を用いて下り勾配方向の落水線が生成される。落水線生成部1322としては、たとえば発明者らが特許文献4で開示した発明「流域推定プログラム」を使うことができる。なおステップ207において、落水線生成部1322は、ユーザが指定した落水線に戻る(すなわち循環する)落水線、および、ユーザが指定した落水線を横切る落水線を生成させないように落水線を生成する。
【0047】
また、後で詳細に説明するように、本実施形態では、あるセルについて無効方向が定められている場合、無効方向ではない方向のうち下り勾配方向に一致するように落水線が生成される。たとえば、上記の「流域推定プログラム」は、下りの最急勾配方向に一致する落水線を作成するが、本実施形態に「流域推定プログラム」を用いた場合、無効方向ではない方向のうち最急勾配方向に一致する落水線が作成される。
【0048】
落水線編集プログラム141は、生成した落水線をGUIに表示し(ステップ208)、落水線が意図通りであることをユーザに確認させてもよい。また、ユーザからデータを保存するコマンドを受け付けて、標高データ191および落水線データ192の書き込み(ステップ209および210)を行ってもよい。これらによって標高データ191および落水線データ192が更新される。
【0049】
なお、落水線編集プログラムは、ステップ203において、「付け替え」、「追加」または「削除」のいずれかをユーザに選択させることが望ましい。
【0050】
「付け替え」が選択された場合、ユーザが編集可能な落水線が流域内に制限される。この場合流域界が変更されないため、ステップ207の処理は流域内(すなわちステップ201で読み込んだ時点における落水線データ192によって特定される流域内)のみを対象にすればよい。具体的には、ステップ207において、落水線生成部1322は、流域内のセルのみについて最急勾配方向を特定し、それに基づいて落水線を作成するが、流域外のセルについては最急勾配方向を特定する処理を実行しない。
【0051】
「追加」が選択された場合、ユーザが編集可能な落水線の始点が流域外となるよう制限される。この場合流域が拡張されるため、ステップ207の処理は流域外も対象にする必要がある。すなわち、ステップ207において、落水線生成部1322は、流域内のセルだけでなく、流域外のセルについても最急勾配方向を特定し、それに基づいて落水線を作成する必要がある。
【0052】
「削除」が選択された場合、ユーザが編集可能な落水線の終点が流域外となるよう制限される。この場合流域が縮小されるため、「付け替え」の場合と同様、ステップ207の処理は流域内のみを対象にすればよい。
【0053】
なお、落水線編集プログラム141のシーケンスにおいて重要な点は、落水線編集指示の受け取り(ステップ204)、落水線の編集指示を地形等の編集指示に変換(ステップ205)、標高データの変更(ステップ206)、落水線データの変更(ステップ207)の順に処理がなされることである。この順に処理がなされる限り、その他のシーケンスを変更させることができる。たとえば、ステップ210の後再びステップ203に戻り新たな編集作業を継続することは可能である。
【0054】
ステップ203からステップ208に関するGUIの遷移を図3から12に示す。
【0055】
図3は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集を開始した状態(ステップ204)を示す説明図である。
【0056】
図3のGUIは、ディスプレイ113の所定の領域に表示されるウィンドウ300からなり、キーボード111およびマウス112による入力を受け付ける。ウィンドウ300は、少なくとも落水線表示部310を備え、さらに編集コマンド入力部320および地形断面表示部330を備えることが望ましい。
【0057】
落水線表示部310は、少なくともステップ201で読み込んだ落水線データ192に含まれる落水線(たとえば落水線311など)を表示する。これらの落水線はすべて下流端セル343に到達する。すなわち、この状態で落水線表示部310に表示されているセルはセル343の流域である。このことを明示するため、太い線分362のように流域界を表すことが望ましい。セルの位置を示すために線分361のようにセルの辺(枠線)を示してもよい。図3の例では、線分361のような枠線によって格子状に区切られた矩形の各領域がセル(たとえばセル341)である。
【0058】
また落水線表示部310は、編集対象とする落水線をユーザに指定させる機能を備える。本実施例では、マウス112の動きを検知しマウスポインタ301を動かし、マウス112の操作(例えば左クリック)を検知することによって編集対象とする落水線をユーザに指定させる。ユーザの操作結果をユーザにわかりやすく伝えるために、指定された落水線311を太線等で表示する、かつ・または指定された落水線311の終点にアイコン302を表示することが望ましい。
【0059】
さらに落水線表示部310は、マウス112の右クリックを検知し、ユーザが落水線編集プログラム141に編集終了を通知するためのユーザインタフェース(コンテキストメニュー)を出現させることが望ましい。その詳細については図6で説明する。編集コマンド入力部320は、ユーザに「編集モード」を指定させるドロップダウンリスト321を備える。ドロップダウンリスト321は、ユーザに「付け替え」、「追加」、「削除」のいずれかを選択させる。
【0060】
地形断面表示部330は、後述する落水線編集内容の指定処理(ステップ204)および落水線の編集指示を地形等の編集指示に変換(ステップ205)におけるユーザ操作を支援するためのGUIである。地形断面表示部330は、縦軸331および横軸332を備える。後述するとおり、この横軸に沿ってあるセルをある順番に従って並べ、それらの標高を縦軸に示す。さらに、地形断面表示部330は、ユーザに標高値を変更させるインターフェースを備える。このようにウィンドウ300は、少なくとも1以上の落水線を指定する機能を備える。
【0061】
また、ウィンドウ300の落水線表示部310に地図データ193を表示してもよい。これによって、ユーザが落水線を編集することが容易になる。この機能を実装するためには、ステップ201で落水線編集プログラム141が落水線データ192および地図データ193を読み込めばよい。
【0062】
本実施形態では、編集コマンド入力部320から「付け替え」、「追加」、「削除」のいずれかをユーザに選択させることでステップ203を実現する。
【0063】
第一に、ユーザが「付け替え」モードを選択した場合について図3から図8を参照して説明する。
【0064】
ユーザは、落水線表示部310において1つの落水線を選択する。図3は、落水線311が選択された直後の状態である。選択された落水線の終点にアイコン302が表示され、マウスポインタ301を動かすことでそのアイコンが動く。このアイコン302は、セル341(落水線311の始点セル)に隣接する8セルのうち、マウスポインタ301から最も近いセルの中心のみに表示される。ユーザがマウス112を左クリックすることで、落水線の終点をクリックしたセルに付け替えることができる。例えば、ユーザがセル342上にマウスポインタ301を置いて左クリックすると、画面は図4に遷移する。
【0065】
図4は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集を継続している状態(ステップ204)を示す第1の説明図である。
【0066】
図4のセル441および442は、それぞれ図3のセル341および342に相当する。
【0067】
図3の落水線311は図4の落水線411に付け替えられる。さらに、この落水線411の下流に位置する落水線412が太線表示されている。これらの落水線411および412に沿った地形断面、すなわちセル441から443の標高が、地形断面表示部430に示されている。落水線411から412が矢印431から432に、セル441から443が矩形451から453にそれぞれ対応している。
【0068】
この地形断面表示部430の左端のセル451の標高より右端セル453の標高の方が低い。この状態、すなわちユーザが指定を開始したセル(441)の標高より、そのセルの下流に位置するいずれかのセルの標高が低い状態において、ユーザはこの編集内容を確定すること、または編集を継続することのどちらかを選択できる。ユーザがセル444上にマウスポインタ401を置いて左クリックすると、ユーザが編集の継続を選択したと判定され、画面は図5に遷移する。
【0069】
図5は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集を継続している状態(ステップ204)を示す第2の説明図である。
【0070】
図5のセル541、542および543は、それぞれ図4のセル441、442および444に相当する。
【0071】
図4の落水線412は図5の落水線512に付け替えられる。図4同様、この落水線512の下流にある落水線513および514が太線表示されている。落水線511から514に沿った地形断面、すなわちセル541から545までの標高が、地形断面表示部530に示されている。落水線511から514が矢印531から534に、セル541から545が矩形551から555にそれぞれ対応している。
【0072】
この地形断面表示部530の左端のセル551の標高よりも右端セル555の標高の方が低い。やはりこの状態で、ユーザはこの編集内容を確定すること、または編集を継続することのどちらかを選択できる。ユーザがマウス112を操作(たとえば右クリック)すると、画面は図6に遷移する。
【0073】
図6は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集内容を確定している状態(ステップ204)を示す説明図である。
【0074】
ユーザがマウス112を右クリックすると、「確定」および「キャンセル」と書かれたコンテキストメニュー601が出現し、「確定」を選択することでユーザは編集内容を確定することができ、「キャンセル」を選択することでコンテキストメニュー601を非表示にすることができる。この状態でユーザが「確定」を選択すると、落水線編集プログラム141はステップ205に移行し、画面は図7に遷移する。
【0075】
図7は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける地形を編集している状態(ステップ205)を示す説明図である。
【0076】
図7のセル741から745は、それぞれ図5のセル541から545に相当する。
【0077】
GUIがこの状態に遷移すると、ユーザが編集コマンド入力部720の確定ボタン725、及び地形断面表示部730を操作することが可能になる。地形断面表示部730には実線の矩形(矩形751から755)および破線の矩形(矩形756から758)が描かれている。破線の矩形は図5および図6同様、セル742から744の標高を表す。実線の矩形は、地形断面表示部730の左端のセル751から右端セル755に向けて下り勾配になるように(すなわち、各落水線の終点のセルの標高が始点のセルの標高より低くなるように)自動的に算出された標高を表す。
【0078】
この自動的に算出された標高がユーザの意図と異なる場合、ユーザがそれを編集できる。ユーザが実線の矩形の上辺にマウスポインタを近づけると、マウスポインタが矢印型のアイコン701に変化し、矩形の上辺が変更可能であることを示す。また、セル751からセル755に向けて下り勾配であれば、確定ボタン725は操作可能な状態となっている。すなわち、ユーザが指定を開始したセル(741)から、ユーザが指定を確定したセル745にかけて全て下り勾配である場合にステップ205を完了することができる。
【0079】
この状態でユーザが確定ボタン725を操作(たとえば確定ボタン上にマウスポインタを置いてマウス112を操作)すると、落水線編集プログラム141はステップ205を完了させるとともにステップ206から208までを実行し、画面は図8に遷移する。
【0080】
図8は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集後の落水線を表示した状態(ステップ208)を示す説明図である。
【0081】
図8のセル842から844は、それぞれ図7のセル742から744に相当する。
【0082】
ステップ206(標高データの変更)によって、セル842から844までの標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。一方、これらのセルを始点とする落水線はステップ204でユーザが指定した通りに変更される。図8の例では、図7の落水線746から747が落水線846から847にそれぞれ自動的に付け替えられる。
【0083】
ユーザは落水線表示部810を参照して落水線が意図通りであることを確認し、データを保存するコマンドを必要に応じて発行する。これを受けた落水線編集プログラム141はステップ209から210を実行する。ステップ209(標高データ191の書き込み)およびステップ210(落水線データ192の書き込み)によって、編集作業の結果がHDD190に保存されることになる。
【0084】
なお、図7の地形編集処理において、始点(セル751)および終点(セル755)の標高の編集を省略することで、よりユーザの利便性を向上させることができる。ユーザがこれらのセルを選択したという事実から、ユーザは始点(セル751)より上流の落水線、および始点(セル755)より下流の落水線を正しいと判断したと解釈できるためである。
【0085】
第二に、ステップ203(編集モードの指定)においてユーザが「追加」モードを選択した場合について図9から図10を参照して説明する。
【0086】
図9は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、追加モードにおける地形を編集している状態(ステップ205)を示す説明図である。
【0087】
この図9は、落水線編集内容の指定処理(ステップ204)がなされた状態、すなわち図6に示したようなコンテキストメニュー601を通じて、落水線の編集内容がユーザによって確定された状態である。ステップ204においてユーザは、流域外のセルを始点とし、流域内のセルを終点とする落水線を指定する。図9では、ユーザによってセル941を始点とし、セル942を終点とする落水線911が指定されている。また、図4同様、この落水線911の下流にある落水線912が太線表示されている。
【0088】
落水線911から912に沿った地形断面、すなわちセル941から943までの標高が、地形断面表示部930に示されている。落水線911から912が矢印931から932に、セル941から943が矩形951から953にそれぞれ対応している。この地形断面表示部930の左端のセル951の標高よりも右端セル953の標高の方が低い。このようにステップ204は、ユーザが指定を開始したセル(941)の標高よりも、そのセルの下流に位置するいずれかのセルの標高が低い場合に完了させることができる。また、ステップ205は、ユーザが指定を開始したセル(941)から、ユーザが指定を確定したセル943にかけて全て下り勾配である場合に完了することができる。
【0089】
つづいてユーザが確定ボタン925を操作すると、落水線編集プログラム141はステップ206から208を実行し、画面は図10に遷移する。
【0090】
図10は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、追加モードにおける地形を編集後の落水線を表示した状態(ステップ208)を示す説明図である。
【0091】
ステップ206(標高データの変更)によって、セル1042の標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。図10の例では、落水線1011から1014が追加される。
【0092】
第三に、ステップ203(編集モードの指定)においてユーザが「削除」モードを選択した場合について図11から図12を参照して説明する。
【0093】
図11は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、削除モードにおける地形を編集している状態(ステップ205)を示す説明図である。
【0094】
図9同様、この図11は落水線編集内容の指定処理(ステップ204)がなされた状態、すなわち図6に示したようなコンテキストメニュー601を通じて、落水線の編集内容がユーザにより確定された状態を示す。ただし、「追加」モードとは逆に、この「削除」モードではステップ204においてユーザは流域内のセルを始点とし、流域外のセルを終点とする落水線を指定する。ここで、「流域内」とは流域界1162によって囲まれた流域の内側、[流域外]とはその流域の外側を意味する。流域界1162は、図3の流域界362に対応するが、流域界362は上記の「追加」モードの編集によって流域界1162に変更されている。
【0095】
図11では、ユーザによってセル1142を始点とし、セル1143を終点とする落水線1112が追加されている。図4同様、この落水線1112の下流にある落水線1113が太線表示されている。
【0096】
落水線1111から1113に沿った地形断面、すなわちセル1141から1144までの標高が、地形断面表示部1130に示されている。落水線1111から1113が矢印1131から1133に、セル1141から1144が矩形1151から1154にそれぞれ対応している。この地形断面表示部1130の左端のセル1151の標高よりも右端セル1154の標高の方が低い。
【0097】
なお、この図11におけるステップ204は以下の通り実行された。ユーザが指定を開始したセルは1141であり、このセルを始点とする落水線1111の終点として、ユーザは流域内のセル1142を指定した。この時点でステップ204を完了することは許可されない。この時点では、セル1141から流出した水が、ユーザによって指定された落水線を経由して、セル1141より標高の低い流域外のセルに流れ込むことができないためである。このため、落水線編集プログラム141はコンテキストメニュー601の「確定」メニューを出現させず、セル1142を始点とする落水線の終点を指定させる操作を受け付ける。
【0098】
つづいてユーザはセル1142を始点とする落水線の終点をセル1143に指定した。この段階で落水線1113が太線表示される。この落水線1113は、セル1143が指定された時点(すなわちセル1143の標高が編集される前の時点)における最急勾配方向を示す。落水線1113の終点セルであるセル1144の標高はセル1141の標高より低く、かつ、そのセル1144は流域外のセル(すなわち流域界1162の外側のセル)である。この場合、ユーザの指定に整合するように各セルの標高を変更することによって、セル1141を、流域界362が示す流域から削除することができる。このため、セル1143が指定された時点で、ステップ204を完了することが許可される。
【0099】
コンテキストメニュー601の「確定」メニューをユーザが選択すると、落水線編集プログラム141はステップ204を完了させる。つづいてユーザが確定ボタン1125を操作すると、落水線編集プログラム141はステップ206から208を実行し、画面は図12に遷移する。
【0100】
図12は、本発明の第1の実施形態における落水線編集プログラム141が提供するGUIの、削除モードにおける地形を編集後の落水線を表示した状態(ステップ208)を示す説明図である。
【0101】
図12のセル1241から1243は、それぞれ図11のセル1141から1143に相当する。また、図12の落水線1211から1213は、それぞれ図11の落水線1111から1113に相当する。
【0102】
ステップ206(標高データの変更)によって、セル1242から1243の標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。図12の例では、落水線1214が削除される。また、ユーザの指定した落水線1211から1213も流域から削除される。これに伴い流域界も図3の流域界362から図12の流域界1262のように変更される。
【0103】
図13は、本発明の第1の実施形態の落水線編集プログラム141の機能モジュール構成を示すパッケージ図である。
【0104】
落水線編集プログラム141は、ウィンドウ管理モジュール1310およびロジック管理モジュール1320の2つのモジュールから構成される。ウィンドウ管理モジュール1310には、ウィンドウ枠管理部1311、落水線表示部1312、編集コマンド入力部1313、および地形断面表示部1314が含まれる。一方、ロジック管理モジュール1320には、落水線編集部1321、落水線生成部1322、およびファイル入出力部1323が含まれる。
【0105】
図3に示した落水線編集プログラム141のGUIについて、ウィンドウ300はウィンドウ枠管理部1311が管理し、その内部の落水線表示部310、編集コマンド入力部320、および地形断面表示部330は落水線表示部1312、編集コマンド入力部1313、および地形断面表示部1314がそれぞれ管理する。また、図2に示した落水線編集プログラム141のシーケンスにおいて、落水線データ192の読み込み(ステップ201)、標高データ191の書き込み(ステップ209)、および落水線データ192の書き込み(ステップ210)は主にファイル入出力部1323が管理する。落水線編集指示の受け取り(ステップ204)、落水線編集指示を地形の編集指示に変換(ステップ205)、標高データの変更(ステップ206)は主に落水線編集部1321が管理する。落水線データの変更(ステップ207)は主に落水線生成部1322が管理する。落水線生成部1322としては、たとえば発明者らが特許文献4で開示した発明「流域推定プログラム」を使うことができる。
【0106】
図14は、本発明の第1の実施形態のセルのデータ構造を示す説明図である。
【0107】
図14の表1400にセル型のデータを示す。セル型(クラス名Cell)は、Glev、IsTheBasin、LowerDirection、およびInvalidDirectionsの4つのメンバ変数を持つクラスとする。Glevは浮動小数点型であり、標高を保持する。IsTheBasinはブール型であり、セルが流域内のセルであればtrueを、そうでなければfalseを保持する。LowerDirectionは列挙型であり、水が流れる方向(8種類)、またはそのセルから水が流れないことを示す合計9種類の値のいずれかを保持する。
【0108】
InvalidDirectionsはビットフィールドを表す列挙型である。InvalidDirectionsが保持できる値はLowerDirection同様、セルから水が流れる方向(8種類)、またはそのセルから水が流れないことを示す合計9種類であるが、LowerDirectionとは異なりこれら9種類がそれぞれtrueまたはfalseの値を保持する。
【0109】
流域界362は、IsTheBasinを参照し流域内のセルと流域外のセルとの境界に作成される。
【0110】
InvalidDirectionsは、無効な落水線の方向、すなわち、落水線の生成が禁止される方向を示す。たとえば、ユーザが作成した落水線を横切る方向の値がtrueとなる。これは、ユーザが作成した落水線を横切る方向が無効な方向であること、すなわちその方向の落水線の生成が禁止されることを意味する。同様に、ユーザがあるセルを始点とする落水線の方向を指定した場合、そのセルについて、指定された方向以外の方向のInvalidDirectionsの値はtrueになる。落水線生成部1322はステップ207においてこのInvalidDirectionsを参照し、その値trueに対応する方向の落水線を生成しないようにする。なお、このセル型のデータは拡張可能であり、他の変数を持たせてもよい。
【0111】
以下、これらの画面遷移を実現する処理シーケンス(図2)におけるステップ204、205の詳細を説明する。これら以外のステップの処理内容は、画面遷移から明らかであるため説明は割愛する。
【0112】
図15は、本発明の第1の実施形態の落水線編集内容の指定(ステップ204)の処理における、落水線編集プログラム141とハードウェア資源との相互作用の詳細を示すシーケンス図である。
【0113】
ステップ204において落水線編集プログラム141はユーザからの開始セル(すなわち対象とする落水線の始点セル)の指定を受け付ける(ステップ1501)。ユーザは入出力部110を通じ開始セルを指定する(ステップ1502)。この際、ステップ203で指定した編集モードが「付け替え」および「削除」の場合、流域内にあるセルのみ指定可能にする。一方「追加」の場合、流域外にあるセルのみ指定可能にする。
【0114】
つづいて落水線編集プログラム141は通過セルの指定を受け付ける(ステップ1503)。通過セルとは、開始セルを始点とする落水線の、終点となるセルである。図3の画面状態は、このステップ1502に該当する。
【0115】
ユーザは入出力部110を通じ通過セルを指定する(ステップ1504)。このようにして入力された落水線は、「地形編集指示に変換可能」、「地形編集指示に変換不可能」、および「不正」の3種類に判別される。これらの判別方法は後述する図16を用いて説明する。
【0116】
入力された落水線が「不正」であると判定された場合、入力値は拒絶され、ステップ1503に戻る。それ以外の場合、落水線編集プログラム141は落水線編集指示を地形編集指示へ変換する(ステップ1505)。このステップ1505において標高データ191が読み込まれる(ステップ1506)。また、ステップ1505の処理結果が入出力部110に地形断面図として表示される(ステップ1507)。
【0117】
落水線編集プログラム141は、「地形編集指示に変換可能」な場合は確定指示またはさらなる通過セルの指定を受け付け、「地形編集指示に変換不可能」の場合はさらなる通過セルの指定を受け付ける(ステップ1508)。図4および5の画面状態は、このステップ1508に該当する。
【0118】
ユーザは入出力部110を通じ確定指示または通過セルを指定する(ステップ1509)。図6の画面は、このステップ1509において確定指示を入力している状態である。
【0119】
ユーザが入出力部110を通じ通過セルを指定した場合、ステップ1505に戻る(ステップ1510)。確定指示の場合はステップ204を終了する。
【0120】
図16は、本発明の第1の実施形態における落水線編集内容の指定(ステップ204)の処理のアルゴリズムを示すフローチャートである。
【0121】
図15と図16との関係は以下の通りである; ステップ1501がステップ1601に、ステップ1503がステップ1602−1603に、ステップ1505−1506がステップ1604−1610に、ステップ1508がステップ1611−1612に対応する。
【0122】
落水線編集プログラム141はユーザからの開始セルの指定を受け付ける(ステップ1601)。落水線編集プログラム141は、ユーザからの入力を受け付ける関数WaitUserInputを呼び出し、ユーザから入力された値をtheCellに格納する。そして、落水線編集プログラム141は、この値theCellは要素のない空のセル配列Cellsの最初の要素として追加する(ステップ1602)。
【0123】
ただし、編集モードが「付け替え」かつtheCellが流域外にある場合、または編集モードが「追加」かつtheCellが流域内にある場合、または編集モードが「削除」かつtheCellが流域外にある場合、落水線編集プログラム141はユーザからの入力を拒絶しステップ1601に戻る。
【0124】
つづいて落水線編集プログラム141は、ユーザからの通過セルの指定を受け付け(ステップ1603)、ユーザから入力された値をtheCellに格納する。このことは、セル配列Cellsの最後の要素とtheCellとを結ぶ方向の落水線(たとえば、ステップ1601において図4のセル441が指定され、ステップ1603においてセル442が指定された場合、落水線411)がユーザによって指定されたことを意味する。
【0125】
ただし、落水線編集プログラム141は、入力された落水線が不正なものであるか否かを判定し、不正なものである場合はユーザから入力された値をtheCellに格納しない。具体的には、次の場合、落水線編集プログラム141はユーザが指定した落水線を「不正」な落水線と判定してユーザからの入力を拒絶する(ステップ1604);(1)theCellの値がすでにセル配列Cellsに格納されている場合、または(2)新たな落水線が既存のユーザ指定の落水線を交差する場合。
【0126】
なお、theCellの値がすでにセル配列Cellsに格納されていることは、入力された新たな落水線と既に入力されている落水線とがループを形成することを意味する。すなわち、図23に記載された落水線がすべてユーザ指定の落水線であると仮定した場合、図23(a)は上記(1)の場合に、図23(b)は上記(2)の場合に該当する。
【0127】
ユーザが指定した落水線が「不正」な落水線でない場合、ユーザが指定した落水線は、「地形編集指示に変換可能」な落水線または「地形編集指示に変換不可能」な落水線のいずれかである。この場合、落水線編集プログラム141はユーザから入力された値theCellをセル配列Cellsに追加する(ステップ1605)。この際、落水線編集プログラム141は、セル配列Cellsの追加前の最後の要素(変数cellとする)のInvalidDirectionsに、cellとtheCellとを結ぶ方向(すなわちユーザが指定した落水線の方向)をのぞく7方向を設定する。さらに、落水線編集プログラム141は、cellに隣接するセルのInvalidDirectionsに、cellとtheCellとを結ぶ方向と交差する方向を設定する。
【0128】
なお、このように設定されたInvalidDirectionsは、ステップ207において、落水線生成部1322によって参照される。落水線生成部1322は、ステップ207において、たとえば特許文献4に開示されたように、最急勾配法によって落水線を生成する。このとき、落水線生成部1322は、各セルのInvalidDirectionsを参照して、無効な方向以外の方向のうち最急勾配の方向の落水線を生成する。これによって、ユーザが指定した落水線がステップ207において確実に生成され、さらに、ユーザが指定した落水線と交差する落水線の生成が禁止される。
【0129】
つづいて落水線編集プログラム141は、セル配列Cellsの最後の要素、すなわちtheCellの下流のセルを変数cellに代入する(ステップ1606)。このtheCellの下流セルとは、theCellを始点とする落水線の終点セルのことであり、theCellとこの下流セルとは隣接する。たとえばtheCellが図4のセル442とすると、下流セルはセル443である。この下流セルは、たとえば最急勾配法によって定められる。ただし、既にtheCellについて無効な方向(InvalidDirections)が定められている場合、その無効方向を除く方向のうち最急勾配の方向の落水線が定められる。後述するステップ1607も同様である。
【0130】
落水線の始点が流域外である場合、下流セルが落水線データ192に存在しない。この場合、落水線編集プログラム141は地形データ191から下流セルを求めてもよいし、変数cellにtheCellを代入しステップ1610に進んでもよい。
【0131】
このステップ1606の終了後、落水線編集プログラム141は、セル配列LowerCellsを初期化(すなわちセル配列LowerCellsに含まれる全要素を削除)しておく。つづいて落水線編集プログラム141は、ステップ1606で探索した下流セルをセル配列LowerCellsに追加する(ステップ1608)。
【0132】
つづいて、落水線編集プログラム141は、ステップ1608で追加された下流セルに至る落水線が「地形編集指示に変換不可能」であるか否かを判定する(ステップ1609)。具体的には、セル配列LowerCellsに変数cellが含まれている場合、ユーザに指定された落水線及びその下流の落水線がループを形成する(図23(a)参照)。このような場合、および、ステップ1608で追加された下流セルに至る落水線が、既にユーザに指定された落水線またはその下流の落水線と交差する場合(図23(b)参照)、ユーザからの入力は「地形編集指示に変換不可能」である。この場合はステップ1603に戻り、落水線編集プログラム141はユーザからのさらなる通過セルの入力を受け付ける。
【0133】
このセル配列LowerCellsに変数cellが含まれていない場合(ステップ1609)、かつ開始セルの標高よりも変数cellの標高が低い場合(ステップ1610)、ユーザからの入力は「地形編集指示に変換可能」である。この場合、落水線編集プログラム141の処理はステップ1611に進む。一方、開始セルの標高よりも変数cellの標高が低くない場合は、ユーザからの入力が「地形編集指示に変換可能」であるか「地形編集指示に変換不可能」であるかを判定できないため、落水線編集プログラム141は変数cellの下流セルを探索し、探索された下流セルを変数cellに格納した(ステップ1607)のち、再びステップ1608を実行する。
【0134】
図7の例では、セル741がユーザによって指定された開始セル、セル742および743がユーザによって指定された通過セル、セル744および745が探索された下流セルである。開始セルから通過セルに至る落水線、および、通過セルから通過セルに至る落水線がユーザ指定の落水線である。
【0135】
なお、図7の例では、ユーザによって指定された末尾の落水線の終点であるセル743の標高が、先頭の落水線の始点であるセル741の標高より高いため、入力された指示が地形編集指示に変換可能であるか否かを判定するために、セル743の下流を探索する必要があった。しかし、仮に図7の例においてセル744および745もユーザによって通過セルとして指定された場合、セル745の標高がセル741の標高より低いため、セル745の下流の落水線が既に指定されたセルに戻る(すなわちループが形成される)または既に指定された落水線と交差する可能性がいずれもない。このため、セル745の下流セルを探索する必要はない。
【0136】
ただし、ステップ1607において変数cellが流域外であるためにそれの下流セルが存在しない場合には、落水線編集プログラム141は地形データ191から下流セルを求めてもよいし、ステップ1603に進んでもよい。
【0137】
ユーザからの入力が「地形編集指示に変換可能」である場合、落水線編集プログラム141はユーザからのさらなる通過セルの入力、または確定指示を受け付け、ユーザの入力を変数theCellに格納する(ステップ1611)。変数theCellがさらなる通過セルの入力である場合はステップ1603に戻り、変数theCellが確定指示である場合はステップ204を終了する(ステップ1612)。
【0138】
図17は、本発明の第1の実施形態の地形編集内容の指定(ステップ205)の処理における、落水線編集プログラム141とハードウェア資源との相互作用の詳細を示すシーケンス図である。
【0139】
落水線編集プログラム141は、セル標高を仮に決める(ステップ1701)。仮決めの方法は後述する図18を用いて説明する。
【0140】
落水線編集プログラム141は、ステップ1701における仮決めの結果を地形断面図として入出力部110に表示し(ステップ1702)、ユーザからの確定指示または標高の指定を受け付ける(ステップ1703)。図7、図9、および図11の画面状態は、このステップ1703に該当する。
【0141】
ユーザは、入出力部110を通じ確定指示または標高の指定を行う(ステップ1704)。ユーザが標高の指定を行った場合(ステップ1705)ステップ1703に戻り(ステップ1706)、確定指示の場合ステップ205を終了する。
【0142】
図18は、本発明の第1の実施形態の地形編集内容の指定(ステップ205)の処理のアルゴリズムを示すフローチャートである。
【0143】
図17と図18との関係は以下の通りである; ステップ1701がステップ1801−1804に、ステップ1703がステップ1805に、ステップ1705がステップ1806に、ステップ1706がステップ1807−1808に対応する。
【0144】
落水線編集プログラム141は、図16のステップ1608で作成したセル配列LowerCellsをセル配列Cellsに追加する(ステップ1801)。
【0145】
つづいて、落水線編集プログラム141は、これらのセルの平均勾配AveSlopeを算出する(ステップ1802)。このAveSlopeの値はセル配列Cellsの最初の要素(図7の例では、セル751)の標高Cells.Front.Glevと最後の要素(図7の例では、セル755)の標高Cells.Last.Glevとの差を、落水線の長さの合計値で割ることによって求める。
【0146】
つづいて、落水線編集プログラム141は、このAveSlopeを用いてセル標高の仮の値を求める(ステップ1803)。セル配列Cellsのi番目のセルの標高Cells[i].Glevの仮の値はAveSlope * Distance(Cells[i-1], Cells[i]) + Cells[i-1].Glevとする。ただし、Distance(cell0, cell1)はcell0とcell1の間の距離を返す関数である。また、最初の要素(Cells[0]、すなわちCells.Front)および最後の要素(Cells.Last)については、標高の仮の値を求めない。これによって、最初の要素から最後の要素に至るまでに落水線が通過する隣接セル間の勾配が一定になる。図7の例では、セル751から755に至る各落水線の方向が下り勾配方向に一致するように、セル752から754までの標高が変更され、かつ、それらの勾配が一定になる。
【0147】
なお、この標高の仮の値は、セル配列Cellsの全要素間が下り勾配となる限り、別の方法によって求めてもよい。したがって、ユーザによって指定された全ての落水線が、最急勾配方向とは一致しないとしても、下り勾配方向とは一致する場合、セルの標高値を変更しなくてもよい(すなわち、ステップ205および206を省略してもよい)。
【0148】
つづいて、落水線編集プログラム141は、セル配列Cellsの全要素間が下り勾配であることを示すフラグIsValidUserChannelをtrueにする(ステップ1804)。これによって、標高の仮の値を、各セルの標高として確定することが可能になる。すなわち、フラグIsValidUserChannelがtrueになると、確定ボタン(たとえば図7の確定ボタン725)が表示され、それに対するユーザの操作を受け付けることが可能になる。
【0149】
つづいて、落水線編集プログラム141は、標高の仮の値を入出力部110に表示しユーザからの指示を受け付ける(ステップ1805)。落水線編集プログラム141は、フラグIsValidUserChannelがtrueである場合は標高の変更または確定の指示を受け付け、フラグIsValidUserChannelがfalseである場合は標高の変更を受け付ける。ユーザの指示は変数Commandに格納される。
【0150】
変数Commandが標高の変更の指示である場合(ステップ1806)、落水線編集プログラム141は、その指示を標高に反映し、セル配列Cellsの全要素間の勾配を計算する(ステップ1807)。落水線編集プログラム141は、すべての要素間の勾配が下り勾配の場合、フラグValidUserChannelをtrueにする。一方、いずれかの要素間の勾配が下り勾配でない(すなわち上り勾配である)場合、落水線編集プログラム141は、フラグValidUserChannelをfalseにして、ステップ1805に戻る(ステップ1808)。ステップ1806において変数Commandが標高の変更の指示である場合(すなわち確定ボタンが操作された場合)、ステップ205を終了する。
【0151】
上記のように標高を編集することによって、ユーザが指定した落水線の方向は必ず下り勾配方向と一致する。しかし、ユーザが指定した落水線が最急勾配の方向と一致するとは限らない。したがって、ステップ206において標高データが変更された後のステップ207の落水線生成を、落水線の方向を制限することなく行えば、ユーザが指定した落水線が生成されない可能性がある。このため、本実施形態では既に説明したように、ユーザが指定したセルに関して、ユーザが指定した方向以外の方向が無効な方向として登録され、落水線生成部1322は無効な方向の落水線を生成しない。これによって、ユーザが指定した落水線がステップ207の落水線生成の後も維持される。しかし、このことは、本実施形態において図23(c)のような落水線の生成が許容されることをも意味する。
【0152】
しかしながら、本実施形態では、既に説明したように図23(a)および(b)のような落水線の生成は確実に防止され、さらに、上り勾配方向の落水線も生成されない。このため、本実施形態によって生成された落水線は、水文学上の種々の処理、たとえば流域面積の算出などに支障なく使用することができる。
【0153】
以上のように、本発明の第1の実施形態によれば、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供することができる。これによって、実際の水路の形状等、ユーザの知見を反映した落水線を短時間で生成し、水文学に使用することができる。
【0154】
<第2の実施形態>
以下、本発明の第2の実施形態を添付図面に基づいて説明する。本発明の実施の形態におけるコンピュータシステムの構成を示す概略ブロック図(図1)、および、PC100によって実行される落水線編集プログラム141とハードウェア資源との相互作用を示すシーケンス図(図2)は、第1の実施形態において説明したものと同じである。ただし、ステップ203、204および205の処理の詳細が異なる。これらの差異について言及しながら、ステップ201からステップ208について図19から図22を参照して説明する。
【0155】
図19は、本発明の第2の実施形態における落水線編集プログラム141が提供するGUIの、付け替えモードにおける編集中の状態(ステップ204)を示す説明図である。
【0156】
図19に示すウィンドウ1900は、図3に示したウィンドウ300と類似の機能を提供する。ただしウィンドウ300の落水線表示部310ではすべての落水線を表示していたのに対し、ウィンドウ1900の落水線表示部1910にはあらかじめ設定した値以上の流域面積を持つセルの落水線(たとえば落水線1921)、および流域界1922が表示される。一般に流域面積が大きいセルの落水線ほど重要なため、このようにすることで重要な落水線のみを編集対象とすることができる。また、ウィンドウ300で提供された編集コマンド入力部320および地形断面表示部330が、ウィンドウ1900では提供されない。本実施例においては、落水線の編集として「付け替え」のみが使用される。また、ユーザからの地形編集指示は受け付けず、ステップ1803で算出される仮の標高を常に採用する。したがって、編集コマンド入力部320を使用するステップ203、および地形断面表示部330を使用するステップ205は、ユーザに問い合わせを行うことなく処理される。
【0157】
このウィンドウ1900は、落水線編集プログラム141がHDD190から落水線データ192を読み出した(ステップ201)後に、ディスプレイ113に出力される(ステップ202)。編集モードは常に「付け替え」である(ステップ203)。このウィンドウ1900を使って、ユーザは落水線を編集する(ステップ204)。なお、ユーザによる編集が開始される前の時点において、ウィンドウ1900には太い実線で示す落水線1911及びその両端のアイコン1912、1913は表示されていない。
【0158】
まず、落水線編集プログラム141は、流域内の任意の1セルを開始セル(ユーザの入力した落水線の始点)としてユーザに指定させ、開始セルの中心にアイコン1912を表示する。つづいて、落水線編集プログラム141は、流域内にあり、かつ開始セルよりも標高が低い任意の1セルを終了セル(すなわちユーザの入力した落水線の終点)としてユーザに指定させる。終了セルを指定すると、終了セルの中心にアイコン1913が表示され、さらに開始セルと終了セルとを結ぶ線分が通過するセルに落水線1911が表示される。
【0159】
この状態で、ユーザはこの落水線1911を確定すること、または落水線1911が通過するセルを変更することができる。前者の場合、ユーザは確定ボタン1931を操作する。後者の場合、ユーザはポリライン編集に必要な一般的な機能を使って落水線1911を編集する。ただし、ポリライン編集において制御点はセル上にのみ限定される。
【0160】
たとえば生成された落水線1911の形状を変更したい場合、マウス112を用いて落水線1911を構成する1セルをクリックする。するとクリックしたセルの位置にポリラインの制御点が追加され、かつマウスカーソルがマウスカーソル1901のように変化し、制御点が移動可能なことを表示する。ユーザはこの制御点を別のセルに移動させることができる。ユーザが確定ボタン1931を操作すると、ステップ204が終了する。
【0161】
つづいて、落水線の編集指示を地形等の編集指示に変換(ステップ205)、標高データの変更(ステップ206)および落水線データの変更(ステップ207)が実行される。この処理において、落水線生成部1322が対象とすべきセルはステップ201で読み込んだ時点における落水線データ192に示された流域内のみであり、流域外は対象外にできる。なぜならば、「付け替え」において流域界は変更しないためである。
【0162】
これらの処理によって、落水線は変更される。変更された落水線は落水線表示部1910に表示される(ステップ208)。図19の落水線は図21の落水線のように変更される。ユーザの指定した落水線(落水線1911および2111)は、そのユーザの指定のとおりに作成される。一方、その周囲の落水線も標高データの変更により影響を受けることによって形状が変更される。たとえば図19の落水線1921は、図21の落水線2121のように変更される。
【0163】
なお、ウィンドウ1900は、編集コマンド入力部320、および地形断面表示部330を提供することも可能である。その場合、編集コマンド入力部320、および地形断面表示部330の操作方法は実施例1と同様となる。
【0164】
編集モードが「追加」の場合、ウィンドウ1900において、流域外の任意の1セルが開始セルとして指定され、流域内にあり、かつ開始セルよりも標高が低い任意の1セルが終了セルとして指定される。
【0165】
編集モードが「削除」の場合、ウィンドウ1900において、流域内の任意の1セルが開始セルとして指定され、流域外にあり、かつ開始セルよりも標高が低い任意の1セルが終了セルとして指定される。
【0166】
第1の実施形態と同様に、「追加」「削除」どちらの編集モードでも、ステップ204以外の処理は「付け替え」の場合と同じである。
【0167】
図20は、本発明の第2の実施形態における落水線編集内容の指定(ステップ204)の処理のアルゴリズムを示すフローチャートである。
【0168】
まず、落水線編集プログラム141は、ユーザによる開始セルの指定を受け付ける(ステップ2001)。落水線編集プログラム141は、ユーザからの入力を受け付ける関数WaitUserInputを呼び出し、ユーザから入力された値をtheCellに格納する。この値theCellは要素のない空のセル配列Cellsの最初の要素として追加される(ステップ2002)。ただし、theCellが流域外にある場合、ユーザからの入力を拒絶しステップ2001に戻る。
【0169】
つづいて落水線編集プログラム141は、ユーザからの終了セルの指定を受け付け(ステップ2003)、ユーザから入力された値をtheCellに格納する。ただし、theCellが流域外にある場合、またはtheCellの標高が開始セルCells.First.Glevの標高以上の場合、落水線編集プログラム141は、ユーザからの入力を「不正」または「地形編集指示に変換不可能」な落水線として拒絶する(ステップ2004)。この場合、落水線編集プログラム141はステップ2003に戻り、再びユーザからの終了セルの指定を受け付ける。
【0170】
theCellが流域内にあり、かつ、theCellの標高が開始セルCells.First.Glevの標高より低い場合、落水線編集プログラム141は、ユーザからの入力を「地形編集指示に変換可能」であると判定し、ユーザから入力された値theCellをセル配列CtrlCellsに追加する(ステップ2005)。
【0171】
つづいて落水線編集プログラム141は、セル配列CtrlCellsの全要素を順に結ぶ線分をセル配列に変換する(ステップ2006)。変換方法としては、ブレゼンハム法(Bresenham’s line algorithm)など、線分をセルに変換する一般的な方法を用いればよい。このようにして最初の要素が開始セル、最後の要素が終了セルとなるセル配列Cellsが作成される。
【0172】
つづいて落水線編集プログラム141は、作成したセル配列上に落水線を表示し、ユーザからの通過セルの指定を受け付け、ユーザの入力を変数theCellに格納する(ステップ2007)。変数theCellが確定指示、すなわち確定ボタン1931の操作である場合、落水線編集プログラム141はこのステップ204を終了する(ステップ2008)。
【0173】
変数theCellが通過セルの指定である場合には、落水線編集プログラム141は、ユーザ指定の落水線がループを描く、またはユーザ指定の落水線同士が交差するという条件が真であるかを判別する(ステップ2009)。ユーザ指定の落水線がループを描くか否かは、図18のステップ1807と同様の方法で判定されてもよい。ステップ2009の条件が偽である場合(すなわち、ユーザ指定の落水線がループを描かず、かつ、ユーザ指定の落水線同士が交差しない場合)には、落水線編集プログラム141はそのセルをセル配列CtrlCellに挿入し(ステップ2010)、ステップ2006に戻る。条件が真である場合にはそのセルを破棄してステップ2006に戻る。
【0174】
本実施例における落水線の追加および削除の処理は、流域界の追加または削除の処理の後、落水線の付け替え処理を行うことで実現する。
【0175】
図21は、本発明の第2の実施形態における落水線編集プログラム141が提供するGUIの、流域外の一部領域を流域として追加する場合における編集中の状態を示す説明図である。
【0176】
図21に示すGUIは、流域界を示す線分2122を、マウスカーソル2101を用いて流域外に拡張する機能を提供する。線分2123は、このようにして拡張された新たな流域界である。
【0177】
図22は、本発明の第2の実施形態における落水線編集プログラム141が提供するGUIの、流域の一部領域を流域外として削除する場合における編集中の状態を示す説明図である。
【0178】
図21と同様に、図22に示すGUIは、流域界を示す線分2222を、マウスカーソル2201を用いて流域内に縮小する機能を提供する。線分2223は、このようにして縮小された新たな流域界である。
【0179】
図21および図22に示した操作によって流域界を示す線分を移動させたのちに、ユーザが確定ボタン2231を操作すると、落水線編集プログラム141は、新たな流域界に接するセルについて、新たな流域界を横切る方向を「無効な方向」に設定する(すなわち、そのような「無効な方向」を示す値をInvalidDirectionsに追加する)。また、消去された流域界に接するセルについて、消去された流域界を横切る方向について、「無効な方向」の設定を解除する(すなわち、そのような「無効な方向」を示す値をInvalidDirectionsから削除する)。
【0180】
その後、このセルデータに基づき落水線データの変更(ステップ207)が実行される。なお、落水線データの変更(ステップ207)の処理において、この流域界の横切る落水線を生成させないようにする。このようにして流域界を変更した後、必要に応じユーザは、図19を用いて説明した落水線付け替えの操作によって、流域内の落水線を編集する。
【0181】
以上の本発明の第2の実施形態によれば、比較的簡便なユーザインターフェースを用いて、第1の実施形態と同様の落水線の編集をすることが可能になる。
【産業上の利用可能性】
【0182】
以上述べたとおり、本発明によればユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するプログラムコンピュータプログラムが提供できる。このプログラムによって、地図に示された水路と落水線とで両者の位置および形状が異なる箇所をユーザが発見した場合、ユーザ自身が落水線を地図に示された水路に合うように編集することができるようになる。
【符号の説明】
【0183】
100 PC
141 落水線編集プログラム
191 標高データ
192 落水線データ
1911 ユーザの入力した落水線
1912 開始セル(ユーザの入力した落水線の始点)
1913 終了セル(セルユーザの入力した落水線の終点)
1921 落水線データ192に基づく、閾値以上の流域面積を持つ落水線
2111 ユーザの入力情報に基づいて生成された新たな落水線
【特許請求の範囲】
【請求項1】
コンピュータを制御する落水線編集プログラムであって、
前記コンピュータは、
前記落水線編集プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、
複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、
前記落水線編集プログラムは、
前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受ける第1手順と、
前記指定された落水線が不正であるか否かを判定する第2手順と、
前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第3手順と、
前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第4手順と、を前記プロセッサに実行させ、
前記第2手順において、前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記第3手順および前記第4手順の前に、前記指定されたセルについて、前記第1手順を再び前記プロセッサに実行させることを特徴とする落水線編集プログラム。
【請求項2】
前記落水線編集プログラムは、前記指定された落水線の終点のセルの標高が始点のセルの標高より低くなるように、前記始点または終点の少なくとも一方のセルの標高を変更する第5手順を、前記第4手順の前に前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項3】
前記第1手順において連続する複数の落水線が指定され、かつ、前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記連続する複数の落水線の先頭の落水線の始点のセルの標高より低い場合、前記第5手順は、前記先頭の落水線の始点のセルから前記末尾の落水線の終点のセルに至る落水線が経由するセルのうち、前記先頭の落水線の始点のセルおよび前記末尾の落水線の終点のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更する手順を含むことを特徴とする請求項2に記載の落水線編集プログラム。
【請求項4】
前記第1手順において一つの落水線または連続する複数の落水線が指定され、かつ、前記一つの落水線または前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記一つの落水線または前記連続する複数の落水線の先頭の落水線の始点のセルの標高より高い場合、前記落水線編集プログラムは、
前記終点のセルの下流のセルを、前記始点のセルより標高が低いセルに到達するまで探索する第6手順を前記プロセッサに実行させ、
一つ以上の前記探索された下流のセルに至る落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記探索された下流のセルに至る落水線と、既に指定された落水線とが交差する場合、前記第4手順の前に、前記終点のセルを始点とする落水線の指定を受けるために前記第1手順を前記プロセッサに実行させ、
前記第5手順は、前記始点のセルから前記探索された末尾のセルに至る落水線が経由するセルのうち、前記始点のセルおよび前記探索された末尾のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更する手順を含むことを特徴とする請求項3に記載の落水線編集プログラム。
【請求項5】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域内のセルであり、かつ、前記指定されたセルを始点とする前記指定された落水線の終点のセルが前記流域内のセルである場合、前記落水線編集プログラムは、前記流域内のセルのみを対象として、前記第4手順を前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項6】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域内のセルであり、かつ、前記指定されたセルを始点とする前記指定された落水線の終点のセルが前記流域外のセルである場合、前記落水線編集プログラムは、前記流域内のセルのみを対象として、前記第4手順を前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項7】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域外のセルであり、かつ、前記指定されたを始点とする前記指定された落水線の終点のセルが前記流域内のセルである場合、前記落水線編集プログラムは、前記流域内のセル及び前記流域外のセルを対象として、前記第4手順を前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項8】
前記第1の手順は、前記指定された落水線の終点のセルを始点とする新たな落水線の指定を受ける手順を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項9】
前記複数のセルは、第1セルおよび第2セルを含み、
前記第1の手順は、第1セル、第2セル、および、前記第1セルから前記第2セルに至る複数の連続する新たな落水線の指定を受ける手順を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項10】
前記第2手順は、前記指定された落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記指定された落水線が既に指定された落水線と交差する場合に、前記指定された落水線が不正であると判定する手順を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項11】
前記第3手順は、前記指定されたセルを始点とする複数の方向のうち、前記指定された落水線の方向以外の方向を無効方向として設定する手順と、前記指定されたセルに隣接するセルを始点とする複数の方向のうち、前記指定された落水線と交差する方向を無効方向として設定する手順と、を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項12】
前記落水線編集プログラムは、流域の境界の位置の指定を受ける第7手順をさらに前記プロセッサに実行させ、
前記第3手順は、前記指定された流域の境界に隣接する前記セルについて、前記指定された流域の境界と交差する方向を無効方向として設定する手順をさらに含むことを特徴とする請求項11に記載の落水線編集プログラム。
【請求項13】
プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、
複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、
前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受け、
前記指定された落水線が不正であるか否かを判定し、
前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定し、
前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更し、
前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記無効方向の決定および前記落水線データの変更の前に、前記指定されたセルを始点とする新たな落水線の指定を再び受けることを特徴とする落水線編集装置。
【請求項14】
前記落水線編集装置は、前記落水線データの変更の前に、前記指定された落水線の終点のセルの標高が始点のセルの標高より低くなるように、前記始点または終点の少なくとも一方のセルの標高を変更することを特徴とする請求項13に記載の落水線編集装置。
【請求項15】
前記落水線編集装置は、連続する複数の落水線が指定され、かつ、前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記連続する複数の落水線の先頭の落水線の始点のセルの標高より低い場合、前記先頭の落水線の始点のセルから前記末尾の落水線の終点のセルに至る落水線が経由するセルのうち、前記先頭の落水線の始点のセルおよび前記末尾の落水線の終点のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更することを特徴とする請求項14に記載の落水線編集装置。
【請求項16】
前記落水線編集装置は、
一つの落水線または連続する複数の落水線が指定され、かつ、前記一つの落水線または前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記一つの落水線または前記連続する複数の落水線の先頭の落水線の始点のセルの標高より高い場合、前記終点のセルの下流のセルを、前記始点のセルより標高が低いセルに到達するまで探索し、
一つ以上の前記探索された下流のセルに至る落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記探索された下流のセルに至る落水線と、既に指定された落水線とが交差する場合、前記落水線データの変更の前に、前記終点のセルを始点とする落水線の指定を受け、
前記始点のセルから前記探索された末尾のセルに至る落水線が経由するセルのうち、前記始点のセルおよび前記探索された末尾のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更することを特徴とする請求項15に記載の落水線編集装置。
【請求項1】
コンピュータを制御する落水線編集プログラムであって、
前記コンピュータは、
前記落水線編集プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、
複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、
前記落水線編集プログラムは、
前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受ける第1手順と、
前記指定された落水線が不正であるか否かを判定する第2手順と、
前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第3手順と、
前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第4手順と、を前記プロセッサに実行させ、
前記第2手順において、前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記第3手順および前記第4手順の前に、前記指定されたセルについて、前記第1手順を再び前記プロセッサに実行させることを特徴とする落水線編集プログラム。
【請求項2】
前記落水線編集プログラムは、前記指定された落水線の終点のセルの標高が始点のセルの標高より低くなるように、前記始点または終点の少なくとも一方のセルの標高を変更する第5手順を、前記第4手順の前に前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項3】
前記第1手順において連続する複数の落水線が指定され、かつ、前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記連続する複数の落水線の先頭の落水線の始点のセルの標高より低い場合、前記第5手順は、前記先頭の落水線の始点のセルから前記末尾の落水線の終点のセルに至る落水線が経由するセルのうち、前記先頭の落水線の始点のセルおよび前記末尾の落水線の終点のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更する手順を含むことを特徴とする請求項2に記載の落水線編集プログラム。
【請求項4】
前記第1手順において一つの落水線または連続する複数の落水線が指定され、かつ、前記一つの落水線または前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記一つの落水線または前記連続する複数の落水線の先頭の落水線の始点のセルの標高より高い場合、前記落水線編集プログラムは、
前記終点のセルの下流のセルを、前記始点のセルより標高が低いセルに到達するまで探索する第6手順を前記プロセッサに実行させ、
一つ以上の前記探索された下流のセルに至る落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記探索された下流のセルに至る落水線と、既に指定された落水線とが交差する場合、前記第4手順の前に、前記終点のセルを始点とする落水線の指定を受けるために前記第1手順を前記プロセッサに実行させ、
前記第5手順は、前記始点のセルから前記探索された末尾のセルに至る落水線が経由するセルのうち、前記始点のセルおよび前記探索された末尾のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更する手順を含むことを特徴とする請求項3に記載の落水線編集プログラム。
【請求項5】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域内のセルであり、かつ、前記指定されたセルを始点とする前記指定された落水線の終点のセルが前記流域内のセルである場合、前記落水線編集プログラムは、前記流域内のセルのみを対象として、前記第4手順を前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項6】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域内のセルであり、かつ、前記指定されたセルを始点とする前記指定された落水線の終点のセルが前記流域外のセルである場合、前記落水線編集プログラムは、前記流域内のセルのみを対象として、前記第4手順を前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項7】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域外のセルであり、かつ、前記指定されたを始点とする前記指定された落水線の終点のセルが前記流域内のセルである場合、前記落水線編集プログラムは、前記流域内のセル及び前記流域外のセルを対象として、前記第4手順を前記プロセッサに実行させることを特徴とする請求項1に記載の落水線編集プログラム。
【請求項8】
前記第1の手順は、前記指定された落水線の終点のセルを始点とする新たな落水線の指定を受ける手順を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項9】
前記複数のセルは、第1セルおよび第2セルを含み、
前記第1の手順は、第1セル、第2セル、および、前記第1セルから前記第2セルに至る複数の連続する新たな落水線の指定を受ける手順を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項10】
前記第2手順は、前記指定された落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記指定された落水線が既に指定された落水線と交差する場合に、前記指定された落水線が不正であると判定する手順を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項11】
前記第3手順は、前記指定されたセルを始点とする複数の方向のうち、前記指定された落水線の方向以外の方向を無効方向として設定する手順と、前記指定されたセルに隣接するセルを始点とする複数の方向のうち、前記指定された落水線と交差する方向を無効方向として設定する手順と、を含むことを特徴とする請求項1に記載の落水線編集プログラム。
【請求項12】
前記落水線編集プログラムは、流域の境界の位置の指定を受ける第7手順をさらに前記プロセッサに実行させ、
前記第3手順は、前記指定された流域の境界に隣接する前記セルについて、前記指定された流域の境界と交差する方向を無効方向として設定する手順をさらに含むことを特徴とする請求項11に記載の落水線編集プログラム。
【請求項13】
プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、
複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、
前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受け、
前記指定された落水線が不正であるか否かを判定し、
前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定し、
前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更し、
前記指定された落水線が不正であると判定された場合、前記指定された落水線について、前記無効方向の決定および前記落水線データの変更の前に、前記指定されたセルを始点とする新たな落水線の指定を再び受けることを特徴とする落水線編集装置。
【請求項14】
前記落水線編集装置は、前記落水線データの変更の前に、前記指定された落水線の終点のセルの標高が始点のセルの標高より低くなるように、前記始点または終点の少なくとも一方のセルの標高を変更することを特徴とする請求項13に記載の落水線編集装置。
【請求項15】
前記落水線編集装置は、連続する複数の落水線が指定され、かつ、前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記連続する複数の落水線の先頭の落水線の始点のセルの標高より低い場合、前記先頭の落水線の始点のセルから前記末尾の落水線の終点のセルに至る落水線が経由するセルのうち、前記先頭の落水線の始点のセルおよび前記末尾の落水線の終点のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更することを特徴とする請求項14に記載の落水線編集装置。
【請求項16】
前記落水線編集装置は、
一つの落水線または連続する複数の落水線が指定され、かつ、前記一つの落水線または前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記一つの落水線または前記連続する複数の落水線の先頭の落水線の始点のセルの標高より高い場合、前記終点のセルの下流のセルを、前記始点のセルより標高が低いセルに到達するまで探索し、
一つ以上の前記探索された下流のセルに至る落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記探索された下流のセルに至る落水線と、既に指定された落水線とが交差する場合、前記落水線データの変更の前に、前記終点のセルを始点とする落水線の指定を受け、
前記始点のセルから前記探索された末尾のセルに至る落水線が経由するセルのうち、前記始点のセルおよび前記探索された末尾のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更することを特徴とする請求項15に記載の落水線編集装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2012−37608(P2012−37608A)
【公開日】平成24年2月23日(2012.2.23)
【国際特許分類】
【出願番号】特願2010−175409(P2010−175409)
【出願日】平成22年8月4日(2010.8.4)
【出願人】(000233044)株式会社日立エンジニアリング・アンド・サービス (276)
【Fターム(参考)】
【公開日】平成24年2月23日(2012.2.23)
【国際特許分類】
【出願日】平成22年8月4日(2010.8.4)
【出願人】(000233044)株式会社日立エンジニアリング・アンド・サービス (276)
【Fターム(参考)】
[ Back to top ]