(57)【特許請求の範囲】
【請求項１】
コンピュータを制御する落水線編集プログラムであって、
前記コンピュータは、
前記落水線編集プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、
複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、
前記落水線編集プログラムは、
前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受ける第１手順と、
前記指定された落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記指定された落水線が既に指定された落水線と交差する場合に、前記指定された落水線が不正であると判定する第２手順と、
前記指定されたセルを始点とする複数の方向のうち、前記指定された落水線の方向以外の方向を無効方向として設定し、さらに、前記指定されたセルに隣接するセルを始点とする複数の方向のうち、前記指定された落水線と交差する方向を無効方向として設定することで、前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第３手順と、
前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第４手順と、を前記プロセッサに実行させ、
前記第２手順において、前記指定された落水線が不正であると判定された場合、前記第３手順および前記第４手順の前に、前記指定されたセルについて、前記指定されたセルを始点とする新たな落水線の指定を受ける前記第１手順を再び前記プロセッサに実行させることを特徴とする落水線編集プログラム。
【請求項２】
前記落水線編集プログラムは、前記指定された落水線の終点のセルの標高が始点のセルの標高より低くなるように、前記始点または終点の少なくとも一方のセルの標高を変更する第５手順を、前記第４手順の前に前記プロセッサに実行させることを特徴とする請求項１に記載の落水線編集プログラム。
【請求項３】
前記第１手順において連続する複数の落水線が指定され、かつ、前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記連続する複数の落水線の先頭の落水線の始点のセルの標高より低い場合、前記第５手順は、前記先頭の落水線の始点のセルから前記末尾の落水線の終点のセルに至る落水線が経由するセルのうち、前記先頭の落水線の始点のセルおよび前記末尾の落水線の終点のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更する手順を含むことを特徴とする請求項２に記載の落水線編集プログラム。
【請求項４】
前記第１手順において一つの落水線または連続する複数の落水線が指定され、かつ、前記一つの落水線または前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記一つの落水線または前記連続する複数の落水線の先頭の落水線の始点のセルの標高より高い場合、前記落水線編集プログラムは、
前記終点のセルの下流のセルを、前記始点のセルより標高が低いセルに到達するまで探索する第６手順を前記プロセッサに実行させ、
一つ以上の前記探索された下流のセルに至る落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記探索された下流のセルに至る落水線と、既に指定された落水線とが交差する場合、前記第４手順の前に、前記始点のセルを始点とする新たな落水線の指定を受けるために前記第１手順を再び前記プロセッサに実行させ、
前記第５手順は、前記始点のセルから前記探索された末尾のセルに至る落水線が経由するセルのうち、前記始点のセルおよび前記探索された末尾のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更する手順を含むことを特徴とする請求項３に記載の落水線編集プログラム。
【請求項５】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域内のセルであり、かつ、前記指定されたセルを始点とする前記指定された落水線の終点のセルが前記流域内のセルである場合、前記落水線編集プログラムは、前記流域内のセルのみを対象として、前記第４手順を前記プロセッサに実行させることを特徴とする請求項１に記載の落水線編集プログラム。
【請求項６】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域内のセルであり、かつ、前記指定されたセルを始点とする前記指定された落水線の終点のセルが前記流域外のセルである場合、前記落水線編集プログラムは、前記流域内のセルのみを対象として、前記第４手順を前記プロセッサに実行させることを特徴とする請求項１に記載の落水線編集プログラム。
【請求項７】
前記コンピュータは、前記各セルが流域内のセルであるか否かを示す情報をさらに保持し、
前記指定されたセルが前記流域外のセルであり、かつ、前記指定されたセルを始点とする前記指定された落水線の終点のセルが前記流域内のセルである場合、前記落水線編集プログラムは、前記流域内のセル及び前記流域外のセルを対象として、前記第４手順を前記プロセッサに実行させることを特徴とする請求項１に記載の落水線編集プログラム。
【請求項８】
前記第１手順は、前記指定された落水線の終点のセルを始点とする新たな落水線の指定を受ける手順を含むことを特徴とする請求項１に記載の落水線編集プログラム。
【請求項９】
前記複数のセルは、第１セルおよび第２セルを含み、
前記第１手順は、第１セル、第２セル、および、前記第１セルから前記第２セルに至る複数の連続する新たな落水線の指定を受ける手順を含むことを特徴とする請求項１に記載の落水線編集プログラム。
【請求項１０】
前記落水線編集プログラムは、流域の境界の位置の指定を受ける第７手順をさらに前記プロセッサに実行させ、
前記第３手順は、前記指定された流域の境界に隣接する前記セルについて、前記指定された流域の境界と交差する方向を無効方向として設定する手順をさらに含むことを特徴とする請求項１に記載の落水線編集プログラム。
【請求項１１】
プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、
複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、
前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受け、
前記指定された落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記指定された落水線が既に指定された落水線と交差する場合に、前記指定された落水線が不正であると判定し、
前記指定されたセルを始点とする複数の方向のうち、前記指定された落水線の方向以外の方向を無効方向として設定し、さらに、前記指定されたセルに隣接するセルを始点とする複数の方向のうち、前記指定された落水線と交差する方向を無効方向として設定することで、前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定し、
前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更し、
前記指定された落水線が不正であると判定された場合、前記無効方向の決定および前記落水線データの変更の前に、前記指定されたセルを始点とする新たな落水線の指定を再び受けることを特徴とする落水線編集装置。
【請求項１２】
前記落水線編集装置は、前記落水線データの変更の前に、前記指定された落水線の終点のセルの標高が始点のセルの標高より低くなるように、前記始点または終点の少なくとも一方のセルの標高を変更することを特徴とする請求項１１に記載の落水線編集装置。
【請求項１３】
前記落水線編集装置は、連続する複数の落水線が指定され、かつ、前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記連続する複数の落水線の先頭の落水線の始点のセルの標高より低い場合、前記先頭の落水線の始点のセルから前記末尾の落水線の終点のセルに至る落水線が経由するセルのうち、前記先頭の落水線の始点のセルおよび前記末尾の落水線の終点のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更することを特徴とする請求項１２に記載の落水線編集装置。
【請求項１４】
前記落水線編集装置は、
一つの落水線または連続する複数の落水線が指定され、かつ、前記一つの落水線または前記連続する複数の落水線の末尾の落水線の終点のセルの標高が、前記一つの落水線または前記連続する複数の落水線の先頭の落水線の始点のセルの標高より高い場合、前記終点のセルの下流のセルを、前記始点のセルより標高が低いセルに到達するまで探索し、
一つ以上の前記探索された下流のセルに至る落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記探索された下流のセルに至る落水線と、既に指定された落水線とが交差する場合、前記落水線データの変更の前に、再び、前記始点のセルを始点とする新たな落水線の指定を受け、
前記始点のセルから前記探索された末尾のセルに至る落水線が経由するセルのうち、前記始点のセルおよび前記探索された末尾のセルを除くセルの標高を、前記各落水線の方向が下り勾配の方向に一致するように変更することを特徴とする請求項１３に記載の落水線編集装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータを使って流域情報を編集する方法に関する。本発明は特に、数値地形モデル（digital elevation mode, DEM）に基づいてコンピュータプログラムによって作成した落水線を編集する方法に関する。
【背景技術】
【０００２】
落水線（channel network）は、水文学の基本的なデータの一種である。落水線は地表面の水が流れる方向を示す有向線分である。より正確には、水文学の対象とする時空間スケールにおける表流水の流向を示すデータであり、地図では有向線分として表現されることが多い。落水線を用いれば、流域を容易に求めることができる。ある地点の流域を求めるには、その地点から落水線を逆に（すなわち上流方向に）たどればよい。また、分布型流出モデル（流域における水の流れを再現する物理モデル）に必要な流向と勾配は、落水線に沿った地表面標高の勾配として容易に算出できる。このように落水線は水文学の調査研究において、広く使われるデータである。
【０００３】
落水線は、コンピュータプログラム（落水線作成プログラム）によって作成されることが多い。落水線作成プログラムの入力データは地表面の標高データである。これは、水文学的な時空間スケールにおいて、水の流向は地表面の最も急な下り勾配方向（最急勾配方向）と一致するという経験的知識を利用するためである。主要な落水線作成プログラムの比較、およびそれらの処理手順は、非特許文献１に詳しい。
【０００４】
落水線の表現方法は一意ではない。たとえば、落水線の方向、すなわち地表面の最急勾配方向を０以上３６０未満の角度で表す方法（非特許文献１）が考えられる。しかし、現在最も広く使われている方法（D8 Methodと呼ばれる）はそれとは異なり、落水線の方向が８方向のみで表現される（非特許文献２、非特許文献３）。D8 methodでは、セル（cell）と呼ばれる矩形の小領域の集合で地表面を表現する。この実装では、入力データとして利用する地表面の標高データが、ＤＥＭ（Digital Elevation Model）と呼ばれる表現形式をとる。ＤＥＭでは、セルごとに与えた標高値によって地表面の標高が表現される。また、あるセルを始点とする落水線は、１本かつ終点が隣接するセルとなるものに限定される。隣接するセルは８個あるので、この限定によって落水線は８方向のみとなる。このようにして作成された落水線が、水文学の調査研究で利用されている。たとえば特許文献１に開示された「全国合成レーダ雨量を用いた分布型流出予測システム」、特許文献２に開示された「洪水予測システム」が挙げられる。さらには、インターネットを介したクライアント・サーバシステムで流域分割を行う方法が提案されている（非特許文献４）。また、D8 methodと類似の方法によって８方向のみの落水線を生成する方法が特許文献３の「地下標高モデル作成方法、排水処理領域分割方法、排水処理能力評価方法および装置」に開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−８６５１号公報
【特許文献２】特開２００７−１１５８２号公報
【特許文献３】特開２００７−２０４９３２号公報
【特許文献４】特開２００９−１６３６２１号公報
【非特許文献】
【０００６】
【非特許文献１】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.
【非特許文献２】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.
【非特許文献３】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.
【非特許文献４】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.
【非特許文献５】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.
【非特許文献６】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.
【非特許文献７】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.
【非特許文献８】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.
【非特許文献９】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.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
落水線作成プログラムによって作成された落水線が、実際に水が流れる方向とは異なることがある。このような問題は、発明者らがすでに開示した発明「流域推定プログラム」（特許文献４の図６）のように、地図と落水線とを重ねて表示することで顕在化する。一般に地図には水路が示されており、これと落水線とを重ねて表示すると、両者の位置および形状の差異が明確になる。一方で発明者らは、これらの問題はごく限定された地域のみに発生すると考えたため、ごく限定されたセルのデータを専門家が直に編集すればよいと考えていた。実際に、特許文献１では「メッシュに分割された流域について、数値地図（１ｋｍメッシュ平均標高、ＫＳ−２７３：流域界位置、ＫＳ−２７２：流路位置）に基づき落水線図を作成し、さらに目視よる修正を加える。」と記述されており、このような考え方が一般的であることが推測される。
【０００８】
ところが実際には、その編集作業がきわめて困難で生産性が低いことがわかった。落水線は水文学的な時空間スケールにおける表流水の流向という、物理的意味を持ったデータである。一方、人間が落水線を任意に編集すると、この物理的意味と矛盾する不正な落水線が生成されうる。不正な落水線の例を図２３に示す（図２３は不正な落水線の例を示す説明図である）。
【０００９】
図２３（ａ）において、セル２３０１から落水線の方向に進むと、もとのセル２３０１に戻る。すなわち、セル２３０１に流れ下った水は、それ以後位置エネルギーを永遠に失わず永遠に流れ下り続ける。ポンプ等の人工設備を使わない限り、このような流れを実現できない。
【００１０】
別の例を図２３（ｂ）に示す。この例では、セル２３１１、２３１４、２３１３、２３１２の順に水が流れる。セル２３１１から出る落水線とセル２３１３から出る落水線が交差している。落水線の交差部分に立体交差を実現するサイフォンなどの人工設備を使わない限り、このような流れを実現できない。
【００１１】
さらに別の例を図２３（ｃ）に示す。この図２３（ｃ）では、地表面の標高はセル２３２１が最大で降順にセル２３２１、２３２２、２３２３、２３２４であり、落水線がセル２３２１、２３２２、２３２３、２３２４の順に通過している。この落水線は下り方向に流れているため、一見正しいように思える。しかしこの落水線は、地表面の最急勾配方向と一致していないため不正である。
【００１２】
この地形において正しい落水線を図２３（ｄ）に示す。セル２３３１、２３３２、２３３３が、それぞれ２３３４と落水線で直接結ばれている。すなわち、セル２３３１、２３３２及び２３３３から流出した水がセル２３３４に直接流れ込む。
【００１３】
水文学では１０００万本程度の落水線からなる領域を対象とすることもある。たとえば、落水線作成プログラムにより作成された落水線のわずか０．０１％を修正するとしても１０００本の落水線を編集することになる。このような不正な落水線を１本も発生させることなく落水線を編集することは事実上不可能であり、仮に可能であってもきわめて生産性が低い作業である。
【００１４】
作成された落水線は、水文学上の種々の処理、たとえばある地点の上流を特定する処理、流域面積を求める処理、または平均勾配を求める処理などに使用される。しかし、編集された落水線に上記のような不正が存在することによって、上記のような処理に支障が生じる場合がある。たとえば、図２３（ａ）のように循環する落水線を用いた場合、上流を特定する処理が正常に終了しないといった問題が発生する。
【００１５】
本発明はこの問題に鑑みてなされたものである。本発明の目的は、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供することである。
【課題を解決するための手段】
【００１６】
本願で開示する代表的な発明の概要は以下の通りである。すなわち、コンピュータを制御する落水線編集プログラムであって、前記コンピュータは、前記落水線編集プログラムが格納されるメモリと、前記メモリに格納されたプログラムを実行するプロセッサとを備え、複数のセルを含む空間における、前記各セルの標高を示す標高データ、及び、前記各セルから水が流れる方向を示す落水線データを保持し、前記落水線編集プログラムは、前記セルの指定、及び前記指定されたセルを始点とする新たな落水線の指定を受ける第１手順と、前記指定された落水線と、既に指定された一つ以上の落水線とが循環する場合、および、前記指定された落水線が既に指定された落水線と交差する場合に、前記指定された落水線が不正であると判定する第２手順と、前記指定されたセルを始点とする複数の方向のうち、前記指定された落水線の方向以外の方向を無効方向として設定し、さらに、前記指定されたセルに隣接するセルを始点とする複数の方向のうち、前記指定された落水線と交差する方向を無効方向として設定することで、前記指定された落水線の方向に基づいて、前記各セルについて落水線の生成が禁止される無効方向を決定する第３手順と、前記標高データに基づいて、前記各セルから、前記無効方向以外の方向のうち、下流方向に水が流れるように前記落水線データを変更する第４手順と、を前記プロセッサに実行させ、前記第２手順において、前記指定された落水線が不正であると判定された場合、前記第３手順および前記第４手順の前に、前記指定されたセルについて、前記指定されたセルを始点とする新たな落水線の指定を受ける前記第１手順を再び前記プロセッサに実行させることを特徴とする。
【発明の効果】
【００１７】
本発明の一実施形態によれば、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供できる。このプログラムによって、ユーザの知見を反映した落水線を短時間で生成し水文学に使用できるようになる。
【図面の簡単な説明】
【００１８】
【図１】本発明の実施形態におけるコンピュータシステムの構成を示す概略ブロック図である。
【図２】本発明の実施形態における落水線編集プログラムとハードウェア資源との相互作用を示すシーケンス図である。
【図３】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、付け替えモードにおける編集を開始した状態を示す説明図である。
【図４】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、付け替えモードにおける編集を開始した状態を示す第１の説明図である。
【図５】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、付け替えモードにおける編集を継続している状態を示す第２の説明図である。
【図６】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、付け替えモードにおける編集内容を確定している状態を示す説明図である。
【図７】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、付け替えモードにおける地形を編集している状態を示す説明図である。
【図８】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、付け替えモードにおける編集後の落水線を表示した状態を示す説明図である。
【図９】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、追加モードにおける地形を編集している状態を示す説明図である。
【図１０】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、追加モードにおける地形を編集後の落水線を表示した状態を示す説明図である。
【図１１】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、削除モードにおける地形を編集している状態を示す説明図である。
【図１２】本発明の第１の実施形態における落水線編集プログラムが提供するＧＵＩの、削除モードにおける地形を編集後の落水線を表示した状態を示す説明図である。
【図１３】本発明の第１の実施形態の落水線編集プログラムの機能モジュール構成を示すパッケージ図である。
【図１４】本発明の第１の実施形態のセルのデータ構造を示す説明図である。
【図１５】本発明の第１の実施形態の落水線編集内容の指定の処理における、落水線編集プログラムとハードウェア資源との相互作用の詳細を示すシーケンス図である。
【図１６】本発明の第１の実施形態における落水線編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図１７】本発明の第１の実施形態の地形編集内容の指定の処理における、落水線編集プログラムとハードウェア資源との相互作用の詳細を示すシーケンス図である。
【図１８】本発明の第１の実施形態の地形編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図１９】本発明の第２の実施形態における落水線編集プログラムが提供するＧＵＩの、付け替えモードにおける編集中の状態を示す説明図である。
【図２０】本発明の第２の実施形態における落水線編集内容の指定の処理のアルゴリズムを示すフローチャートである。
【図２１】本発明の第２の実施形態における落水線編集プログラムが提供するＧＵＩの、流域外の一部領域を流域として追加する場合における編集中の状態を示す説明図である。
【図２２】本発明の第２の実施形態における落水線編集プログラムが提供するＧＵＩの、流域の一部領域を流域外として削除する場合における編集中の状態を示す説明図である。
【図２３】不正な落水線の例を示す説明図である
【発明を実施するための形態】
【００１９】
最初に、本発明の概要を説明する。
【００２０】
本発明は、発明者らが見いだした、実際の流れが次の３種類に分類されるという原理に基づく。
【００２１】
流れ１：落水線として表現できる流れ。
【００２２】
流れ２：セル同士を結ぶ流れとして表現できる流れ。
【００２３】
流れ３：セル同士を結ぶ流れとして表現できない流れ（たとえば、セルよりも空間スケールが小さい流れ、水深方向に均一でない流れなど）。
【００２４】
明らかに、流れ２は流れ１を包含する。流れ２の具体的な例を図２３に示す。図２３（ａ）から図２３（ｄ）に示した流れはすべてセル同士を結ぶ流れとして表現されており、明らかに流れ２である。一方、落水線として正しい流れは前述したとおり図２３（ｄ）のみであり、落水線（流れ１）は流れ２の一部である。
【００２５】
流れ２のうち、図２３（ｃ）および図２３（ｄ）の流れは、セルを結ぶ水路内の流れとして落水線と同じ物理法則（標高の下り方向に流れる流れ）で表現できる。なぜならば、落水線が有する「水が流れる方向」が落水線のように周囲のセルの標高により決定されても、水路のように水路の壁により決定されても、標高の下り方向に流れるという流れの性質に違いがないからである。このことは、セルに比べ幅が十分広い水路は、落水線で表現できることからも明らかである。このことからも示唆されるとおり、図２３（ｃ）および図２３（ｄ）の流れが落水線として表現できない理由は直感的にわかりにくい。図２３（ａ）および図２３（ｂ）がセルの大きさを変更することでは表現できず、その表現には専用の物理モデル（ポンプまたはサイフォンなど）が必要なこととは大きく異なる。
【００２６】
一方、ユーザが「実際の流れと落水線とが違う」と考える原因は、地図に記載された水路を暗黙のうちにセルを結ぶ水路として近似表現し、その水路と落水線生成プログラムの作成した落水線とが大きく異なると判断するためと考えられる。したがって、落水線と水路とを共存させるようにすれば、ユーザにとって正しいと考えられる「落水線」が実現できる、と発明者らは考えた。
【００２７】
落水線は最急勾配方向に、水路は水路の中心線に沿って流れる。しかしどちらも、下り勾配方向に流れ下ることは共通である。したがってこれらの流れを共存させるためには、最急勾配方向でない方向に流れる落水線を許容し、かつ水路中心線に沿って下り勾配方向になるように地形を変更すればよい。ただしこの操作は、水路の上流端と落水線、および下流端と落水線とが矛盾なく接続するよう、落水線と水路の上流端とを結ぶ勾配、水路の下流端と落水線とを結ぶ勾配のどちらもが下り勾配になる場合のみ可能である。
【００２８】
以上の原理に基づき、発明者らが考案した本発明の落水線編集プログラムは以下のステップ１からステップ３によって構成される。
【００２９】
ステップ１：ユーザからセルおよび流れる方向の指定を受ける。このステップでは、ユーザに水路となるセルおよびその流れ方向を、落水線編集指示として入力させればよい。
【００３０】
ステップ２：指定されたセルの流れる方向に基づき、指定されたセルの標高を決定する。ただし、１つのセルに２種類の標高が与えられる場合、または、指定されたセルであって、上流のセルが指定されなかったセルであり、かつ、上流のセルよりも標高が高い場合、または、指定されたセルであって、下流のセルが指定されなかったセルであり、かつ、下流のセルよりも標高が低い場合、地形の編集指示に変更不可能な指示と見なし、処理を中断するか、ステップ１に戻ってユーザに水路の位置の再入力を要求する。
【００３１】
ステップ３：落水線を更新する。このステップでは、ステップ１で受け取ったセルおよび流れる方向、およびステップ２で決定された地形を用いて落水線を生成し、既存の落水線を上書きすればよい。
【００３２】
なお、本発明は、流れ１および流れ２を対象とする。セルを用いて流れ３を表現できないことは明らかである。ただし、流れ３についてはすでに知られている技術と本発明とを組み合わせて用いることで対応できる。流れ１と流れ３とを表現する方法として、たとえば非特許文献５では、流れ１を表すモデルの特定のセルを別のモデル（河川モデル）のセルに接続する方法が用いられている。また非特許文献６では、１セルで２つ以上の流れを表現する方法を提案している。これらの方法は落水線を用いるモデルに組み合わせて用いることができるため、本発明に組み合わせて用いることができる。
【００３３】
以下、落水線編集プログラムの実施形態を２つの例を用いて説明する。第１の実施形態は落水線１本ごとの編集に適しており、第２の実施形態はより広い領域における複数本の落水線の編集に適している。どちらも同じ原理に基づいているため、１つのプログラムで両方の機能を備えても矛盾は生じない。したがって、両方の機能を備えるプログラムを作成し、これらの実施形態のどちらかをユーザに選択させてもよい。
【００３４】
なお、説明の都合上、実施例において落水線はD8 methodで生成するものとする。したがって、各セルから出る落水線は１本である。また、落水線はセルの中心同士を結ぶ線分または矢印として表示される。ただし、本発明はD8 methodにのみ適用可能なわけではなく、セルにおける標高データを用いて落水線を生成し、セル同士を結ぶ有向線分として落水線を表現する場合に適用可能である。本実施例に記載した落水線生成方法D8 methodではない落水線生成方法として、たとえば非特許文献７または非特許文献８に示されたMultiple flow direction method、非特許文献９に示されたRanked flow tendency methodが挙げられる。これらの方法では、D8 methodとは異なり、各セルから出る落水線は１本以上となる。また、本実施形態に記載した落水線表示方法ではない方法として、非特許文献４（Fig.4d）に示された、セルの辺または頂点を結ぶ方法が挙げられる。
【００３５】
＜第１の実施形態＞
以下、本発明の第１の実施形態を添付図面に基づいて説明する。
【００３６】
図１は、本発明の実施の形態におけるコンピュータシステムの構成を示す概略ブロック図である。
【００３７】
本実施の形態のコンピュータシステムは、ＰＣ（Personal Computer）１００によって構成される。ＰＣ１００は、入出力部１１０を備える。入出力部１１０は、キーボード１１１およびマウス１１２などからなる入力部と、ディスプレイ１１３などからなる出力部によって構成される。ユーザは、入力部から命令を入力し、出力部から結果を確認することができる。
【００３８】
さらにＰＣ１００は、メモリ１２０およびＣＰＵ（Central Processing Unit）１３０を備える。メモリ１２０には落水線編集プログラム１４１が展開される。この落水線作成プログラム１４１はＣＰＵへの命令から構成される。ＣＰＵ１３０は、落水線作成プログラム１４１の命令に従い、計算、ＨＤＤ（Hard Disk Drive）１９０へのアクセス、および入出力部１１０との情報の交換などを行う。以下の説明において落水線編集プログラム１４１が実行する処理は、実際には、流域抽出プログラム１４１に記述された命令に従うＣＰＵ１３０によって実行される。
【００３９】
ＨＤＤ１９０には標高データ１９１、落水線データ１９２、および地図データ１９３が格納されており、落水線編集プログラム１４１はこれらのデータを読み込むこと、および書き込むことができる。なお、ＨＤＤ１９０は、ＰＣ１００に内蔵されてもよいし、ＰＣ１００の外部に接続されてもよいし、ＰＣ１００からネットワーク経由でアクセスできる別の装置に接続されてもよい。
【００４０】
標高データ１９１は、一般的にDigital elevation model（ＤＥＭ）と呼ばれるデータである。すなわち、標高データ１９１は、セルの位置とそのセルにおける地表面の標高を記載した情報である。ある位置に割り当てられるセルは唯一であるため、セルの位置情報に基づいてセルに一意な識別番号（ＩＤ）を割り当てることができる。また、この標高データ１９１では、陸域には標高値が、海域には海域を示す値が格納されている。なお、海域とは、流出口がない水域、つまり、海洋および閉塞湖沼域（水の流出口がない湖）等である。
【００４１】
落水線データ１９２は、標高データ１９１と同様にセルの位置とそのセルにおける落水線の属性とを記載した情報である。落水線の属性とは、向き、勾配などである。さらにこの属性に、そのセルより上流のセルの数、最下流のセルのＩＤなど、落水線データの解析結果を含めてもよい。このデータは、落水線生成プログラムを用いてあらかじめ作成しておく。落水線生成プログラムとして、たとえば発明者らが特許文献４で開示した発明「流域推定プログラム」を使うことができる。
【００４２】
地図データ１９３は、ユーザが落水線を編集するための判断材料となる情報であればよい。地図データ１９３として適している情報として、河川等の位置が記載された地形図などが挙げられる。
【００４３】
図２は、ＰＣ１００によって実行される落水線編集プログラム１４１とハードウェア資源との相互作用を示すシーケンス図である。
【００４４】
ＰＣ１００で落水線編集プログラム１４１が起動される。落水線編集プログラム１４１は、ＨＤＤ１９０から落水線データ１９２を読み出す（ステップ２０１）。データを読み出した落水線編集プログラム１４１は、ウィンドウ３００からなるＧＵＩ（Graphical User Interface）をディスプレイ１１３に出力する（ステップ２０２）。このＧＵＩを用いて、落水線編集プログラム１４１は、編集モードの指定を受ける（ステップ２０３）。このステップは省略可能である。このステップを実行すると、ユーザの誤操作を防ぐためにユーザの操作が制限される。さらにＧＵＩを用いて、落水線編集プログラム１４１は、ユーザから落水線編集指示を受け取る（ステップ２０４）。落水線編集プログラム１４１は、指示された落水線が不正なものであるか否かを判定し、不正なものでない場合にのみこの指示を受け取る。
【００４５】
つづいて落水線編集プログラム１４１は、ユーザによる落水線の編集指示を、地形の編集指示に変換する（ステップ２０５）。このステップでは、変換の詳細についてユーザに問い合わせを行ってもよい。本実施形態（第１の実施形態）は問い合わせる場合について説明し、別の実施形態（第２の実施形態）では問い合わせない場合について説明する。落水線編集プログラム１４１は、この地形の編集指示に従い地形を編集し（ステップ２０６）、さらに編集された地形に基づき落水線を生成する（ステップ２０７）。
【００４６】
このステップ２０７においては、落水線生成部１３２２（図１３参照）を用いて下り勾配方向の落水線が生成される。落水線生成部１３２２としては、たとえば発明者らが特許文献４で開示した発明「流域推定プログラム」を使うことができる。なおステップ２０７において、落水線生成部１３２２は、ユーザが指定した落水線に戻る（すなわち循環する）落水線、および、ユーザが指定した落水線を横切る落水線を生成させないように落水線を生成する。
【００４７】
また、後で詳細に説明するように、本実施形態では、あるセルについて無効方向が定められている場合、無効方向ではない方向のうち下り勾配方向に一致するように落水線が生成される。たとえば、上記の「流域推定プログラム」は、下りの最急勾配方向に一致する落水線を作成するが、本実施形態に「流域推定プログラム」を用いた場合、無効方向ではない方向のうち最急勾配方向に一致する落水線が作成される。
【００４８】
落水線編集プログラム１４１は、生成した落水線をＧＵＩに表示し（ステップ２０８）、落水線が意図通りであることをユーザに確認させてもよい。また、ユーザからデータを保存するコマンドを受け付けて、標高データ１９１および落水線データ１９２の書き込み（ステップ２０９および２１０）を行ってもよい。これらによって標高データ１９１および落水線データ１９２が更新される。
【００４９】
なお、落水線編集プログラムは、ステップ２０３において、「付け替え」、「追加」または「削除」のいずれかをユーザに選択させることが望ましい。
【００５０】
「付け替え」が選択された場合、ユーザが編集可能な落水線が流域内に制限される。この場合流域界が変更されないため、ステップ２０７の処理は流域内（すなわちステップ２０１で読み込んだ時点における落水線データ１９２によって特定される流域内）のみを対象にすればよい。具体的には、ステップ２０７において、落水線生成部１３２２は、流域内のセルのみについて最急勾配方向を特定し、それに基づいて落水線を作成するが、流域外のセルについては最急勾配方向を特定する処理を実行しない。
【００５１】
「追加」が選択された場合、ユーザが編集可能な落水線の始点が流域外となるよう制限される。この場合流域が拡張されるため、ステップ２０７の処理は流域外も対象にする必要がある。すなわち、ステップ２０７において、落水線生成部１３２２は、流域内のセルだけでなく、流域外のセルについても最急勾配方向を特定し、それに基づいて落水線を作成する必要がある。
【００５２】
「削除」が選択された場合、ユーザが編集可能な落水線の終点が流域外となるよう制限される。この場合流域が縮小されるため、「付け替え」の場合と同様、ステップ２０７の処理は流域内のみを対象にすればよい。
【００５３】
なお、落水線編集プログラム１４１のシーケンスにおいて重要な点は、落水線編集指示の受け取り（ステップ２０４）、落水線の編集指示を地形等の編集指示に変換（ステップ２０５）、標高データの変更（ステップ２０６）、落水線データの変更（ステップ２０７）の順に処理がなされることである。この順に処理がなされる限り、その他のシーケンスを変更させることができる。たとえば、ステップ２１０の後再びステップ２０３に戻り新たな編集作業を継続することは可能である。
【００５４】
ステップ２０３からステップ２０８に関するＧＵＩの遷移を図３から１２に示す。
【００５５】
図３は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、付け替えモードにおける編集を開始した状態（ステップ２０４）を示す説明図である。
【００５６】
図３のＧＵＩは、ディスプレイ１１３の所定の領域に表示されるウィンドウ３００からなり、キーボード１１１およびマウス１１２による入力を受け付ける。ウィンドウ３００は、少なくとも落水線表示部３１０を備え、さらに編集コマンド入力部３２０および地形断面表示部３３０を備えることが望ましい。
【００５７】
落水線表示部３１０は、少なくともステップ２０１で読み込んだ落水線データ１９２に含まれる落水線（たとえば落水線３１１など）を表示する。これらの落水線はすべて下流端セル３４３に到達する。すなわち、この状態で落水線表示部３１０に表示されているセルはセル３４３の流域である。このことを明示するため、太い線分３６２のように流域界を表すことが望ましい。セルの位置を示すために線分３６１のようにセルの辺（枠線）を示してもよい。図３の例では、線分３６１のような枠線によって格子状に区切られた矩形の各領域がセル（たとえばセル３４１）である。
【００５８】
また落水線表示部３１０は、編集対象とする落水線をユーザに指定させる機能を備える。本実施例では、マウス１１２の動きを検知しマウスポインタ３０１を動かし、マウス１１２の操作（例えば左クリック）を検知することによって編集対象とする落水線をユーザに指定させる。ユーザの操作結果をユーザにわかりやすく伝えるために、指定された落水線３１１を太線等で表示する、かつ・または指定された落水線３１１の終点にアイコン３０２を表示することが望ましい。
【００５９】
さらに落水線表示部３１０は、マウス１１２の右クリックを検知し、ユーザが落水線編集プログラム１４１に編集終了を通知するためのユーザインタフェース（コンテキストメニュー）を出現させることが望ましい。その詳細については図６で説明する。編集コマンド入力部３２０は、ユーザに「編集モード」を指定させるドロップダウンリスト３２１を備える。ドロップダウンリスト３２１は、ユーザに「付け替え」、「追加」、「削除」のいずれかを選択させる。
【００６０】
地形断面表示部３３０は、後述する落水線編集内容の指定処理（ステップ２０４）および落水線の編集指示を地形等の編集指示に変換（ステップ２０５）におけるユーザ操作を支援するためのＧＵＩである。地形断面表示部３３０は、縦軸３３１および横軸３３２を備える。後述するとおり、この横軸に沿ってあるセルをある順番に従って並べ、それらの標高を縦軸に示す。さらに、地形断面表示部３３０は、ユーザに標高値を変更させるインターフェースを備える。このようにウィンドウ３００は、少なくとも１以上の落水線を指定する機能を備える。
【００６１】
また、ウィンドウ３００の落水線表示部３１０に地図データ１９３を表示してもよい。これによって、ユーザが落水線を編集することが容易になる。この機能を実装するためには、ステップ２０１で落水線編集プログラム１４１が落水線データ１９２および地図データ１９３を読み込めばよい。
【００６２】
本実施形態では、編集コマンド入力部３２０から「付け替え」、「追加」、「削除」のいずれかをユーザに選択させることでステップ２０３を実現する。
【００６３】
第一に、ユーザが「付け替え」モードを選択した場合について図３から図８を参照して説明する。
【００６４】
ユーザは、落水線表示部３１０において１つの落水線を選択する。図３は、落水線３１１が選択された直後の状態である。選択された落水線の終点にアイコン３０２が表示され、マウスポインタ３０１を動かすことでそのアイコンが動く。このアイコン３０２は、セル３４１（落水線３１１の始点セル）に隣接する８セルのうち、マウスポインタ３０１から最も近いセルの中心のみに表示される。ユーザがマウス１１２を左クリックすることで、落水線の終点をクリックしたセルに付け替えることができる。例えば、ユーザがセル３４２上にマウスポインタ３０１を置いて左クリックすると、画面は図４に遷移する。
【００６５】
図４は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、付け替えモードにおける編集を継続している状態（ステップ２０４）を示す第１の説明図である。
【００６６】
図４のセル４４１および４４２は、それぞれ図３のセル３４１および３４２に相当する。
【００６７】
図３の落水線３１１は図４の落水線４１１に付け替えられる。さらに、この落水線４１１の下流に位置する落水線４１２が太線表示されている。これらの落水線４１１および４１２に沿った地形断面、すなわちセル４４１から４４３の標高が、地形断面表示部４３０に示されている。落水線４１１から４１２が矢印４３１から４３２に、セル４４１から４４３が矩形４５１から４５３にそれぞれ対応している。
【００６８】
この地形断面表示部４３０の左端のセル４５１の標高より右端セル４５３の標高の方が低い。この状態、すなわちユーザが指定を開始したセル（４４１）の標高より、そのセルの下流に位置するいずれかのセルの標高が低い状態において、ユーザはこの編集内容を確定すること、または編集を継続することのどちらかを選択できる。ユーザがセル４４４上にマウスポインタ４０１を置いて左クリックすると、ユーザが編集の継続を選択したと判定され、画面は図５に遷移する。
【００６９】
図５は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、付け替えモードにおける編集を継続している状態（ステップ２０４）を示す第２の説明図である。
【００７０】
図５のセル５４１、５４２および５４３は、それぞれ図４のセル４４１、４４２および４４４に相当する。
【００７１】
図４の落水線４１２は図５の落水線５１２に付け替えられる。図４同様、この落水線５１２の下流にある落水線５１３および５１４が太線表示されている。落水線５１１から５１４に沿った地形断面、すなわちセル５４１から５４５までの標高が、地形断面表示部５３０に示されている。落水線５１１から５１４が矢印５３１から５３４に、セル５４１から５４５が矩形５５１から５５５にそれぞれ対応している。
【００７２】
この地形断面表示部５３０の左端のセル５５１の標高よりも右端セル５５５の標高の方が低い。やはりこの状態で、ユーザはこの編集内容を確定すること、または編集を継続することのどちらかを選択できる。ユーザがマウス１１２を操作（たとえば右クリック）すると、画面は図６に遷移する。
【００７３】
図６は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、付け替えモードにおける編集内容を確定している状態（ステップ２０４）を示す説明図である。
【００７４】
ユーザがマウス１１２を右クリックすると、「確定」および「キャンセル」と書かれたコンテキストメニュー６０１が出現し、「確定」を選択することでユーザは編集内容を確定することができ、「キャンセル」を選択することでコンテキストメニュー６０１を非表示にすることができる。この状態でユーザが「確定」を選択すると、落水線編集プログラム１４１はステップ２０５に移行し、画面は図７に遷移する。
【００７５】
図７は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、付け替えモードにおける地形を編集している状態（ステップ２０５）を示す説明図である。
【００７６】
図７のセル７４１から７４５は、それぞれ図５のセル５４１から５４５に相当する。
【００７７】
ＧＵＩがこの状態に遷移すると、ユーザが編集コマンド入力部７２０の確定ボタン７２５、及び地形断面表示部７３０を操作することが可能になる。地形断面表示部７３０には実線の矩形（矩形７５１から７５５）および破線の矩形（矩形７５６から７５８）が描かれている。破線の矩形は図５および図６同様、セル７４２から７４４の標高を表す。実線の矩形は、地形断面表示部７３０の左端のセル７５１から右端セル７５５に向けて下り勾配になるように（すなわち、各落水線の終点のセルの標高が始点のセルの標高より低くなるように）自動的に算出された標高を表す。
【００７８】
この自動的に算出された標高がユーザの意図と異なる場合、ユーザがそれを編集できる。ユーザが実線の矩形の上辺にマウスポインタを近づけると、マウスポインタが矢印型のアイコン７０１に変化し、矩形の上辺が変更可能であることを示す。また、セル７５１からセル７５５に向けて下り勾配であれば、確定ボタン７２５は操作可能な状態となっている。すなわち、ユーザが指定を開始したセル（７４１）から、ユーザが指定を確定したセル７４５にかけて全て下り勾配である場合にステップ２０５を完了することができる。
【００７９】
この状態でユーザが確定ボタン７２５を操作（たとえば確定ボタン上にマウスポインタを置いてマウス１１２を操作）すると、落水線編集プログラム１４１はステップ２０５を完了させるとともにステップ２０６から２０８までを実行し、画面は図８に遷移する。
【００８０】
図８は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、付け替えモードにおける編集後の落水線を表示した状態（ステップ２０８）を示す説明図である。
【００８１】
図８のセル８４２から８４４は、それぞれ図７のセル７４２から７４４に相当する。
【００８２】
ステップ２０６（標高データの変更）によって、セル８４２から８４４までの標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。一方、これらのセルを始点とする落水線はステップ２０４でユーザが指定した通りに変更される。図８の例では、図７の落水線７４６から７４７が落水線８４６から８４７にそれぞれ自動的に付け替えられる。
【００８３】
ユーザは落水線表示部８１０を参照して落水線が意図通りであることを確認し、データを保存するコマンドを必要に応じて発行する。これを受けた落水線編集プログラム１４１はステップ２０９から２１０を実行する。ステップ２０９（標高データ１９１の書き込み）およびステップ２１０（落水線データ１９２の書き込み）によって、編集作業の結果がＨＤＤ１９０に保存されることになる。
【００８４】
なお、図７の地形編集処理において、始点（セル７５１）および終点（セル７５５）の標高の編集を省略することで、よりユーザの利便性を向上させることができる。ユーザがこれらのセルを選択したという事実から、ユーザは始点（セル７５１）より上流の落水線、および始点（セル７５５）より下流の落水線を正しいと判断したと解釈できるためである。
【００８５】
第二に、ステップ２０３（編集モードの指定）においてユーザが「追加」モードを選択した場合について図９から図１０を参照して説明する。
【００８６】
図９は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、追加モードにおける地形を編集している状態（ステップ２０５）を示す説明図である。
【００８７】
この図９は、落水線編集内容の指定処理（ステップ２０４）がなされた状態、すなわち図６に示したようなコンテキストメニュー６０１を通じて、落水線の編集内容がユーザによって確定された状態である。ステップ２０４においてユーザは、流域外のセルを始点とし、流域内のセルを終点とする落水線を指定する。図９では、ユーザによってセル９４１を始点とし、セル９４２を終点とする落水線９１１が指定されている。また、図４同様、この落水線９１１の下流にある落水線９１２が太線表示されている。
【００８８】
落水線９１１から９１２に沿った地形断面、すなわちセル９４１から９４３までの標高が、地形断面表示部９３０に示されている。落水線９１１から９１２が矢印９３１から９３２に、セル９４１から９４３が矩形９５１から９５３にそれぞれ対応している。この地形断面表示部９３０の左端のセル９５１の標高よりも右端セル９５３の標高の方が低い。このようにステップ２０４は、ユーザが指定を開始したセル（９４１）の標高よりも、そのセルの下流に位置するいずれかのセルの標高が低い場合に完了させることができる。また、ステップ２０５は、ユーザが指定を開始したセル（９４１）から、ユーザが指定を確定したセル９４３にかけて全て下り勾配である場合に完了することができる。
【００８９】
つづいてユーザが確定ボタン９２５を操作すると、落水線編集プログラム１４１はステップ２０６から２０８を実行し、画面は図１０に遷移する。
【００９０】
図１０は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、追加モードにおける地形を編集後の落水線を表示した状態（ステップ２０８）を示す説明図である。
【００９１】
ステップ２０６（標高データの変更）によって、セル１０４２の標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。図１０の例では、落水線１０１１から１０１４が追加される。
【００９２】
第三に、ステップ２０３（編集モードの指定）においてユーザが「削除」モードを選択した場合について図１１から図１２を参照して説明する。
【００９３】
図１１は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、削除モードにおける地形を編集している状態（ステップ２０５）を示す説明図である。
【００９４】
図９同様、この図１１は落水線編集内容の指定処理（ステップ２０４）がなされた状態、すなわち図６に示したようなコンテキストメニュー６０１を通じて、落水線の編集内容がユーザにより確定された状態を示す。ただし、「追加」モードとは逆に、この「削除」モードではステップ２０４においてユーザは流域内のセルを始点とし、流域外のセルを終点とする落水線を指定する。ここで、「流域内」とは流域界１１６２によって囲まれた流域の内側、［流域外］とはその流域の外側を意味する。流域界１１６２は、図３の流域界３６２に対応するが、流域界３６２は上記の「追加」モードの編集によって流域界１１６２に変更されている。
【００９５】
図１１では、ユーザによってセル１１４２を始点とし、セル１１４３を終点とする落水線１１１２が追加されている。図４同様、この落水線１１１２の下流にある落水線１１１３が太線表示されている。
【００９６】
落水線１１１１から１１１３に沿った地形断面、すなわちセル１１４１から１１４４までの標高が、地形断面表示部１１３０に示されている。落水線１１１１から１１１３が矢印１１３１から１１３３に、セル１１４１から１１４４が矩形１１５１から１１５４にそれぞれ対応している。この地形断面表示部１１３０の左端のセル１１５１の標高よりも右端セル１１５４の標高の方が低い。
【００９７】
なお、この図１１におけるステップ２０４は以下の通り実行された。ユーザが指定を開始したセルは１１４１であり、このセルを始点とする落水線１１１１の終点として、ユーザは流域内のセル１１４２を指定した。この時点でステップ２０４を完了することは許可されない。この時点では、セル１１４１から流出した水が、ユーザによって指定された落水線を経由して、セル１１４１より標高の低い流域外のセルに流れ込むことができないためである。このため、落水線編集プログラム１４１はコンテキストメニュー６０１の「確定」メニューを出現させず、セル１１４２を始点とする落水線の終点を指定させる操作を受け付ける。
【００９８】
つづいてユーザはセル１１４２を始点とする落水線の終点をセル１１４３に指定した。この段階で落水線１１１３が太線表示される。この落水線１１１３は、セル１１４３が指定された時点（すなわちセル１１４３の標高が編集される前の時点）における最急勾配方向を示す。落水線１１１３の終点セルであるセル１１４４の標高はセル１１４１の標高より低く、かつ、そのセル１１４４は流域外のセル（すなわち流域界１１６２の外側のセル）である。この場合、ユーザの指定に整合するように各セルの標高を変更することによって、セル１１４１を、流域界３６２が示す流域から削除することができる。このため、セル１１４３が指定された時点で、ステップ２０４を完了することが許可される。
【００９９】
コンテキストメニュー６０１の「確定」メニューをユーザが選択すると、落水線編集プログラム１４１はステップ２０４を完了させる。つづいてユーザが確定ボタン１１２５を操作すると、落水線編集プログラム１４１はステップ２０６から２０８を実行し、画面は図１２に遷移する。
【０１００】
図１２は、本発明の第１の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、削除モードにおける地形を編集後の落水線を表示した状態（ステップ２０８）を示す説明図である。
【０１０１】
図１２のセル１２４１から１２４３は、それぞれ図１１のセル１１４１から１１４３に相当する。また、図１２の落水線１２１１から１２１３は、それぞれ図１１の落水線１１１１から１１１３に相当する。
【０１０２】
ステップ２０６（標高データの変更）によって、セル１２４２から１２４３の標高が変化する。したがって、この変化の影響を受けて、これらのセルを終点とする落水線が変化する。図１２の例では、落水線１２１４が削除される。また、ユーザの指定した落水線１２１１から１２１３も流域から削除される。これに伴い流域界も図３の流域界３６２から図１２の流域界１２６２のように変更される。
【０１０３】
図１３は、本発明の第１の実施形態の落水線編集プログラム１４１の機能モジュール構成を示すパッケージ図である。
【０１０４】
落水線編集プログラム１４１は、ウィンドウ管理モジュール１３１０およびロジック管理モジュール１３２０の２つのモジュールから構成される。ウィンドウ管理モジュール１３１０には、ウィンドウ枠管理部１３１１、落水線表示部１３１２、編集コマンド入力部１３１３、および地形断面表示部１３１４が含まれる。一方、ロジック管理モジュール１３２０には、落水線編集部１３２１、落水線生成部１３２２、およびファイル入出力部１３２３が含まれる。
【０１０５】
図３に示した落水線編集プログラム１４１のＧＵＩについて、ウィンドウ３００はウィンドウ枠管理部１３１１が管理し、その内部の落水線表示部３１０、編集コマンド入力部３２０、および地形断面表示部３３０は落水線表示部１３１２、編集コマンド入力部１３１３、および地形断面表示部１３１４がそれぞれ管理する。また、図２に示した落水線編集プログラム１４１のシーケンスにおいて、落水線データ１９２の読み込み（ステップ２０１）、標高データ１９１の書き込み（ステップ２０９）、および落水線データ１９２の書き込み（ステップ２１０）は主にファイル入出力部１３２３が管理する。落水線編集指示の受け取り（ステップ２０４）、落水線編集指示を地形の編集指示に変換（ステップ２０５）、標高データの変更（ステップ２０６）は主に落水線編集部１３２１が管理する。落水線データの変更（ステップ２０７）は主に落水線生成部１３２２が管理する。落水線生成部１３２２としては、たとえば発明者らが特許文献４で開示した発明「流域推定プログラム」を使うことができる。
【０１０６】
図１４は、本発明の第１の実施形態のセルのデータ構造を示す説明図である。
【０１０７】
図１４の表１４００にセル型のデータを示す。セル型（クラス名Cell）は、Glev、IsTheBasin、LowerDirection、およびInvalidDirectionsの４つのメンバ変数を持つクラスとする。Glevは浮動小数点型であり、標高を保持する。IsTheBasinはブール型であり、セルが流域内のセルであればtrueを、そうでなければfalseを保持する。LowerDirectionは列挙型であり、水が流れる方向（８種類）、またはそのセルから水が流れないことを示す合計９種類の値のいずれかを保持する。
【０１０８】
InvalidDirectionsはビットフィールドを表す列挙型である。InvalidDirectionsが保持できる値はLowerDirection同様、セルから水が流れる方向（８種類）、またはそのセルから水が流れないことを示す合計９種類であるが、LowerDirectionとは異なりこれら９種類がそれぞれtrueまたはfalseの値を保持する。
【０１０９】
流域界３６２は、IsTheBasinを参照し流域内のセルと流域外のセルとの境界に作成される。
【０１１０】
InvalidDirectionsは、無効な落水線の方向、すなわち、落水線の生成が禁止される方向を示す。たとえば、ユーザが作成した落水線を横切る方向の値がtrueとなる。これは、ユーザが作成した落水線を横切る方向が無効な方向であること、すなわちその方向の落水線の生成が禁止されることを意味する。同様に、ユーザがあるセルを始点とする落水線の方向を指定した場合、そのセルについて、指定された方向以外の方向のInvalidDirectionsの値はtrueになる。落水線生成部１３２２はステップ２０７においてこのInvalidDirectionsを参照し、その値trueに対応する方向の落水線を生成しないようにする。なお、このセル型のデータは拡張可能であり、他の変数を持たせてもよい。
【０１１１】
以下、これらの画面遷移を実現する処理シーケンス（図２）におけるステップ２０４、２０５の詳細を説明する。これら以外のステップの処理内容は、画面遷移から明らかであるため説明は割愛する。
【０１１２】
図１５は、本発明の第１の実施形態の落水線編集内容の指定（ステップ２０４）の処理における、落水線編集プログラム１４１とハードウェア資源との相互作用の詳細を示すシーケンス図である。
【０１１３】
ステップ２０４において落水線編集プログラム１４１はユーザからの開始セル（すなわち対象とする落水線の始点セル）の指定を受け付ける（ステップ１５０１）。ユーザは入出力部１１０を通じ開始セルを指定する（ステップ１５０２）。この際、ステップ２０３で指定した編集モードが「付け替え」および「削除」の場合、流域内にあるセルのみ指定可能にする。一方「追加」の場合、流域外にあるセルのみ指定可能にする。
【０１１４】
つづいて落水線編集プログラム１４１は通過セルの指定を受け付ける（ステップ１５０３）。通過セルとは、開始セルを始点とする落水線の、終点となるセルである。図３の画面状態は、このステップ１５０２に該当する。
【０１１５】
ユーザは入出力部１１０を通じ通過セルを指定する（ステップ１５０４）。このようにして入力された落水線は、「地形編集指示に変換可能」、「地形編集指示に変換不可能」、および「不正」の３種類に判別される。これらの判別方法は後述する図１６を用いて説明する。
【０１１６】
入力された落水線が「不正」であると判定された場合、入力値は拒絶され、ステップ１５０３に戻る。それ以外の場合、落水線編集プログラム１４１は落水線編集指示を地形編集指示へ変換する（ステップ１５０５）。このステップ１５０５において標高データ１９１が読み込まれる（ステップ１５０６）。また、ステップ１５０５の処理結果が入出力部１１０に地形断面図として表示される（ステップ１５０７）。
【０１１７】
落水線編集プログラム１４１は、「地形編集指示に変換可能」な場合は確定指示またはさらなる通過セルの指定を受け付け、「地形編集指示に変換不可能」の場合はさらなる通過セルの指定を受け付ける（ステップ１５０８）。図４および５の画面状態は、このステップ１５０８に該当する。
【０１１８】
ユーザは入出力部１１０を通じ確定指示または通過セルを指定する（ステップ１５０９）。図６の画面は、このステップ１５０９において確定指示を入力している状態である。
【０１１９】
ユーザが入出力部１１０を通じ通過セルを指定した場合、ステップ１５０５に戻る（ステップ１５１０）。確定指示の場合はステップ２０４を終了する。
【０１２０】
図１６は、本発明の第１の実施形態における落水線編集内容の指定（ステップ２０４）の処理のアルゴリズムを示すフローチャートである。
【０１２１】
図１５と図１６との関係は以下の通りである；  ステップ１５０１がステップ１６０１に、ステップ１５０３がステップ１６０２−１６０３に、ステップ１５０５−１５０６がステップ１６０４−１６１０に、ステップ１５０８がステップ１６１１−１６１２に対応する。
【０１２２】
落水線編集プログラム１４１はユーザからの開始セルの指定を受け付ける（ステップ１６０１）。落水線編集プログラム１４１は、ユーザからの入力を受け付ける関数WaitUserInputを呼び出し、ユーザから入力された値をtheCellに格納する。そして、落水線編集プログラム１４１は、この値theCellは要素のない空のセル配列Cellsの最初の要素として追加する（ステップ１６０２）。
【０１２３】
ただし、編集モードが「付け替え」かつtheCellが流域外にある場合、または編集モードが「追加」かつtheCellが流域内にある場合、または編集モードが「削除」かつtheCellが流域外にある場合、落水線編集プログラム１４１はユーザからの入力を拒絶しステップ１６０１に戻る。
【０１２４】
つづいて落水線編集プログラム１４１は、ユーザからの通過セルの指定を受け付け（ステップ１６０３）、ユーザから入力された値をtheCellに格納する。このことは、セル配列Cellsの最後の要素とtheCellとを結ぶ方向の落水線（たとえば、ステップ１６０１において図４のセル４４１が指定され、ステップ１６０３においてセル４４２が指定された場合、落水線４１１）がユーザによって指定されたことを意味する。
【０１２５】
ただし、落水線編集プログラム１４１は、入力された落水線が不正なものであるか否かを判定し、不正なものである場合はユーザから入力された値をtheCellに格納しない。具体的には、次の場合、落水線編集プログラム１４１はユーザが指定した落水線を「不正」な落水線と判定してユーザからの入力を拒絶する（ステップ１６０４）；（１）theCellの値がすでにセル配列Cellsに格納されている場合、または（２）新たな落水線が既存のユーザ指定の落水線を交差する場合。
【０１２６】
なお、theCellの値がすでにセル配列Cellsに格納されていることは、入力された新たな落水線と既に入力されている落水線とがループを形成することを意味する。すなわち、図２３に記載された落水線がすべてユーザ指定の落水線であると仮定した場合、図２３（ａ）は上記（１）の場合に、図２３（ｂ）は上記（２）の場合に該当する。
【０１２７】
ユーザが指定した落水線が「不正」な落水線でない場合、ユーザが指定した落水線は、「地形編集指示に変換可能」な落水線または「地形編集指示に変換不可能」な落水線のいずれかである。この場合、落水線編集プログラム１４１はユーザから入力された値theCellをセル配列Cellsに追加する（ステップ１６０５）。この際、落水線編集プログラム１４１は、セル配列Cellsの追加前の最後の要素（変数cellとする）のInvalidDirectionsに、cellとtheCellとを結ぶ方向（すなわちユーザが指定した落水線の方向）をのぞく７方向を設定する。さらに、落水線編集プログラム１４１は、cellに隣接するセルのInvalidDirectionsに、cellとtheCellとを結ぶ方向と交差する方向を設定する。
【０１２８】
なお、このように設定されたInvalidDirectionsは、ステップ２０７において、落水線生成部１３２２によって参照される。落水線生成部１３２２は、ステップ２０７において、たとえば特許文献４に開示されたように、最急勾配法によって落水線を生成する。このとき、落水線生成部１３２２は、各セルのInvalidDirectionsを参照して、無効な方向以外の方向のうち最急勾配の方向の落水線を生成する。これによって、ユーザが指定した落水線がステップ２０７において確実に生成され、さらに、ユーザが指定した落水線と交差する落水線の生成が禁止される。
【０１２９】
つづいて落水線編集プログラム１４１は、セル配列Cellsの最後の要素、すなわちtheCellの下流のセルを変数cellに代入する（ステップ１６０６）。このtheCellの下流セルとは、theCellを始点とする落水線の終点セルのことであり、theCellとこの下流セルとは隣接する。たとえばtheCellが図４のセル４４２とすると、下流セルはセル４４３である。この下流セルは、たとえば最急勾配法によって定められる。ただし、既にtheCellについて無効な方向（InvalidDirections）が定められている場合、その無効方向を除く方向のうち最急勾配の方向の落水線が定められる。後述するステップ１６０７も同様である。
【０１３０】
落水線の始点が流域外である場合、下流セルが落水線データ１９２に存在しない。この場合、落水線編集プログラム１４１は地形データ１９１から下流セルを求めてもよいし、変数cellにtheCellを代入しステップ１６１０に進んでもよい。
【０１３１】
このステップ１６０６の終了後、落水線編集プログラム１４１は、セル配列LowerCellsを初期化（すなわちセル配列LowerCellsに含まれる全要素を削除）しておく。つづいて落水線編集プログラム１４１は、ステップ１６０６で探索した下流セルをセル配列LowerCellsに追加する（ステップ１６０８）。
【０１３２】
つづいて、落水線編集プログラム１４１は、ステップ１６０８で追加された下流セルに至る落水線が「地形編集指示に変換不可能」であるか否かを判定する（ステップ１６０９）。具体的には、セル配列LowerCellsに変数cellが含まれている場合、ユーザに指定された落水線及びその下流の落水線がループを形成する（図２３（ａ）参照）。このような場合、および、ステップ１６０８で追加された下流セルに至る落水線が、既にユーザに指定された落水線またはその下流の落水線と交差する場合（図２３（ｂ）参照）、ユーザからの入力は「地形編集指示に変換不可能」である。この場合はステップ１６０３に戻り、落水線編集プログラム１４１はユーザからのさらなる通過セルの入力を受け付ける。
【０１３３】
このセル配列LowerCellsに変数cellが含まれていない場合（ステップ１６０９）、かつ開始セルの標高よりも変数cellの標高が低い場合（ステップ１６１０）、ユーザからの入力は「地形編集指示に変換可能」である。この場合、落水線編集プログラム１４１の処理はステップ１６１１に進む。一方、開始セルの標高よりも変数cellの標高が低くない場合は、ユーザからの入力が「地形編集指示に変換可能」であるか「地形編集指示に変換不可能」であるかを判定できないため、落水線編集プログラム１４１は変数cellの下流セルを探索し、探索された下流セルを変数cellに格納した（ステップ１６０７）のち、再びステップ１６０８を実行する。
【０１３４】
図７の例では、セル７４１がユーザによって指定された開始セル、セル７４２および７４３がユーザによって指定された通過セル、セル７４４および７４５が探索された下流セルである。開始セルから通過セルに至る落水線、および、通過セルから通過セルに至る落水線がユーザ指定の落水線である。
【０１３５】
なお、図７の例では、ユーザによって指定された末尾の落水線の終点であるセル７４３の標高が、先頭の落水線の始点であるセル７４１の標高より高いため、入力された指示が地形編集指示に変換可能であるか否かを判定するために、セル７４３の下流を探索する必要があった。しかし、仮に図７の例においてセル７４４および７４５もユーザによって通過セルとして指定された場合、セル７４５の標高がセル７４１の標高より低いため、セル７４５の下流の落水線が既に指定されたセルに戻る（すなわちループが形成される）または既に指定された落水線と交差する可能性がいずれもない。このため、セル７４５の下流セルを探索する必要はない。
【０１３６】
ただし、ステップ１６０７において変数cellが流域外であるためにそれの下流セルが存在しない場合には、落水線編集プログラム１４１は地形データ１９１から下流セルを求めてもよいし、ステップ１６０３に進んでもよい。
【０１３７】
ユーザからの入力が「地形編集指示に変換可能」である場合、落水線編集プログラム１４１はユーザからのさらなる通過セルの入力、または確定指示を受け付け、ユーザの入力を変数theCellに格納する（ステップ１６１１）。変数theCellがさらなる通過セルの入力である場合はステップ１６０３に戻り、変数theCellが確定指示である場合はステップ２０４を終了する（ステップ１６１２）。
【０１３８】
図１７は、本発明の第１の実施形態の地形編集内容の指定（ステップ２０５）の処理における、落水線編集プログラム１４１とハードウェア資源との相互作用の詳細を示すシーケンス図である。
【０１３９】
落水線編集プログラム１４１は、セル標高を仮に決める（ステップ１７０１）。仮決めの方法は後述する図１８を用いて説明する。
【０１４０】
落水線編集プログラム１４１は、ステップ１７０１における仮決めの結果を地形断面図として入出力部１１０に表示し（ステップ１７０２）、ユーザからの確定指示または標高の指定を受け付ける（ステップ１７０３）。図７、図９、および図１１の画面状態は、このステップ１７０３に該当する。
【０１４１】
ユーザは、入出力部１１０を通じ確定指示または標高の指定を行う（ステップ１７０４）。ユーザが標高の指定を行った場合（ステップ１７０５）ステップ１７０３に戻り（ステップ１７０６）、確定指示の場合ステップ２０５を終了する。
【０１４２】
図１８は、本発明の第１の実施形態の地形編集内容の指定（ステップ２０５）の処理のアルゴリズムを示すフローチャートである。
【０１４３】
図１７と図１８との関係は以下の通りである；  ステップ１７０１がステップ１８０１−１８０４に、ステップ１７０３がステップ１８０５に、ステップ１７０５がステップ１８０６に、ステップ１７０６がステップ１８０７−１８０８に対応する。
【０１４４】
落水線編集プログラム１４１は、図１６のステップ１６０８で作成したセル配列LowerCellsをセル配列Cellsに追加する（ステップ１８０１）。
【０１４５】
つづいて、落水線編集プログラム１４１は、これらのセルの平均勾配AveSlopeを算出する（ステップ１８０２）。このAveSlopeの値はセル配列Cellsの最初の要素（図７の例では、セル７５１）の標高Cells.Front.Glevと最後の要素（図７の例では、セル７５５）の標高Cells.Last.Glevとの差を、落水線の長さの合計値で割ることによって求める。
【０１４６】
つづいて、落水線編集プログラム１４１は、このAveSlopeを用いてセル標高の仮の値を求める（ステップ１８０３）。セル配列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)については、標高の仮の値を求めない。これによって、最初の要素から最後の要素に至るまでに落水線が通過する隣接セル間の勾配が一定になる。図７の例では、セル７５１から７５５に至る各落水線の方向が下り勾配方向に一致するように、セル７５２から７５４までの標高が変更され、かつ、それらの勾配が一定になる。
【０１４７】
なお、この標高の仮の値は、セル配列Cellsの全要素間が下り勾配となる限り、別の方法によって求めてもよい。したがって、ユーザによって指定された全ての落水線が、最急勾配方向とは一致しないとしても、下り勾配方向とは一致する場合、セルの標高値を変更しなくてもよい（すなわち、ステップ２０５および２０６を省略してもよい）。
【０１４８】
つづいて、落水線編集プログラム１４１は、セル配列Cellsの全要素間が下り勾配であることを示すフラグIsValidUserChannelをtrueにする（ステップ１８０４）。これによって、標高の仮の値を、各セルの標高として確定することが可能になる。すなわち、フラグIsValidUserChannelがtrueになると、確定ボタン（たとえば図７の確定ボタン７２５）が表示され、それに対するユーザの操作を受け付けることが可能になる。
【０１４９】
つづいて、落水線編集プログラム１４１は、標高の仮の値を入出力部１１０に表示しユーザからの指示を受け付ける（ステップ１８０５）。落水線編集プログラム１４１は、フラグIsValidUserChannelがtrueである場合は標高の変更または確定の指示を受け付け、フラグIsValidUserChannelがfalseである場合は標高の変更を受け付ける。ユーザの指示は変数Commandに格納される。
【０１５０】
変数Commandが標高の変更の指示である場合（ステップ１８０６）、落水線編集プログラム１４１は、その指示を標高に反映し、セル配列Cellsの全要素間の勾配を計算する（ステップ１８０７）。落水線編集プログラム１４１は、すべての要素間の勾配が下り勾配の場合、フラグValidUserChannelをtrueにする。一方、いずれかの要素間の勾配が下り勾配でない（すなわち上り勾配である）場合、落水線編集プログラム１４１は、フラグValidUserChannelをfalseにして、ステップ１８０５に戻る（ステップ１８０８）。ステップ１８０６において変数Commandが標高の変更の指示である場合（すなわち確定ボタンが操作された場合）、ステップ２０５を終了する。
【０１５１】
上記のように標高を編集することによって、ユーザが指定した落水線の方向は必ず下り勾配方向と一致する。しかし、ユーザが指定した落水線が最急勾配の方向と一致するとは限らない。したがって、ステップ２０６において標高データが変更された後のステップ２０７の落水線生成を、落水線の方向を制限することなく行えば、ユーザが指定した落水線が生成されない可能性がある。このため、本実施形態では既に説明したように、ユーザが指定したセルに関して、ユーザが指定した方向以外の方向が無効な方向として登録され、落水線生成部１３２２は無効な方向の落水線を生成しない。これによって、ユーザが指定した落水線がステップ２０７の落水線生成の後も維持される。しかし、このことは、本実施形態において図２３（ｃ）のような落水線の生成が許容されることをも意味する。
【０１５２】
しかしながら、本実施形態では、既に説明したように図２３（ａ）および（ｂ）のような落水線の生成は確実に防止され、さらに、上り勾配方向の落水線も生成されない。このため、本実施形態によって生成された落水線は、水文学上の種々の処理、たとえば流域面積の算出などに支障なく使用することができる。
【０１５３】
以上のように、本発明の第１の実施形態によれば、ユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するコンピュータプログラムを提供することができる。これによって、実際の水路の形状等、ユーザの知見を反映した落水線を短時間で生成し、水文学に使用することができる。
【０１５４】
＜第２の実施形態＞
以下、本発明の第２の実施形態を添付図面に基づいて説明する。本発明の実施の形態におけるコンピュータシステムの構成を示す概略ブロック図（図１）、および、ＰＣ１００によって実行される落水線編集プログラム１４１とハードウェア資源との相互作用を示すシーケンス図（図２）は、第１の実施形態において説明したものと同じである。ただし、ステップ２０３、２０４および２０５の処理の詳細が異なる。これらの差異について言及しながら、ステップ２０１からステップ２０８について図１９から図２２を参照して説明する。
【０１５５】
図１９は、本発明の第２の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、付け替えモードにおける編集中の状態（ステップ２０４）を示す説明図である。
【０１５６】
図１９に示すウィンドウ１９００は、図３に示したウィンドウ３００と類似の機能を提供する。ただしウィンドウ３００の落水線表示部３１０ではすべての落水線を表示していたのに対し、ウィンドウ１９００の落水線表示部１９１０にはあらかじめ設定した値以上の流域面積を持つセルの落水線（たとえば落水線１９２１）、および流域界１９２２が表示される。一般に流域面積が大きいセルの落水線ほど重要なため、このようにすることで重要な落水線のみを編集対象とすることができる。また、ウィンドウ３００で提供された編集コマンド入力部３２０および地形断面表示部３３０が、ウィンドウ１９００では提供されない。本実施例においては、落水線の編集として「付け替え」のみが使用される。また、ユーザからの地形編集指示は受け付けず、ステップ１８０３で算出される仮の標高を常に採用する。したがって、編集コマンド入力部３２０を使用するステップ２０３、および地形断面表示部３３０を使用するステップ２０５は、ユーザに問い合わせを行うことなく処理される。
【０１５７】
このウィンドウ１９００は、落水線編集プログラム１４１がＨＤＤ１９０から落水線データ１９２を読み出した（ステップ２０１）後に、ディスプレイ１１３に出力される（ステップ２０２）。編集モードは常に「付け替え」である（ステップ２０３）。このウィンドウ１９００を使って、ユーザは落水線を編集する（ステップ２０４）。なお、ユーザによる編集が開始される前の時点において、ウィンドウ１９００には太い実線で示す落水線１９１１及びその両端のアイコン１９１２、１９１３は表示されていない。
【０１５８】
まず、落水線編集プログラム１４１は、流域内の任意の１セルを開始セル（ユーザの入力した落水線の始点）としてユーザに指定させ、開始セルの中心にアイコン１９１２を表示する。つづいて、落水線編集プログラム１４１は、流域内にあり、かつ開始セルよりも標高が低い任意の１セルを終了セル（すなわちユーザの入力した落水線の終点）としてユーザに指定させる。終了セルを指定すると、終了セルの中心にアイコン１９１３が表示され、さらに開始セルと終了セルとを結ぶ線分が通過するセルに落水線１９１１が表示される。
【０１５９】
この状態で、ユーザはこの落水線１９１１を確定すること、または落水線１９１１が通過するセルを変更することができる。前者の場合、ユーザは確定ボタン１９３１を操作する。後者の場合、ユーザはポリライン編集に必要な一般的な機能を使って落水線１９１１を編集する。ただし、ポリライン編集において制御点はセル上にのみ限定される。
【０１６０】
たとえば生成された落水線１９１１の形状を変更したい場合、マウス１１２を用いて落水線１９１１を構成する１セルをクリックする。するとクリックしたセルの位置にポリラインの制御点が追加され、かつマウスカーソルがマウスカーソル１９０１のように変化し、制御点が移動可能なことを表示する。ユーザはこの制御点を別のセルに移動させることができる。ユーザが確定ボタン１９３１を操作すると、ステップ２０４が終了する。
【０１６１】
つづいて、落水線の編集指示を地形等の編集指示に変換（ステップ２０５）、標高データの変更（ステップ２０６）および落水線データの変更（ステップ２０７）が実行される。この処理において、落水線生成部１３２２が対象とすべきセルはステップ２０１で読み込んだ時点における落水線データ１９２に示された流域内のみであり、流域外は対象外にできる。なぜならば、「付け替え」において流域界は変更しないためである。
【０１６２】
これらの処理によって、落水線は変更される。変更された落水線は落水線表示部１９１０に表示される（ステップ２０８）。図１９の落水線は図２１の落水線のように変更される。ユーザの指定した落水線（落水線１９１１および２１１１）は、そのユーザの指定のとおりに作成される。一方、その周囲の落水線も標高データの変更により影響を受けることによって形状が変更される。たとえば図１９の落水線１９２１は、図２１の落水線２１２１のように変更される。
【０１６３】
なお、ウィンドウ１９００は、編集コマンド入力部３２０、および地形断面表示部３３０を提供することも可能である。その場合、編集コマンド入力部３２０、および地形断面表示部３３０の操作方法は実施例１と同様となる。
【０１６４】
編集モードが「追加」の場合、ウィンドウ１９００において、流域外の任意の１セルが開始セルとして指定され、流域内にあり、かつ開始セルよりも標高が低い任意の１セルが終了セルとして指定される。
【０１６５】
編集モードが「削除」の場合、ウィンドウ１９００において、流域内の任意の１セルが開始セルとして指定され、流域外にあり、かつ開始セルよりも標高が低い任意の１セルが終了セルとして指定される。
【０１６６】
第１の実施形態と同様に、「追加」「削除」どちらの編集モードでも、ステップ２０４以外の処理は「付け替え」の場合と同じである。
【０１６７】
図２０は、本発明の第２の実施形態における落水線編集内容の指定（ステップ２０４）の処理のアルゴリズムを示すフローチャートである。
【０１６８】
まず、落水線編集プログラム１４１は、ユーザによる開始セルの指定を受け付ける（ステップ２００１）。落水線編集プログラム１４１は、ユーザからの入力を受け付ける関数WaitUserInputを呼び出し、ユーザから入力された値をtheCellに格納する。この値theCellは要素のない空のセル配列Cellsの最初の要素として追加される（ステップ２００２）。ただし、theCellが流域外にある場合、ユーザからの入力を拒絶しステップ２００１に戻る。
【０１６９】
つづいて落水線編集プログラム１４１は、ユーザからの終了セルの指定を受け付け（ステップ２００３）、ユーザから入力された値をtheCellに格納する。ただし、theCellが流域外にある場合、またはtheCellの標高が開始セルCells.First.Glevの標高以上の場合、落水線編集プログラム１４１は、ユーザからの入力を「不正」または「地形編集指示に変換不可能」な落水線として拒絶する（ステップ２００４）。この場合、落水線編集プログラム１４１はステップ２００３に戻り、再びユーザからの終了セルの指定を受け付ける。
【０１７０】
theCellが流域内にあり、かつ、theCellの標高が開始セルCells.First.Glevの標高より低い場合、落水線編集プログラム１４１は、ユーザからの入力を「地形編集指示に変換可能」であると判定し、ユーザから入力された値theCellをセル配列CtrlCellsに追加する（ステップ２００５）。
【０１７１】
つづいて落水線編集プログラム１４１は、セル配列CtrlCellsの全要素を順に結ぶ線分をセル配列に変換する（ステップ２００６）。変換方法としては、ブレゼンハム法(Bresenham’s line algorithm)など、線分をセルに変換する一般的な方法を用いればよい。このようにして最初の要素が開始セル、最後の要素が終了セルとなるセル配列Cellsが作成される。
【０１７２】
つづいて落水線編集プログラム１４１は、作成したセル配列上に落水線を表示し、ユーザからの通過セルの指定を受け付け、ユーザの入力を変数theCellに格納する（ステップ２００７）。変数theCellが確定指示、すなわち確定ボタン１９３１の操作である場合、落水線編集プログラム１４１はこのステップ２０４を終了する（ステップ２００８）。
【０１７３】
変数theCellが通過セルの指定である場合には、落水線編集プログラム１４１は、ユーザ指定の落水線がループを描く、またはユーザ指定の落水線同士が交差するという条件が真であるかを判別する（ステップ２００９）。ユーザ指定の落水線がループを描くか否かは、図１８のステップ１８０７と同様の方法で判定されてもよい。ステップ２００９の条件が偽である場合（すなわち、ユーザ指定の落水線がループを描かず、かつ、ユーザ指定の落水線同士が交差しない場合）には、落水線編集プログラム１４１はそのセルをセル配列CtrlCellに挿入し（ステップ２０１０）、ステップ２００６に戻る。条件が真である場合にはそのセルを破棄してステップ２００６に戻る。
【０１７４】
本実施例における落水線の追加および削除の処理は、流域界の追加または削除の処理の後、落水線の付け替え処理を行うことで実現する。
【０１７５】
図２１は、本発明の第２の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、流域外の一部領域を流域として追加する場合における編集中の状態を示す説明図である。
【０１７６】
図２１に示すＧＵＩは、流域界を示す線分２１２２を、マウスカーソル２１０１を用いて流域外に拡張する機能を提供する。線分２１２３は、このようにして拡張された新たな流域界である。
【０１７７】
図２２は、本発明の第２の実施形態における落水線編集プログラム１４１が提供するＧＵＩの、流域の一部領域を流域外として削除する場合における編集中の状態を示す説明図である。
【０１７８】
図２１と同様に、図２２に示すＧＵＩは、流域界を示す線分２２２２を、マウスカーソル２２０１を用いて流域内に縮小する機能を提供する。線分２２２３は、このようにして縮小された新たな流域界である。
【０１７９】
図２１および図２２に示した操作によって流域界を示す線分を移動させたのちに、ユーザが確定ボタン２２３１を操作すると、落水線編集プログラム１４１は、新たな流域界に接するセルについて、新たな流域界を横切る方向を「無効な方向」に設定する（すなわち、そのような「無効な方向」を示す値をInvalidDirectionsに追加する）。また、消去された流域界に接するセルについて、消去された流域界を横切る方向について、「無効な方向」の設定を解除する（すなわち、そのような「無効な方向」を示す値をInvalidDirectionsから削除する）。
【０１８０】
その後、このセルデータに基づき落水線データの変更（ステップ２０７）が実行される。なお、落水線データの変更（ステップ２０７）の処理において、この流域界の横切る落水線を生成させないようにする。このようにして流域界を変更した後、必要に応じユーザは、図１９を用いて説明した落水線付け替えの操作によって、流域内の落水線を編集する。
【０１８１】
以上の本発明の第２の実施形態によれば、比較的簡便なユーザインターフェースを用いて、第１の実施形態と同様の落水線の編集をすることが可能になる。
【産業上の利用可能性】
【０１８２】
以上述べたとおり、本発明によればユーザが落水線を編集することを可能にしつつ、落水線の物理的整合性を自動的に維持するプログラムコンピュータプログラムが提供できる。このプログラムによって、地図に示された水路と落水線とで両者の位置および形状が異なる箇所をユーザが発見した場合、ユーザ自身が落水線を地図に示された水路に合うように編集することができるようになる。
【符号の説明】
【０１８３】
１００  ＰＣ
１４１  落水線編集プログラム
１９１  標高データ
１９２  落水線データ
１９１１  ユーザの入力した落水線
１９１２  開始セル（ユーザの入力した落水線の始点）
１９１３  終了セル（セルユーザの入力した落水線の終点）
１９２１  落水線データ１９２に基づく、閾値以上の流域面積を持つ落水線
２１１１  ユーザの入力情報に基づいて生成された新たな落水線
【図１】
0005531365.tif 000002
【図２】
0005531365.tif 000003
【図３】
0005531365.tif 000004
【図４】
0005531365.tif 000005
【図５】
0005531365.tif 000006
【図６】
0005531365.tif 000007
【図７】
0005531365.tif 000008
【図８】
0005531365.tif 000009
【図９】
0005531365.tif 000010
【図１０】
0005531365.tif 000011
【図１１】
0005531365.tif 000012
【図１２】
0005531365.tif 000013
【図１３】
0005531365.tif 000014
【図１４】
0005531365.tif 000015
【図１５】
0005531365.tif 000016
【図１６】
0005531365.tif 000017
【図１７】
0005531365.tif 000018
【図１８】
0005531365.tif 000019
【図１９】
0005531365.tif 000020
【図２０】
0005531365.tif 000021
【図２１】
0005531365.tif 000022
【図２２】
0005531365.tif 000023
【図２３】
0005531365.tif 000024