(57)【要約】      （修正有）【課題】数値化された等高線データを用いて、従来、人間が等高線図を用いて手作業で行ってきた地形特徴を得るための手段を再現する。【解決手段】コンピュータに、等高線の形状により決定させた谷頭の候補としての情報を持ち、三次元座標の情報を持つ等高線データを記憶手段から読み込ませ、前記読み込んだ等高線データの谷頭の候補点が、標高が１ランク下位の谷頭の候補点に向かって結合線分が生成されていないとき、結合線分を順次下方に向かって生成させ、前記生成された結合線分からなる各ラインの始点を谷頭と決定させ、決定結果を記憶又は出力させるための谷頭決定プログラムである。【選択図】図２
2006091907.tif 000002
【特許請求の範囲】
【請求項１】
コンピュータに、
谷頭を含む等高線データの１ランク下位の等高線データ上のデータ点が前記起点である谷頭から所定距離内に存在するとき、該データ点を起点との結合線分の到達点の選択点とし、該選択点を含む等高線の線分を仮線分として選び、前記起点と前記各選択点とを結ぶ選択線分の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で長さが最小となる選択点を到達点として谷線データを生成させ、以後前記到達点を始点として前記線分を生成するステップを繰り返し実行させ、順次谷線データを生成させることを特徴とする谷線を生成、記憶又は出力させる地形データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、数値化した等高線を用いて、等高線に含まれる情報（標高及び地形の形状）を最大限に利用することにより、コンピュータ上にて、地形分類を行うための様々な情報を抽出、あるいは、計算するためのプログラムである。
本発明により、等高線図を用いて、技術者が手動で行っている作業（例えば、谷頭の抽出や谷線図の作成など）を、自動的に行うことが可能になる。
本発明により得られる谷頭や谷線や谷次数などの情報は、土砂災害の発生位置や被害範囲の予測に役立ち、特に、豪雨による災害に有効である。また、本発明により得られる尾根線は、雪崩の災害についての重要な情報である。さらに、本発明により得られる、斜面型（図１）や勾配や斜面方位や谷次数などは、地形の特徴を把握するための基礎資料である。
具体的には、地形分類の情報は、近年、地方自治体等が整備を進めている、住民の防災意識を高め、自然災害時における住民の避難活動を支援するハザードマップの作成に活用できる。また、近年、環境問題が重視され、地域の自然環境に目が向けられることが多くなり、各地で、自然環境を紹介するためのビジターセンターの建設が進められている。地形は、自然環境を構成する要素であり、生態系（植生含む）に深く関わっている。本発明で得られる地形情報の出力図は、ビジターセンターのような施設で展示するのに適した資料となる。さらに、林学（林業）の分野では、高精度な土壌図が必要とされ、そのための高精度な地形分類手法が要求される。この分野でも、最近は、コンピュータを用いた手法を模索している。本発明は、精度の高い数値等高線データを用いることにより、この要求に応えることが可能である。
【背景技術】
【０００２】
地形分類図は、伝統的に、地形図（等高線図）をベースにして、写真判読などをはじめとする手作業で作成されてきた。このため、写真等を正確に判読・解析するためには多大の労力と時間を要し、膨大なコストがかかるという問題があった。また、人間による手作業のため、個人差や見落としなどが存在した。
この解決策として、日本全国をカバーする標高グリッドデータ、例えば数値地図５０ｍメッシュ（標高）などを用いて、地形特徴の把握、数値地形計測及び流域解析等をコンピュータ上で行う手法が開発されている。均一に配置された標高グリッドデータを使用し、同一の手法を用いて計算を行うことにより、客観的、かつ、広範囲の地形解析を、自動的に短時間に行うことが可能である。標高グリッドデータは、日本において、最も一般的に使われるＤＥＭ（Ｄｉｇｉｔａｌ  Ｅｌｅｖａｔｉｏｎ  ｍｏｄｅｌ）（数値標高モデル）である。
ＤＥＭを得るための最新技術として、代表的なものに、レーザースキャナ、あるいは、人工衛星を用いて、地表面の位置情報（ランダムなポイントデータ）を得る手法の開発も進んでいる。レーザースキャナを用いることにより、１〜２［ｍ］間隔の、高密度のポイントデータを得ることが可能であるが、広域のデータ取得については、費用の面で問題がある。
また、地表面の位置情報を、はじめからグリッドデータの形式で得る手法は実用化されていないことから、数値等高線データやランダムなポイントデータなどから、標高グリッドデータを作成するために、様々なアルゴリズム（ｓｐｌｉｎｅ、ｋｒｉｇｉｎｇ、ｉｄｗ、ｔｒｅｎｄ、ＴＯＰＯＧＲＩＤなど）が開発されている。元の地形をできるだけ正確に再現した標高グリッドデータを作成するためには、使用するアルゴリズムの検討、および、各アルゴリズム毎に設定する計算の条件の値などの検討を十分に行う必要がある。
標高グリッドデータは規則的な配置を持つことから、ＤＥＭを一度、標高グリッドデータにしてしまえば、１）崩壊前後の標高グリッドデータの差から、崩壊や堆積の差分量を計算することは容易であり、２）標高グリッドデータから勾配や斜面方位などを計算する手法については、多くの手法が開発・紹介されており、３）各種グリッドデータを用いた地形の統計解析手法も、学会誌や書籍などで紹介されている。つまり、標高グリッドデータは、コンピュータ処理に適していて処理速度を格段に向上できる。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、上記標高グリッドデータは、取得されたＤＥＭから、どのアルゴリズムや設定値を用いるかにより、得られる標高値が異なる。また、得られた標高グリッドデータを用いて計算された勾配などについても、どの計算方法を用いるかにより、結果が変化する。加えて、標高グリッドデータから、各種のアルゴリズムを用いて得られる地形特徴を、従来の等高線図などを用いて手作業で得られる特徴に一致させることは難しい。
数値化された等高線データは、その不規則なデータ配置から、地形特徴の算出のために直接使用されることはほとんど無く、もっぱら、標高グリッドデータ取得のための基データとして使われることが多かった。
【０００４】
しかし、本発明は、数値化された等高線データを用いて、従来、人間が等高線図を用いて、手作業で行ってきた地形特徴を得るための手段を、再現することを可能にした。
本発明では、手作業のごとく、等高線や等高線から得られる落水線などに沿って、斜面の形状に関する情報の計算や判断を行い、その方法は一通りである。したがって、標高グリッドデータを用いた各種地形情報の計算のように、様々な方法があり、方法により得られる結果が異なるということは無い。また、コンピュータが普及する以前から、等高線を基にした各種の分類図（地すべり、地質、土壌、崩壊、活断層など）が作成されており、これは、貴重な情報である。等高線データをベースに出力される本発明の結果（出力図）は、これらの図や写真などとの比較が、グリッドデータの場合に比べて、はるかに容易である。また、本発明では、結果として得られる、地形情報に関する属性付のラインデータをグリッドデータに変換する手法も含んでいることから、数値データとして普及している各種グリッドデータとの組み合わせも可能であり、応用できる範囲が広い。
これまで、標高グリッドデータは、等高線データを基に作成されることが多く、その場合はグリッド化する方法による誤差が生じる。また、グリッド化によりデータが等間隔に分断されてしまうため、谷線や尾根線のような斜面の境界、さらに山頂や凹地、鞍部といった地形の特徴を考慮した計算を行うことが難しい。しかし、等高線データをそのまま使用することにより、等高線が持つ情報にしたがって忠実に斜面を分類することが可能であり、等高線で表現された谷や尾根、山頂、凹地、鞍部等を考慮して行う手作業による分類を再現することができる。
【０００５】
本発明は、上記従来の実情に鑑みてなされたもので、その目的は、従来手作業でのみ実現していた専門家レベルの判読・解析精度を維持しつつ、コンピュータ処理可能な新規の地形データ処理方法及びその装置を提供すること、具体的にはデジタル化した等高線データから落水線データおよび最急登線データを生成し、これらのデータに基づいたコンピュータ処理可能な地形分類のプログラムを提供することにある。これらのプログラムにより、地形分類図作成作業工程のほとんどの部分が自動化され、作成作業の飛躍的な効率化が図られるものである。
【課題を解決するための手段】
【０００６】
本発明の谷線を生成、記憶又は出力させる地形データ処理プログラムは、コンピュータに、谷頭を含む等高線データの１ランク下位の等高線データ上のデータ点が前記起点である谷頭から所定距離内に存在するとき、該データ点を起点との結合線分の到達点の選択点とし、該選択点を含む等高線の線分を仮線分として選び、前記起点と前記各選択点とを結ぶ選択線分の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で長さが最小となる選択点を到達点として谷線データを生成させ、以後前記到達点を始点として前記線分を生成するステップを繰り返し実行させ、順次谷線データを生成させることを特徴とする。
【０００７】
[データ構造]
本発明は、等高線データに基づいて各種のデータ処理を行うものである。
そこで先ず、等高線データのデータ構造について説明する。
図２(Ａ)は、等高線データのイメージ図である。この図において、等高線の四角内の数字はライン番号を、同じく円内の数字はポイント番号を示している。
図２（Ｂ）は、データ構造を示すもので、ファイルは、ｘ座標とｙ座標のデータを格納するｘｙファイルと、ｚ座標のデータを格納するｚファイルに分けられており、各ファイルには、前記ライン番号、ポイント番号、ＥＮＤ記号が格納されている。
本発明は、等高線データを基に、水平断面形を分類するプログラム、落水線を生成するプログラム及び最急登線を生成するプログラムを基本プログラムとし、各種の応用的なデータ処理を行う応用プログラムとから構成されている。本発明は、該応用プログラムのうちの谷線生成プログラムであり、詳細は段落００４８〜００５８において説明する。
【０００８】
前記水平断面形の分類プログラムは、選択された等高線データが隣接する等高線データの左右どちらの側に位置しているかを判別する等高線位置判別サブプログラムと、当該等高線のデータ点は尾根型斜面上に位置するか、谷型斜面上に位置するか、直線斜面上に位置するかを判定する水平断面形判定サブプログラムとから成っている。詳しくは後述する。
【０００９】
また、前記最急登線生成プログラムは、斜面下方から上方に向かって、先に生成された最急登線データの到達点を、次に生成する最急登線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する高位の等高線の全ての線分データの任意の点を到達点として、個々の最急登線線分データを生成して、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成するものである。これについても段落００２０〜００３１において詳述する。
【００１０】
さらにまた、前記落水線生成プログラムは、最急登線生成プログラムとは逆に、斜面上方から下方に向かって、先に生成された落水線データの到達点を、次に生成する落水線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する低位の等高線の全ての線分データの任意の点を到達点として、個々の落水線線分データを生成して、等高線から隣接する低位の等高線に対して最大傾斜で下る落水線を生成するものである。これについても段落００５０〜００５８において詳述する。
【００１１】
以下、前記水平断面形の分類プログラムについて、図１９〜２１を参照して詳細に説明する。
斜面の水平断面形の分類を行うためには、任意の等高線が、標高の高い等高線と低い等高線のどちらに向かって曲がっているのかを知る必要がある。
このため先ず、等高線データＭの左右どちらの側に、標高の低いあるいは高い隣の等高線データが存在するのかを判別しなければならない。
さらに、斜面の水平断面形は、等高線の形状によって分類されることから、曲線の変曲点が、水平断面形を分ける点になる。
【００１２】
［水平断面形分類プログラム］
この水平断面形分類プログラムは、選択した等高線データの線分データの任意のデータ点を最短距離線生成の参照点として選定するステップと、前記選択した等高線データに隣接する高位又は低位の等高線の線分データの任意のデータ点のうち、前記参照点から所定半径以内に存在する任意のデータ点を選択点として選定するステップと、前記選択点と前記参照点の距離を演算し、最も距離が短い選択点を到達点の候補として、仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分を含む等高線は前記選択した等高線に隣接する高位又は低位の等高線であると判断するステップと、前記参照点から隣接する高位又は低位の等高線であると判断された等高線データの各線分の任意の点に延ばされた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を落水線作成の先端点の候補とするステップと、全ての先端点の候補の中から参照点に最も近い候補を先端点として決定するステップと、前記参照点から前記先端点に向かって最短距離線を生成するステップと、前記参照点を始点とし、１つ前のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、前記先端点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積及び前記参照点を始点とし、前記先端点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、１つ後のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積の符号を演算し、前記両ベクターの外積が正であるとき、前記先端点は参照等高線データの右側に位置し、前記両ベクターの外積が負であるとき、前記先端点は参照等高線データの左側に位置すると判断するステップと、前記参照点の１つ前のデータ点から参照点までのベクターと前記参照点から１つ後のデータ点までのベクターとが成す角度が所定値以下である場合、等斉斜面であると判定し、該角度が所定値を超過する場合においては、前記先端点が参照等高線データの左右いずれの側に位置するか、前記参照点の１つ前のデータ点を始点とし、参照点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、１つ後のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積の符号が正負いずれかによって、参照等高線データに隣接する隣接等高線データが参照等高線データの左右どちら側に位置し、左右どちら側が高いか、斜面が直線状か谷型か尾根型か、によって斜面の水平断面形を分類するステップとを含み、前記参照点が選択した等高線データの終点の１つ前に達するまで前記各ステップを繰り返し実行し、前記参照点が選択した等高線データの終点の１つ前に達したとき、次の等高線データを選択して前記各ステップを繰り返し実行することにより、等高線データの始点と終点を除く全データ点について斜面の水平断面形を分類し、該分類データを記憶、出力又は送信を実行するものである。
【００１３】
以下、具体的に説明する。
［等高線位置判別サブプログラム］
先ず、１ランク低い等高線データとの位置関係をチェックするチェック１について、図１９，２０に基づいて説明する。
ステップ１０１において、等高線データを読み込み、等高線データＭ（ライン番号ｉ）のｊ番目のデータ点をｍｊ、その前後をｍｊ−１、ｍｊ＋１とおく。このとき、カウンタの値、ｃｏｕｎｔ＝０とする。
次にステップ１０３で、参照等高線データＭの参照点ｍｊにおいて、Ｍの隣に位置し、かつ、Ｍより標高が低い等高線データＫを捜す。
先ず、等高線データＭが１ランク低い等高線データＫの左右どちらの側に位置するかを調べ次いで、等高線データＭが１ランク高い等高線データＨの左右どちらの側に位置するかを調べる。以下、具体的に説明する。
【００１４】
ステップ１０４において、参照点ｍｊから等高線データＫへの最短距離の線を引き、この線とＫとの交点をｋとする。もし、点ｋが存在しない場合は、ｋの位置を判断できないため、ステップ１１７へ進む（ステップ１０５）。
参照点ｍｊからｍｊ＋１、ｍｊ−１、ｋまでのベクターをそれぞれα、γ、βとし（図５）、等高線データのｘ座標とｙ座標の値のみを用いて（Ｚ＝０とし）、外積γ×βとβ×αを計算する（ステップ１０６）。γ×β＞０、かつ、β×α＞０であるとき、点ｋは等高線データＭの右側に位置（ステップ１０８）し、図５のように、等高線データＭの右側が低いことになる。また、もし、γ×β＜０、かつ、β×α＜０であるとき、点ｋは等高線データＭの左側に位置し、等高線データＭの左側が低いことになる（ステップ１１２）。（γ×β＞０、かつ、β×α＜０）、あるいは、（γ×β＜０、かつ、β×α＞０）、あるいは、γ×β＝０あるいは、β×α＝０であるとき、点ｋは判断には適さない点であるので、ステップ１１７へジャンプする。
【００１５】
次いで、１ランク高い等高線データとの位置関係についてチェックするチェック２について説明する。
Ｍの隣に位置し、かつ、Ｍより標高が高い等高線データ（等高線データをＨ、データ点をｈとする）を使用することを除き、１ランク低い等高線データとの位置関係のチェックと同じ処理を行う。すなわち、ステップ１１７〜１２９において、等高線データＨがＭの左右どちらの側に位置するかを調べる。
参照点ｍｊからｈまでのベクターをβ’とし、等高線データのｘ座標とｙ座標の値のみを用いて（Ｚ＝０とし）、外積γ×β’とβ’×αを計算する（図５）。
γ×β’＜０、かつ、β’×α＜０であるとき、点ｈは等高線データＭの左側に位置し、図５のように、等高線データＭの左側が高いことになる。
また、もし、γ×β’＞０、かつ、β’×α＞０であるとき、点ｈは等高線データＭの右側に位置し、等高線データＭの右側が高いことになる。
（γ×β’＞０、かつ、β’×α＜０）、あるいは、（γ×β’＜０、かつ、β’×α＞０）、あるいは、γ×β’＝０あるいは、β’×α＝０であるとき、点ｈは判断には適さない点であるので、次のデータ点ｍｊ＋１を用いるためにステップ１３０へジャンプする。
等高線データＭと隣の等高線データとのトポロジー的関係を確認するために、参照点（ｍｊ＝ｍｊ＋１，ｍｊ＋２，・・）を変えながら、上記チェック１と上記チェック２の処理を３回繰り返す。このとき、チェック回数は前記カウンタの値として記録される。
【００１６】
その後、前記３回のチェックの結果得られた等高線位置データＪ［１］、Ｊ［２］、Ｊ［３］の値が、全て一致しているとき、これを等高線データのデータ領域に位置情報についての属性として書き出す。一致しないときは、データ点が等高線データの終点に到達するまでに一定数確保できる場合は、前記チェック１、２を最初からやり直す。
【００１７】
なおこの例では、データ点が等高線データの終点に到達するまでに一定数確保できない場合は、一致するデータを１、２番目のカウンタの等高線位置データＪ［１］、Ｊ［２］とし、Ｊ［３］のデータを取り直す。また、次のデータ点が等高線データの終点である場合は、前記３回のチェックの結果得られた等高線位置データＪ［１］、Ｊ［２］、Ｊ［３］の値のうち一致するものを、等高線データファイルに、属性として位置情報を書き出すこととしている。
また、前記位置情報の内容は、等高線の右側が低いか、左側が高いとき、１、等高線の右側が高いか、左側が低いとき、２としている。
この具体例では、各等高線データの二番目のデータ点からチェックが開始され、参照点を変えながら、３回同じ位置関係が認められたとき、その位置関係を正として受け入れるようにしているが、チェック開始データ点、実施回数は特にこれに限定されず、適宜回数実施すればよい。
【００１８】
［水平断面形の判定サブプログラム］
図２１のステップ１６１において、前記等高線位置判別サブプログラムで作成された、等高線データと各等高線データの位置情報Ｊの値、すなわち、１か２を読み込む。
次のステップ１６２で、直線斜面を定義するγを入力する。この例ではγを５°としている。
次のステップ１６４で、等高線データＭのデータ点ｍｊにおいて、データ点ｍｊからデータ点ｍｊ＋１へ向かうベクターをαｊとおくとき、等高線データＭの全てのデータ点において、αｊ−１とαｊの成す角θｊと、外積αｊ−１×αｊを計算する（図７参照）。但し、Ｍの始点と終点では計算しない。
もし、点ｍｊ＋１での外積の符号が、点ｍｊでの外積の符号と異なる場合は、点ｍｊとｍｊ＋１との中点を変曲点とし、等高線データＭに新たなデータ点として加える。
【００１９】
次いで、元の等高線データＭの全てのデータ点において、斜面の水平断面形を判定する。
等高線データＭの両側に、等高線データＨとＫが存在するとき、等高線データＨ、Ｍ、Ｋの標高をそれぞれ、ＥＨ、ＥＭ、ＥＫとする（ＥＨ≧ＥＭ≧ＥＫ。ただし、ＥＨ＝ＥＭ＝ＥＫである場合は除く。）。このとき、αｊ−１×αｊ＜０であれば、ラインｍｊ−１ｍｊｍｊ＋１は等高線データＭの左側に突き出る（図７Ａ）。また、αｊ−１×αｊ＞０であれば、ラインｍｊ−１ｍｊｍｊ＋１は等高線データＭの右側に突き出る（図７Ｂ）。
もし、外積αｊ−１×αｊ＝０である場合は、ｍｊ−１ｍｊｍｊ＋１は直線であり、ベクターαｊ−１とαｊの角θｊは０°に等しい（０°≦θｊ＜１８０°）。
点ｍｊにおける斜面の水平断面形は、下記の要領で分類される。
ケース１．αｊ−１×αｊ＝０（θｊ＝０°）：直線斜面（ステップ１６６）
ケース２．αｊ−１×αｊ＜０  かつ  等高線データＨ（Ｋ）が等高線データＭの左（右）側に位置する：  集水（谷型）斜面（図７Ａ、ステップ１６９）
ケース３．αｊ−１×αｊ＜０  かつ  等高線データＨ（Ｋ）が等高線データＭの右（左）側に位置する：  発散（尾根型）斜面（図７Ａ、ステップ１７０）
ケース４．αｊ−１×αｊ＞０  かつ  等高線データＨ（Ｋ）が等高線データＭの左（右）側に位置する：  発散（尾根型）斜面（図７Ｂ、ステップ１７３）
ケース５．αｊ−１×αｊ＞０  かつ  等高線データＨ（Ｋ）が等高線データＭの右（左）側に位置する：  集水斜面（図７Ｂ、ステップ１７４）
計算上、θｊ＝０°となることはまれであるから、直線斜面を定義するγに対して、幅を持たせる必要がある。このため、本例では、γを±５°で計算している。
以上で水平断面形分類プログラムについての説明を終了し、次いで最急登線プログラムについて説明する。
【００２０】
［最急登線生成プログラム］
このプログラムは、任意の等高線データのデータ点から、１ランク上の等高線データのうち最も近いデータ点に対し最急登線を生成するプログラムである。
この発明は、コンピュータに、先に生成された最急登線データの到達点を次に生成する最急登線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する高位の等高線の全ての線分データの任意の点を到達点として、個々の最急登線線分データを生成させて、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させる地形データ処理プログラムであって、該地形データプログラムは、任意の等高線データの線分データの任意のデータ点を最急登線生成の起点として選定する第１のステップと、上記選択した等高線データに隣接する高位の等高線の線分データの任意のデータ点のうち、前記起点からの距離が短いものが優先的に選ばれた任意のデータ点を選択点として選定する第２のステップと、前記選択点と前記起点の距離を演算し、最も距離が短い選択点を到達点の候補として、前記優先的に選ばれた任意のデータ点を含む等高線の線分である仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分の到達点を含む等高線は前記選択した等高線に隣接する高位の等高線であると判断する第３のステップと、前記起点から隣接する高位の等高線であると判断された等高線データの各線分の任意の点に引かれた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を最急登線作成の到達点の候補とする第４のステップと、全ての到達点の候補の中から起点に最も近い候補を到達点として決定する第５のステップと、前記起点から前記到達点に向かって最急登線線分データを生成する第６のステップとを含み、コンピュータに、前記決定した到達点を次に生成する最急登線線分データの起点として、前記第２乃至第６のステップを順次繰り返し実行させ、上記到達点の候補が全く存在せず最急登線の終点に到達したと判断されたとき、任意のデータ点を選択した後前記第１と第２のステップの間にジャンプして前記第２乃至第６のステップを繰り返し実行させ、前記選択した任意のデータ点が前記任意の等高線データの最後のデータであると判断されたとき、まだ始点とするために用いていない等高線データを選択して前記第１と第２のステップの間にジャンプして前記第２乃至第６のステップを繰り返し実行させ、始点とするために用いていない等高線データがないと判断されたとき処理を終了することにより、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させるための地形データ処理プログラムである。
【実施例１】
【００２１】
本実施例は、等高線データの全データ点に、ｒｉｓｅ＿ｉ［等高線データのライン番号］［等高線データのポイント番号］＝−１（既成の最急登線が存在するときに、その最急登線番号を入れる）と、ｒｉｓｅ＿ｊ［等高線データのライン番号］［等高線データのポイント番号］＝−１（その点から最急登線を引けないときは−１０，既成の最急登線が存在するときは、その点での既成の最急登線のポイント番号を入れる）という属性を与える（ステップ２０３）点に特徴がある。
このことにより、既に最急登線データを生成したか否か、又は、生成しようとして不可能であったか否かを判別できるようにする。
【００２２】
図２２、２３のフローチャートを参照して、本実施例について説明する。
ＣＰＵは、ステップ２０１において等高線データ全てを読み込み、次のステップ２０２で最初にライン番号がｎである等高線データをＭｎ、Ｍｎのｎｎ番目のデータ点をｍｎｎ、作成する最急登線データの最急登線番号をｓ、最急登線番号ｓである最急登線データをＷｓ、Ｗｓのｓｓ番目の点をｗｓｓとする。
ステップ２０３では、等高線データの全データ点に上述の属性を与える。
次いで、ｎ，ｓ，ｎｎに順次１をデータセットして起点ｍ＝ｍｎｎと定義したうえで、ｓｓ＝１とデータセットする（ステップ２０５〜２０８）。
【００２３】
本実施例の特徴的な部分として、ステップ２０９において、最急登線データのデータ点の属性ｒｉｓｅ＿ｉ［ｎ］［ｎｎ］が正であるか否か、そして、ステップ２１０において、最急登線データを生成しようとして不可能であったか否かを判断する。
このステップ２０９，２１０により、既に最急登線データが生成されているか否かが判断される。
このとき、当該データ点ｍを起点とする最急登線データが既に生成されていたら、新たに最急登線データを生成することなく、ステップ２１１、２１３に移り、最急登線データのポイント番号が１であるか否か、また、ｍがＭｎの終点であるか否か判断し、終点でなければ、次のデータ点を選択（ｎｎ＝ｎｎ＋１）（ステップ２１４）してステップ２０７に戻る。ｍがＭｎの終点であれば、Ｍｎがライン番号最大の等高線データか否か判断し、Ｍｎがライン番号最大の等高線データでなければ、次の等高線データを選択（ｎ＝ｎ＋１）（ステップ２１６）してステップ２０６に戻り、Ｍｎがライン番号最大の等高線データであれば、始点とするために用いていない等高線データがないと判断されるから、最急登線プログラム最急登線データの生成処理を終了する。
【００２４】
前記ステップ２１０において、最急登線データのポイント番号が−１０であるか否かを判断する。この属性−１０については後述するが、既に、ｍから最急登線データを延長させようとして不可能であった、換言すれば、当該データ点は最急登線の終点であると判断されるので、ｍを始点とする最急登線線分データは発生させないで、次のステップ２１１に移る。
最急登線データのポイント番号が−１０でないときは、ｍを最急登線データＷ（最急登線番号ｓ）の発生点とする。このとき、ｍはＷのｓｓ番目の点（初期値ｓｓ＝０）となる（実際には、ステップ２０８にて、ｍはＷの１番目の点とされる）。
【００２５】
次いで、ステップ２１７において、当該等高線データＭｎより標高が１ランク高い等高線データはあるか否か判断し、なければ、当該最急登線データの終点であると判断されるから、ステップ２６６において、−１０という属性を付与して、ステップ２１１に戻る。
次いで、ステップ２１７〜２１８において、当該等高線データＭｎより標高が１ランク高い等高線データがあり、かつ、Ｍｎより高い等高線データのデータ点が前記起点ｍの半径Ｒ以内にあるとき、標高が１ランク高い等高線データの全てのデータ点のうち、起点ｍから所定半径Ｒ以内に存在するデータ点を全て選択し、選択した全てのデータ点にフラグ１を立てる（ステップ２１９）。
ステップ２１７において、当該等高線データＭｎより標高が１ランク高い等高線データがないとき、および、ステップ２１８において、Ｍｎより高い等高線データのデータ点が起点ｍの半径Ｒ以内にないときは、その起点は最急登線データの終点であって、ｍから最急登線の線分を上方へ引くことはできないから、そのデータ点に−１０の属性を与えて、ステップ２１１に戻る。
上記の所定半径Ｒは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Ｒは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、Ｒ＝１５０ｍとした（１：２５，０００地形図上では６ｍｍとなる）。Ｒの選択は、計算時間に影響するので重要である。
【００２６】
ＣＰＵは、選択されたデータ点と前記起点ｍの距離を演算（ステップ２２０）し、最も距離が短い選択点をデータ点ｔ１とし、該データ点ｔ１を含む等高線の等高線データをＴとする（ステップ２２１）とともに、起点ｍから半径Ｒ以内に存在する全てのデータ点を含む等高線のデータ線分（同じ等高線データ上の連続する二つのデータ点をつなぐ線分）を選択する（ステップ２２２）。
次いで、選択されたこれらの等高線データの線分（以下「仮線分」という。）を用いて、標高が１ランク高い等高線データＴが選択された等高線データＭｎの隣りに存在するかどうかを調べる。
ｔ１がＭｎの隣りの等高線データのデータ点であれば、線分ｍｔ１はどの仮線分とも交差することはない（図３、Ａ）。
しかし、ｔ１がＭｎの隣りの等高線データのデータ点でないならば、線分ｍｔ１は上記したいずれかの仮線分と交差する。
よって、ステップ２２３において、線分ｍｔ１が仮線分と交差すると判断されたときは、ｔ１を選択点の中から除去（ステップ２２４）するため前記フラグを消去し、他に選択点がある限り（ステップ２２５）ステップ２２１に戻って起点ｍに最も近い点を演算により選んで、ステップ２２２、２２３に進んでこの処理を繰り返す。ステップ２２５において他に選択点がないときは、前述した手順でステップ２１１に戻る。
このとき、全ての選択点を用いても標高が１ランク高い等高線データを決定できない場合は、データ点ｍを最急登線データの終点とする。
【００２７】
一方、線分ｍｔ１が仮線分と交差しないと演算により判断されたときは、等高線データＴは等高線データＭｎの隣りに存在するものとして、
Ｔ＝Ｑ、ｔ１＝ｑｊとする（ｑｊはＱのｊ番目のデータ点）。
このとき、ｋ＝ｊ，ｋｋ＝ｊとし、データ点ｑｊの前後のデータ点についても、仮線分と交差するか否か調べるために、
ｍｉｎ＝ｊ−５（但し、ｊ−５＜０ならｍｉｎ＝１）とし、
ｍａｘ＝ｊ＋５（但し、ｊ＋５＞［Ｑのポイント番号の最大値］なら、ｍａｘ＝［Ｑのポイント番号の最大値］）とする（ステップ２２６）。
次いで、起点ｍと標高が１ランク上の隣接する等高線データＱのデータ点ｑｊの前後（この例では、前後５つずつ）のデータ点との線分（ｑｊ＋５．．．．  ｑｊ−５）は仮線分と交差するかについて調べ（ステップ２２７〜２２９，２３１〜２３３）、起点ｍと各データ点との線分が仮線分と交差しないものを最急登線作成の先端点ｗの候補とする（ステップ２３０．２３４）。
さらに、起点ｍから、ｑｋ＋１とｑｋを通る直線とｑｋｋ−１とｑｋｋを通る直線に垂線をおろして交点をｐｋ、ｐｋｋとし（ステップ２３８．２４４）、ｐｋ、ｐｋｋは線分ｑｋ＋１ｑｋ、ｑｋｋ＋１ｑｋｋの上にあり、かつ、ｍｐｋ、ｍｐｋｋの線分は仮線分と交差しないものについて、最急登線作成の先端点ｗの候補とする（ステップ２４１．２４７）。
そして、すべての先端点の候補の中から起点ｍに最も近い点を最急登線作成の先端点ｗとして選び（図４参照）、ｍとｗを結んで最急登線を生成し、生成した最急登線データは、最急登線データファイルに記憶される（ステップ２５０．２５１）。
【００２８】
ここでさらに、１ランク上の隣接する等高線データへの最急登線を生成するために、等高線データＱをＭに、データ点ｗをｍに置換し（ステップ２５２）、ｓｓを１インクリメントしてステップ２５４に進み、ｍが等高線データのデータ点でないとき、ステップ２１７に戻って次の最急登線データの生成処理に入る。
一方、ｍが等高線データＭｉのデータ点ｍｉｉであるときは、ｒｉｓｅ＿ｊ［ｉ］［ｉｉ］が−１０か、またｒｉｓｅ＿ｉ［ｉ］［ｉｉ］が−１か否か判断し、−１０であれば、ｍは終点であり、−１であれば、ステップ２１７に戻り最急登線データの生成処理に入る。
前記ステップ２５６において、ｒｉｓｅ＿ｉ［ｉ］［ｉｉ］が−１でないときは、ｍｉｉを通る最急登線データが既に存在する。そして、ｍｉｉはｒｉｓｅ＿ｉ［ｉ］［ｉｉ］番目の最急登線データのｒｉｓｅ＿ｊ［ｉ］［ｉｉ］番目の点である（ステップ２５８）。
【００２９】
このときは、この最急登線データＷｓに、当該データ点ｍから既に生成された最急登線データのｒｉｓｅ＿ｊ［ｉ］［ｉｉ］＋１番目の点から終点までのデータを接続する（ステップ２５８）。
次いでステップ２５９において、Ｗの始点からｓｓ−１番目の点（ｓｓ番目の点がｍである）について調べる。
ライン番号ｒの等高線データＭｒのｒｒ番目のデータ点ｍｒｒと一致する点については、等高線データ点に、ｒｉｓｅ＿ｉ［ｒ］［ｒｒ］＝Ｗｓのライン番号，ｒｉｓｅ＿ｊ［ｒ］［ｒｒ］＝Ｗｓでのポイント番号、という属性を与える。
なお、ステップ２４８において、ｗの候補が全く存在しないときは、ステップ２６６の処理をした上で、ステップ２１１に戻る。
また、ステップ２５６において、最急登線データのライン番号が−１であるときは、最急登線データは存在しないのであるから、ステップ２１７に戻る。
さらに、ステップ２５５において、最急登線データのポイント番号が−１０であるときは、ｍを最急登線データＷの終点として、ステップ２５９〜２６４の処理をして、ステップ２１３に戻る。
【００３０】
当該等高線データの最後のデータ点からの最急登線データの生成が終了したら、１ランク上の等高線データの最初のデータ点から最急登線データを生成し、順次この処理を実行し、ライン番号が最大の等高線データに到達したとき最急登線データの生成を終了する。
【００３１】
なお、本実施例においては、ステップ２０３において等高線データの全データ点に、ｒｉｓｅ＿ｉ［等高線データのライン番号］［等高線データのポイント番号］＝−１と、ｒｉｓｅ＿ｊ［等高線データのライン番号］［等高線データのポイント番号］＝−１という属性を与えているが、このステップは省略することも可能である。
この場合のプログラムのフローチャートは、図４１、４２のようになる。
【００３２】
［落水線生成プログラム］
次いで、落水線生成プログラムについて説明する。
前記最急登線生成プログラムが任意の等高線データのデータ点から、１ランク上の等高線データの最大傾斜で登るデータ点に対して、最急登線を生成するものであるのに対し、このプログラムは反対に、任意の等高線データのデータ点から、１ランク下の等高線データの最大傾斜で下るデータ点に対し、落水線を生成するものである。
そして、このプログラムについては、後述する谷線生成プログラムにおいて実際に使用しているので、その際に詳しく説明する。
以上、本発明の基本プログラムについて説明した。
次いで、各種の応用プログラムについて説明する。
本出願に係る応用プログラムは、要旨外の谷頭決定プログラム（段落００３３〜００４７参照）、請求項１に係る谷線生成プログラム（段落００４８〜００５８参照）、要旨外の尾根線生成プログラム（段落００５９〜００６７参照）、要旨外の谷次数計算プログラム（段落００８１〜００９０参照）、要旨外の谷次数と斜面の垂直断面形の組合せプログラム（段落００９１〜０１１１参照）及び要旨外の属性をもったラインデータをグリッド化するプログラム（段落０１１２〜０１３２参照）である。以下、これら応用プログラムについて順に説明する。
【００３３】
［谷頭の決定プログラム］
谷線や尾根線は、山地全体の形状を把握するために重要な情報である。特に谷頭は、山地における侵食の起源であり、谷の最上部であり、風化や重力などによって斜面の後退が起きる（谷頭侵食）。この谷頭の時間的経緯に伴う移動の速度、方向は、山地の侵食と地形変化およびその速度を予測する上で重要である。
本発明は、出来る限り伝統的な手作業に近い手順で、数値等高線データのデータ点の中から、谷頭に該当する点を選び出すものである。
ここでいう谷頭とは、山地において最初に谷型斜面が顕れた谷の最上部を意味する。
【実施例２】
【００３４】
図２６を参照して説明する。
このプログラムは、最初に谷型斜面であることを規定する上限角度を決定するために、その角度を入力して定義する。
そして、段落００１２〜００１９において既に述べた水平断面形分類プログラムを実行し、水平断面形の分類データを出力する。
次いで、この水平断面形の分類データを読み込んで１単位ラインの属性を解析する。
【００３５】
本実施例は、前記水平断面形分類プログラムによって谷型斜面として分類された一単位のラインを用いることにより、谷線の始点となる谷頭の定義を行う。
本実施例では、θｊ＜５°であるとき、データ点ｍｊにおける水平断面形は直線斜面として取り扱う。
谷頭を定義するための項目としては、本実施例では、谷型斜面の角度ｓ１Ｐｓ２を用いて谷頭を定義しているが、谷型斜面の幅（Ｄ１）や谷型斜面の深さ（Ｌ／Ｄ１）を用いて定義しても良いこと勿論である（図１０参照）。
【００３６】
[１単位ラインの属性解析プログラム]
図４９を参照して説明する。
最初に、上述した基本プログラムである水平断面形分類プログラムの出力結果を読み込み、各等高線データを水平断面形によって分類し、分類したラインを一単位として、一単位ライン毎に書き出すラインファイルを作成する。分類したラインのライン番号をｓとする（ステップ４０１）。
【００３７】
次いで、読み込んだ等高線データをＭ（ライン番号ｉ）とし、Ｍの始点をｍ１、終点をｍｎ、ｊ番目の点をｍｊとする。このとき、ライン番号ｓ＝１とする。
そして、Ｍがポリゴンか否かを判断（ステップ４０３）し、ポリゴンであれば、データ点の始点と終点のフラグが同じであるか否か調べ（ステップ４０４）、同じでなければｍ１とｍｎ−１の中点を一単位の始点とし（ステップ４０５）、同じであればｍ１を一単位の始点とする（ステップ４０６）。
ステップ４０３においてポリゴンでないと判断されたときは、ｍ１を一単位の始点とする（ステップ４０７）。
【００３８】
次いで、次の点ｍｊを読み込んで、読み込んだ点が終点のひとつ手前であるか否か判断（ステップ４０９）し、読み込んだ点が終点のひとつ手前であるときは、ｎ＝３であるか判断し、ｎ＝３のときは、ｍｎを一単位の終点として（ステップ４１１）、次のステップ４１２でサブルーチンＯｐｔｉｏｎ１（図５０参照）に進む。
また、ｎ＝３でないときは、読み込んだ点とひとつ前の点のフラグが等しいかどうか調べ（ステップ４１３）、等しいときは読み込んだ点のひとつ先の点を一単位の終点とし（ステップ４１４）、等しくないときは読み込んだ点とひとつ前の点の中点を一単位の終点とする（ステップ４１６）して、それぞれ前記サブルーチンＯｐｔｉｏｎ１に進む。
上述のステップ４０９において、今回読み込んだ点が終点のひとつ手前でないときは、今回読み込んだ点とひとつ前の点のフラグが等しいかどうか調べ（ステップ４２０）、等しくないときは読み込んだ点とひとつ前の点の中点を一単位の終点とし（ステップ４２１）て、サブルーチンＯｐｔｉｏｎ１に進み、等しいときはさらに先のデータ点を読み込んで（ステップ４２４，４０８）、上記処理を繰り返す。
【００３９】
サブルーチンＯｐｔｉｏｎ１の処理内容の概要は、図１０、１１、５０を参照して、上述の処理にて一単位の始点と終点が決定されたので、以後所定の谷の深さや尾根の突出があるか否かを判断し、所定の谷の深さや尾根の突出がある一単位のラインについて谷型または尾根型の属性を与え、それ以外のものには直線の属性を与える処理を実行するものである。
【００４０】
先ず、一単位の始点と終点との直線距離Ｄ１を演算する（ステップ４３１）。
次いで、直線Ｄ１に対して一単位のライン上の始点と終点を除く各データ点から垂線を下ろし、それぞれの垂線長を求め、最長のものをＬ、Ｌの端点であるデータ点（ポイント番号ｂ）を決定する（ステップ４３２）。このポイント番号ｂのデータ点を谷型斜面あるいは尾根型斜面の頂点とする。
そして、一単位の始点とポイント番号ｂのデータ点の長さ（ｓ１ｐ）と、一単位の終点とポイント番号ｂのデータ点の長さ（ｓ２ｐ）を計算し、線分ｓ１ｐ，線分ｓ２ｐ，線分Ｄ１を用いて谷型斜面、あるいは、尾根型斜面の角度ωを計算する（ステップ４３３）。
角度は、次式を用いて計算する。
【００４１】
（式１）
2006091907.tif 000003
始点、終点を除く一単位ライン上の全データ点での水平断面形は同じである。そこで一単位のライン毎に、直線：０、尾根型：１、谷型：−１の属性を付与する（ステップ４３４）。
一単位のライン毎に、水平断面形（ｒ）という属性と共に、ｘｙ座標を書き出す（ステップ４３５）。
このとき、一単位の始点が連続する二つのデータ点（仮にｍｊ−１とｍｊ）の中点であるときは、ｍｊから書き出す。同様に、一単位の終点が連続する二つのデータ点（仮にｍｊ−１とｍｊ）の中点であるときは、ｍｊ−１まで書き出す
書き出されるファイルの内容は下表の通りとなる。このファイルをｆｉｌｅ＿ｘｙｒ１とする。
【００４２】
（表１の１）
2006091907.tif 000004
ｆｉｌｅ＿ｘｙｒ１の構造
（表１の２）
2006091907.tif 000005
このとき、ω＜ａである谷型斜面の頂点（ポイント番号ｂ）にあたるデータ点であるときは、ｒ＝−１０、谷型斜面で頂点以外のデータ点であるときは、ｒ＝−１、ω＜ａである尾根型斜面の頂点（ポイント番号ｂ）にあたるデータ点であるときは、ｒ＝１０、尾根型斜面で頂点以外のデータ点であるときは、ｒ＝１、それ以外は、ｒ＝０の属性を与える（ステップ４３５）。
また、ラインの標高ファイルにｓ，Ｚｓも書き出す（Ｚｓは、番号ｓの水平断面形の一単位のラインの標高）。
次のステップ４３６において、ｓを１インクリメントして一単位の属性解析プログラムに戻る。
【００４３】
このとき、ステップ４１７とステップ４２２にてサブルーチンＯｐｔｉｏｎ１を実行して復帰してきたときは、今回読み込んだとひとつ前の点のフラグが等しくない、すなわち、ｍｊ−１とｍｊの中点が変曲点であることが明らかであるから、次の一単位の始点をｍｊ−１とｍｊの中点とする（ステップ４１８，４２３）。
そして、ステップ４１８−１において、ｆｌａｇ［ｍ１］＝ｆｌａｇ［ｍｎ−１］であるか調べ、そのいずれかにより、ステップ４０４において決定した始点を終点として、再度サブルーチンＯｐｔｉｏｎ１を実行する（ステップ４１９）。Ｍがライン番号の最大の等高線データになるまで、以上の処理を繰り返し、Ｍがライン番号の最大の等高線データになったら、メインルーチンに復帰する。
【００４４】
［谷頭決定プログラム］
図２６のフローチャートを参照して説明する。
谷頭点を決定するために先ず、その候補の抽出を行う（図１１＿１）。
谷頭となるデータ点を見つけるために、前述の一単位ラインの属性解析プログラムでｆｉｌｅ＿ｘｙｒ１に書き出したｒ＝−１０であるデータ点を結ぶライン（以下「ジグザグライン」という。）を引く処理を実行する。
最初に、ｆｉｌｅ＿ｘｙｒ１とその標高ファイルを読み込み、標高の高い等高線から順番に並べ替える（ステップ４４１）。
次いでジグザグラインの線分の最大長Ｒを決める（ステップ４４３）。
全データ点に、ｆａｌｌ＿ｉ（等高線データのライン番号，等高線データのポイント番号）＝−１、ｆａｌｌ＿ｊ（等高線データのライン番号，等高線データのポイント番号）＝−１という属性を与える。等高線データには、読み込み順に、ライン番号ｎ（１，２，３…，ｎ＿ｅｎｄ）を与える。このとき、ｇ＝０とする（ステップ４４４）。
また、ライン番号ｎの等高線データをＭとし、Ｍの各データ点に、ポイント番号ｎｎ（１，２，３…，ｎｎ＿ｅｎｄ）を与える（ステップ４４５）。
そして、Ｍのポイント番号ｎｎのデータ点をｍとする（ステップ４４６）。
次のステップ４４７で、ｍの属性ｒが−１０であるか否か調べ、−１０であればそのデータ点が谷頭の候補であるから、ステップ４４８に移ってｆａｌｌ＿ｉ（ｎ，ｎｎ）＞０かどうか判断する。
ここで、ｆａｌｌ＿ｉ（ｎ，ｎｎ）＞０であればジグザグライン番号が既についていて、ｍを通るジグザグラインが既に存在するので、ｍを始点とするジグザグラインは発生させない。逆にｆａｌｌ＿ｉ（ｎ，ｎｎ）＞０でなければ、ｆａｌｌ＿ｊ（ｎ，ｎｎ）が−１０であるか否か判断し、−１０であれば、既に、ｍからジグザグラインを延長させようとして、不可能であったので、ｍを始点とするジグザグラインは発生させない。ｆａｌｌ＿ｊ（ｎ，ｎｎ）が−１０でないときは、ｇ＝ｇ＋１として、ｍをジグザグラインＷ（ライン番号ｇ）の発生点とする。このとき、ｍはＷのｇｇ番目の点（ｇｇ＝１）となる（ステップ４５０）。
ここで、ｍからジグザグラインＷの延長を試みる。このとき、ｍのＷでのポイント番号はｇｇである。
【００４５】
そこで、Ｍより標高が１ランク低い等高線データが存在するとき、さらにＭより低い等高線データのデータ点の中で、属性ｒが−１０であるデータ点が、ｍの半径Ｒ以内に存在すれば（ステップ４５３）、上記の点を谷頭の選択点とする。また、ｍの半径Ｒ以内に存在するデータ点を含む等高線の線分を仮線分として選ぶ（ステップ４５４）。
ステップ４５５において、ｍと前記各選択点とを結ぶ各線分（選択線分）の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で、長さが最小となる選択点を、ｍからの延長点ｗと決定する（ステップ４５６）。
そして、ｗを含む等高線データをＭ、ｗをｍに置き換え（ステップ４５７）、次のステップ４５８に進む。ただし、このｍをライン番号ｉｉの等高線データＭのポイント番号ｊｊのデータ点とする。
ここで、ｆａｌｌ＿ｉ（ｉｉ，ｊｊ）＝−１であれば、ジグザグラインのポイント番号ｇｇを１インクリメントして（ステップ４５９）、ステップ４５２へ戻る。
また、ｆａｌｌ＿ｉ（ｉｉ，ｊｊ）＝−１でないとき、ｆａｌｌ＿ｊ（ｉｉ，ｊｊ）＝−１０か否か調べ（ステップ４６０）、−１０であれば、ｍをＷの終点とし（ステップ４６３）、−１０でなければ、ＷにジグザグラインＷ’の［ｆａｌｌ＿ｊ（ｉｉ，ｊｊ）＋１］番目の点から終点までを接続する（ステップ４６２）。
次に、Ｗの始点からｇｇ−１番目の点（ｇｇ番目の点がｍ）について調べる。等高線データ（仮にＴ，ライン番号ａａ）のデータ点（仮にｔ，ポイント番号ｂｂ）と一致する点については、等高線データのデータ点にｆａｌｌ＿ｉ（ａａ，ｂｂ）＝ｇ、ｆａｌｌ＿ｊ（ａａ，ｂｂ）＝Ｗでのポイント番号という属性を与えた（ステップ４６４）上で、ステップ４６７に戻る。
【００４６】
前記ステップ４５２、４５３においてＮｏと判断されたときは、いずれもｆａｌｌ＿ｉ（ｎ，ｎｎ）＝−１０の属性を与えて、ｍはＷの終点であるとして扱い（ステップ４７１）、ステップ４６７に進んで、先にステップ４４５において付与されたポイント番号の最大値に達しているか否か調べ、達していなければポイント番号ｎｎを１インクリメントしてステップ４４６へ戻る。
ステップ４６７においてポイント番号が最大値に達したと判断されたときは、先にステップ４６９において付与されたライン番号が最大値に達しているか否か調べ、達していなければライン番号ｎを１インクリメントしてステップ４４５へ戻り、以上の処理を繰り返し実行する。
処理が進んで全ての処理が実行され、ステップ４６９においてＹｅｓと判断されたときは、ジグザグラインの作成を終了し、作成されたジグザグラインの始点を谷頭と決定する（ステップ４７２）。
最終的な処理として、ｆｉｌｅ＿ｘｙｒ１を再び呼び込み、読み込んだ（ｘ，ｙ）座標が、作成されたジグザグラインの始点の（ｘ，ｙ）座標と等しいとき、ｒの属性を−１０とし、それ以外のときはｒ＝０に変更し、ｆｉｌｅ＿ｘｙｒ１と同じ形式で書き出す。これをｆｉｌｅ＿ｘｙｒ２とする（ステップ４７４）。
以上から明らかなように、ｆｉｌｅ＿ｘｙｒ２は、ｆｉｌｅ＿ｘｙｒ１に比べて、属性ｒの値だけが変化していることとなる。
なお、谷頭のデータ点のみのポイントファイルを作成することも可能である。
【００４７】
［谷線の生成］
谷線や尾根線は、山地全体の形状を把握するために重要な情報である。特に谷線は、水系の分類や水系領域の抽出や谷密度の計算等に不可欠の情報であり、地形の侵食、崩壊した物質の移動経路、地形の変化の過程の解明、更に、地殻運動や岩石構造によるリニアメントの抽出において利用されている。
本発明は、出来る限り伝統的な手作業に近い手順で谷線を生成することを目的とし、数値等高線データのデータ点の中から、谷頭に該当する点を選び出し、これらの点から谷線を発生させるものである。
ここでいう谷線とは、谷頭からのみ発生させた、最も急傾斜で下る落水線を意味する。
したがって、谷の最上部である谷の頂点以外のデータ点からは落水線は発生されない。この点で、等高線データの全てのデータ点から発生される落水線とは異なる。
【実施例３】
【００４８】
この発明は、図４４のフローチャートに示されるように、水平断面形分類プログラムの一部と１単位ラインの解析プログラムを利用する谷頭を決定するプログラムを実行して得た谷頭データを読み込み、次いで落水線生成プログラムの一部を利用する谷線を生成するプログラムを実行し、谷線を生成するものである。（図４４）。
【００４９】
最初に、前述したｆｉｌｅ＿ｘｙｒ２とその標高ファイルを読み込み、ｒ＝−１０であるデータ点、すなわち谷頭からのみ、落水線データを生成するために、図２４、２５に示す落水線生成プログラムのサブルーチンに入って、ステップ３０１をスキップしてステップ３０２から処理を開始する。
【００５０】
［落水線生成プログラム］
この段階で、谷線の生成をする。
ＣＰＵは、ステップ３０２で最初にライン番号がｎである等高線データをＭｎ、Ｍｎのｎｎ番目のデータ点をｍｎｎ、作成する落水線データの落水線番号をｓ、落水線番号ｓである落水線データをＷｓ、Ｗｓのｓｓ番目の点をｗｓｓとする。
ステップ３０３では、等高線データの全データ点にｒの属性を与える。すなわち、ライン番号ｎ、ポイント番号ｎｎであるデータ点ｍｎｎにおいて、ｆａｌｌ＿ｉ［ｎ］［ｎｎ］＝−１、ｆａｌｌ＿ｊ［ｎ］［ｎｎ］＝−１とする。
次のステップ３０４で、任意の点ａから落水線の線分を下方に向けて引くとき、ａを起点ｍとする。
次いで、ｎ，ｓ，ｎｎに順次１をデータセットして起点ｍ＝ｍｎｎと定義したうえで、ｓｓ＝１とデータセットする（ステップ３０５〜３０８）。
【００５１】
本実施例の特徴的な部分として、ステップ３０９において、落水線データのデータ点の属性ｆａｌｌ＿ｉ［ｎ］［ｎｎ］が正であるか否か、そして、ステップ３１０において、落水線データを生成しようとして不可能であったか否かを判断する。
このステップ３０９，３１０により、既に落水線データが生成されているか否かが判断される。
このとき、当該データ点ｍを起点とする落水線データが既に生成されていたら、新たに落水線データを生成することなく、ステップ３１１、３１３に移り、落水線データのポイント番号が１であるか否か、また、ｍがＭｎの終点であるか否か判断し、終点でなければ、次のデータ点を選択（ｎｎ＝ｎｎ＋１）（ステップ３１４）してステップ３０７に戻る。ｍがＭｎの終点であれば、Ｍｎがライン番号最大の等高線データか否か判断し、Ｍｎがライン番号最大の等高線データでなければ、次の等高線データを選択（ｎ＝ｎ＋１）（ステップ３１６）してステップ３０６に戻り、Ｍｎがライン番号最大の等高線データであれば、落水線データの生成処理を終了する。
【００５２】
落水線データのポイント番号が−１０でないときは、ｍを落水線データＷ（落水線番号ｓ）の発生点とする。このとき、ｍはＷのｓｓ番目の点となる（ステップ３０８）。
【００５３】
次いで、ステップ３１７において、当該等高線データＭｎより標高が１ランク低い等高線データはあるか否か判断し、なければ、当該落水線データの終点であると判断されるから、ステップ３６６において、落水線データのポイント番号として−１０という属性を付与して、ステップ３１１に戻る。
次いで、ステップ３１７〜３１８において、当該等高線データＭｎより標高が１ランク低い等高線データがあり、かつ、Ｍｎより低い等高線データのデータ点が前記起点ｍの半径Ｒ以内にあるとき、標高が１ランク低い等高線データの全てのデータ点のうち、起点ｍから所定半径Ｒ以内に存在するデータ点を全て選択し、選択した全てのデータ点にフラグ１を立てる（ステップ３１９）。
ステップ３１７において、当該等高線データＭｎより標高が１ランク低い等高線データがないとき、および、ステップ３１８において、Ｍｎより低い等高線データのデータ点が起点ｍの半径Ｒ以内にないときは、その起点は落水線データの終点であって、ｍから落水線の線分を下方へ引くことはできないから、そのデータ点にｆａｌｌ＿ｊ［ｎ］［ｎｎ］＝−１０の属性を与えて、ステップ３１１に戻る。
上記の所定半径Ｒは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Ｒは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、Ｒ＝１５０ｍとした（１：２５，０００地形図上では６ｍｍとなる）。Ｒの選択は、計算時間に影響するので重要である。
【００５４】
ＣＰＵは、選択されたデータ点と前記起点ｍの距離を演算（ステップ３２０）し、最も距離が短い選択点をデータ点ｔ１とし、該データ点ｔ１を含む等高線の等高線データをＴとする（ステップ３２１）とともに、起点ｍから半径Ｒ以内に存在する全てのデータ点を含む等高線のデータ線分（同じ等高線データ上の連続する二つのデータ点をつなぐ線分）を選択する（ステップ３２２）。
次いで、選択されたこれらの等高線データの線分（以下「仮線分」という。）を用いて、標高が１ランク低い等高線データＴが選択された等高線データＭｎの隣りに存在するかどうかを調べる。
ｔ１がＭｎの隣りの等高線データのデータ点であれば、線分ｍｔ１はどの仮線分とも交差することはない（図３、Ａ）。
しかし、ｔ１がＭｎの隣りの等高線データのデータ点でないならば、線分ｍｔ１は上記したいずれかの仮線分と交差する。
よって、ステップ３２３において、線分ｍｔ１が仮線分と交差すると判断されたときは、ｔ１を選択点の中から除去（ステップ２２４）し、他に選択点がある限り（ステップ３２５）ステップ３２１に戻ってｔ１の次に起点ｍに近い点ｔ２を選んで、ステップ３２２、３２３に進んでこの処理を繰り返す。ステップ３２５において他に選択点がないときは、前述した手順でステップ３１１に戻る。
このとき、全ての選択点を用いても標高が１ランク低い等高線データを決定できない場合は、データ点ｍを落水線データの終点とする。
【００５５】
一方、線分ｍｔ１が仮線分と交差しないと判断されたときは、等高線データＴは等高線データＭｎの隣りに存在するものとして、
Ｔ＝Ｑ、ｔ１＝ｑｊとする（ｑｊはＱのｊ番目のデータ点）。
このとき、ｋ＝ｊ，ｋｋ＝ｊとし、データ点ｑｊの前後のデータ点についても、仮線分と交差するか否か調べるために、
ｍｉｎ＝ｊ−５（但し、ｊ−５＜０ならｍｉｎ＝１）とし、
ｍａｘ＝ｊ＋５（但し、ｊ＋５＞［Ｑのポイント番号の最大値］なら、ｍａｘ＝［Ｑのポイント番号の最大値］）とする（ステップ３２６）。
次いで、起点ｍと１ランク下の隣接する等高線データＱのデータ点ｑｊの前後（この例では、前後５つずつ）のデータ点との線分（ｑｊ＋５‥‥ｑｊ−５）は仮線分と交差するかについて調べ（ステップ３２７〜３２９，３３１〜３３３）、起点ｍと各データ点との線分が仮線分と交差しないものを落水線作成の先端点ｗの候補とする（ステップ３３０．３３４）。
さらに、起点ｍから、ｑｋ＋１とｑｋを通る直線とｑｋｋ−１とｑｋｋを通る直線に垂線をおろして交点をｐｋ、ｐｋｋとし（ステップ３３８．３４４）、ｐｋ、ｐｋｋは線分ｑｋ＋１ｑｋ、ｑｋｋ＋１ｑｋｋの上にあり、かつ、ｍｐｋ、ｍｐｋｋの線分は仮線分と交差しないものについて、落水線作成の先端点ｗの候補とする（ステップ３４１．３４７）。
そして、すべての先端点ｗの候補の中から起点ｍに最も近い点を落水線作成の先端点ｗとして選び、ｍとｗを結んで落水線を生成し、生成した落水線データは、落水線データファイルに記憶される（ステップ３５０．３５１）。
【００５６】
ここでさらに、１ランク下に隣接していた等高線データから落水線を生成するために、等高線データＱをＭｎに、データ点ｗをｍに置換し（ステップ３５２）、ｓｓを１インクリメントしてステップ３５４に進み、ｍが等高線データのデータ点でないとき、ステップ３１７に戻って次の落水線データの生成処理に入る。
一方、ｍが等高線データＭｉのデータ点ｍｉｉであるときは、ｆａｌｌ＿ｊ［ｉ］［ｉｉ］が−１０か、また−１か否か判断し、−１０であれば、ｍは終点（ステップ３６５）であり、−１であれば、ステップ３１７に戻り落水線データの生成処理に入る。
前記ステップ３５６において、ｆａｌｌ＿ｉ［ｉ］［ｉｉ］が−１でないときは、ｍｉｉを通る落水線データが既に存在する。そして、ｍｉｉはｆａｌｌ＿ｉ［ｉ］［ｉｉ］番目の落水線データのｆａｌｌ＿ｊ［ｉ］［ｉｉ］番目の点である（ステップ３５８）。
【００５７】
このときは、この落水線データＷｓに、当該データ点ｍから既に生成された落水線データのｆａｌｌ＿ｊ［ｉ］［ｉｉ］＋１番目の点から終点までを接続する（ステップ３５８）。
次いでステップ３５９において、Ｗの始点からｓｓ番目の点（［ｓｓ＋１］番目の点がｍである）について調べる。
ライン番号ｒの等高線データＭｒのｒｒ番目のデータ点ｍｒｒと一致する点については、データ点ｍｒｒに、ｆａｌｌ＿ｉ［ｒ］［ｒｒ］＝Ｗｓのライン番号，ｆａｌｌ＿ｊ［ｒ］［ｒｒ］＝Ｗｓでのポイント番号、という属性を与える。
なお、ステップ３４８において、ｗの候補が全く存在しないときは、ステップ３６６の処理をした上で、ステップ３１１に戻る。
また、ステップ３５６において、落水線データのｆａｌｌ＿ｉ［ｉ］［ｉｉ］が−１であるときは、落水線データは存在しないのであるから、ステップ３１７に戻る。
さらに、ステップ３５５において、落水線データのポイント番号が−１０であるときは、既にｍから落水線データを延長させようとして不可能であったので、ｍを落水線データＷの終点として、前述のステップ３５９の処理をする。
【００５８】
ここでさらに、１ランク下に隣接していた等高線データから落水線を生成するために、等高線データＱをＭに、データ点ｗをｍに置換し（ステップ３５２）、ステップ３１７に戻り、ステップ３１８からステップ３５３までの処理を繰り返し、落水線の終点に到達するまで落水線を生成し続ける。
そして落水線の終点まで到達したら、再度ステップ３１１に戻って、次のデータ点から終点に到達するまで落水線データを生成し続ける。
当該等高線データの最後のデータ点からの落水線データの生成が終了したら、１ランク下の等高線データの最初のデータ点から落水線データを生成し、順次この処理を実行し、ライン番号が最大の等高線データに到達したとき落水線データの生成を終了する。
【００５９】
［尾根線の生成プログラム］
最急登線は、山地全体の形状を把握するために重要な情報である。特に尾根線は、特に雪崩との関係が深いことが指摘されており、雪崩のハザードマップ作成、それによる、災害防止に不可欠のものとなっている。
本発明は、出来る限り伝統的な手作業に近い手順で尾根線を生成することを目的とし、数値等高線データのデータ点の中から、尾根下端点に該当する点を選び出し、これらの点から尾根線を発生させるものである。
ここでいう尾根線とは、尾根下端点からのみ発生させた、最も急傾斜で登る最急登線を意味する。
したがって、最も突き出した点である尾根の尾根下端点以外のデータ点からは尾根線は発生されない。この点で、等高線データの全てのデータ点から発生される最急登線とは異なる。
【実施例４】
【００６０】
このプログラム（図４０参照）は、最初に尾根型斜面であることを規定する上限角度を決定するために、その角度の数値を入力して定義する。
そして、前述した水平断面形分類プログラム（図１９〜２１参照）を実行し、水平断面形の分類データを出力する。
ついで、この水平断面形の分類データを読み込んで１単位ラインの属性（図４９参照）を解析する。
前記解析によって得られたデータに基づいて尾根下端点を決定するサブプログラム（図２７参照）を実行し、次いで尾根線を生成するサブプログラムを実行し、尾根線を生成する。
【００６１】
本実施例は、前記水平断面形分類プログラムによって尾根型斜面として分類された一単位のラインを用いることにより、尾根線の始点となる尾根下端点の定義を行う。
本実施例では、θｊ＜５°であるとき、データ点ｍｊにおける水平断面形は直線斜面として取り扱う。
尾根下端点を定義するための項目としては、本実施例では、尾根型斜面の角度（∠ｓ１ｐｓ２）を用いて尾根下端点を定義しているが、尾根型斜面の幅（Ｄ１）や尾根型斜面の深さ（Ｌ／Ｄ１）を用いて定義しても良いこと勿論である（図１０＿２）。
【００６２】
［１単位ラインの属性解析プログラム］
このプログラムについては、既に段落００３６から段落００４８にて説明した谷線生成プログラムの１単位ラインの属性解析プログラムと同一であるので、詳しい説明を省略する。
【００６３】
［尾根下端点決定プログラム］
尾根下端点となるデータ点を見つけるため、前述の一単位ラインの属性解析プログラムでｆｉｌｅ＿ｘｙｒ１に書き出したｒ＝１０であるデータ点を結ぶライン（以下「ジグザグライン」という。）を引く。
図２７を参照して説明する。
尾根下端点を決定するために先ず、その候補の抽出を行う（図１１＿２）。
最初に、ｆｉｌｅ＿ｘｙｒ１とその標高ファイルを読み込み、標高の低い等高線から順番に並べ替える（ステップ４４１−２）。
次いでジグザグラインの線分の最大長Ｒを決める（ステップ４４３−２）。
全データ点に、ｒｉｓｅ＿ｉ（等高線データのライン番号，等高線データのポイント番号）＝−１、ｒｉｓｅ＿ｊ（等高線データのライン番号，等高線データのポイント番号）＝−１という属性を与える。等高線データには、読み込み順に、ライン番号ｎ（１，２，３…，ｎ＿ｅｎｄ）を与える。このとき、ｇ＝０とする（ステップ４４４−２）。
また、ライン番号ｎの等高線データをＭとし、Ｍの各データ点に、ポイント番号ｎｎ（１，２，３…，ｎｎ＿ｅｎｄ）を与える（ステップ４４５−２）。
そして、Ｍのポイント番号ｎｎのデータ点をｍとする（ステップ４４６−２）。次のステップ４４７−２で、ｍの属性ｒが１０であるか否か調べ、１０であればそのデータ点が尾根下端点の候補であるから、ステップ４４８−２に移ってｒｉｓｅ＿ｉ（ｎ，ｎｎ）＞０かどうか判断する。
ここで、ｒｉｓｅ＿ｉ（ｎ，ｎｎ）＞０であればジグザグライン番号が既についていて、ｍを通るジグザグラインが既に存在するので、ｍを始点とするジグザグラインは発生させない。逆にｒｉｓｅ＿ｉ（ｎ，ｎｎ）＞０でなければ、ｒｉｓｅ＿ｊ（ｎ，ｎｎ）が−１０であるか否か判断し、−１０であれば、既に、ｍからジグザグラインを延長させようとして、不可能であったので、ｍを始点とするジグザグラインは発生させない。ｒｉｓｅ＿ｊ（ｎ，ｎｎ）が−１０でないときは、ｇ＝ｇ＋１として、ｍをジグザグラインＷ（ライン番号ｇ）の発生点とする。このとき、ｍはＷのｇｇ番目の点（ｇｇ＝１）となる（ステップ４５０−２）。ここで、ｍからジグザグラインＷの延長を試みる。
【００６４】
そこで、Ｍより標高が１ランク高い等高線データが存在するとき、さらにＭより高い等高線データのデータ点の中で、属性ｒが１０であるデータ点が、ｍの半径Ｒ以内に存在すれば（ステップ４５３−２）、上記の点を尾根下端点の選択点とする。また、ｍの半径Ｒ以内に存在するデータ点を含む等高線の線分を仮線分として選ぶ（ステップ４５４−２）。
ステップ４５５−２において、ｍと前記各選択点とを結ぶ各線分（選択線分）の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で、長さが最小となる選択点を、ｍからの延長点ｗと決定する（ステップ４５６−２）。
そして、ｗを含む等高線データをＭ、ｗをｍに置き換え（ステップ４５７−２）、次のステップ４５８−２に進む。ただし、このｍを、ライン番号ｉｉの等高線データＭのポイント番号ｊｊのデータ点とする。
ここで、ｒｉｓｅ＿ｉ（ｉｉ，ｊｊ）＝−１であれば、ジグザグラインのポイント番号ｇｇを１インクリメントして（ステップ４５９−２）、ステップ４５２−２へ戻る。
【００６５】
前記ステップ４５２−２、４５３−２においてＮｏと判断されたときは、いずれもｒｉｓｅ＿ｊ（ｎ，ｎｎ）＝−１０の属性を与えて、ｍはＷの終点であるとして扱い（ステップ４７１−２）、ステップ４６７−２に進んで、先にステップ４４５−２において付与されたポイント番号の最大値に達しているか否か調べ、達していなければポイント番号ｎｎを１インクリメントしてステップ４４６−２へ戻る。
ステップ４６７−２においてポイント番号が最大値に達したと判断されたときは、先にステップ４４４−２において付与されたライン番号が最大値に達しているか否か調べ、達していなければライン番号ｎを１インクリメントしてステップ４４５−２へ戻り、以上の処理を繰り返し実行する。
【００６６】
処理が進んで全ての処理が実行され、ステップ４６９−２においてＹｅｓと判断されたときは、ジグザグラインの作成を終了し、作成されたジグザグラインの始点を尾根下端点と決定する（ステップ４７３−２）。
最終的な処理として、ｆｉｌｅ＿ｘｙｒ１を再び呼び込み、読み込んだ（ｘ，ｙ）座標が、作成されたジグザグラインの始点の（ｘ，ｙ）座標と等しいとき、ｒの属性として１０を、それ以外ときはｒ＝０に変更し、ｆｉｌｅ＿ｘｙｒ１と同じ形式で書き出す。これをｆｉｌｅ＿ｘｙｒ２とする（ステップ４７４−２）。以上から明らかなように、ｆｉｌｅ＿ｘｙｒ２は、ｆｉｌｅ＿ｘｙｒ１に比べて、属性ｒの値だけが変化していることとなる。
以上の処理が終了したところで、尾根線生成プログラムのメインルーチンに復帰する。
【００６７】
［最急登線生成プログラム］
尾根線を生成する。
先ず、ｆｉｌｅ＿ｘｙｒ２とその標高ファイルを読み込み、ｒ＝１０であるデータ点、すなわち尾根下端点からのみ、尾根線データを生成するために、最急登線生成プログラムのサブルーチン（図２２参照）に入って、ステップ２０１をスキップしてステップ２０２から処理を開始する。
以後の処理内容については、段落００２２から段落００３１において説明したことと同じであるので、説明を省略する。
【００６８】
鞍部等において同じ高さの等高線データを結ぶ線を生成しようとするときは、次の処理をさらに行う。
以下に述べるプログラムは、任意の二つの等高線を結ぶ線分の数は１本とすることを前提としている。
一単位ラインの属性解析プログラムを再度実行する。その際に実行するオプションはＯｐｔｉｏｎ１（図５０参照）である。このときＤ２は計算しない。また、変曲点については書き出さないので、読み込んだデータ点の数と書き出すデータ点の数は等しいこととなる。
一単位ラインの属性解析プログラムを終了したら、メインルーチンに戻って、同高等高線結合線分生成プログラムを実行する。
【００６９】
［同高等高線結合線分生成プログラム］
図２８乃至３０を参照して説明する。
最初に、使用者が、等高線の全長ｍａｘ＿ｌｅｎｇｔｈ、結合する線分の最大長ｌｉｍｉｔ＿ｌｅｎｇｔｈを入力して決定する。
全長がｍａｘ＿ｌｅｎｇｔｈより短く、始点＝終点である等高線データを開始ポリゴンとし、開始ポリゴンと同じ高さの等高線とを結ぶ線分を引く。この線分は、使用者が決定した最大長ｌｉｍｉｔ＿ｌｅｎｇｔｈを越えることはない。
次いでｆｉｌｅ＿ｘｙｒを読み込み、読み込み順にライン番号ｉ（１，２，３…）を与える。等高線の総数をｓｕｍとする。また、ライン番号ｉの等高線のデータ点の総数をＰ［ｉ］とする（ステップ４８２）。
また、ｆｉｌｅ＿Ｚを読み込み、各等高線の標高をＺ［ｉ］とする（ステップ４８３）。
次のステップ４８４において、各等高線について、ライン番号がｉであるとき、（１）始点＝終点である等高線データには、ｐｏｌｙ［ｉ］＝１という属性を与え、
それ以外の場合はｐｏｌｙ［ｉ］＝０という属性を与えるとともに、
（２）全長を計算し、ライン番号ｌｉｎｅ＿ｉ［ｉ］と全長ｌｉｎｅ＿ｌ［ｉ］を保存一時記憶する。次いで、ｓ＝１，ｉ＝１とする（ステップ４８５〜４８６）。次のステップ４８７において、ｐｏｌｙ［ｉ］＝１であり、かつ、全長＜ｍａｘ＿ｌｅｎｇｔｈ以下であり、かつ、標高が０より上であれば、ライン番号（ｐｏｌｙ＿ｉ［ｓ］＝ｉ）と全長（ｐｏｌｙ＿ｌ［ｓ］＝ｌｉｎｅ＿ｌ［ｉ］）を保存一時記憶して、ｓを１インクリメントして、ステップ４９０に進む（ステップ４８７〜４８９）。
一方、ステップ４８７において、ｐｏｌｙ［ｉ］＝１の全長＜ｍａｘ＿ｌｅｎｇｔｈである、標高が０より上である、の条件のいずれかを満たさないときは、同じくステップ４９０に進む。
ステップ４９０では、ライン番号ｉが等高線データの総数ｓｕｍと等しいか否か判断し、等しくなければ、ライン番号ｉを１インクリメントして、ステップ４８７へ戻って処理を繰り返し実行する。
一方、ライン番号ｉが等高線データの総数ｓｕｍと等しいと判断されたときは、開始ポリゴンの総数ｐ＿ｎｕｍをｓとして、開始ポリゴン選択処理を終了する（ステップ４９２）。
【００７０】
次のステップ４９３で、ｐｏｌｙ＿ｉ［ｓ］とｐｏｌｙ＿ｌ［ｓ］をｐｏｌｙ＿ｌ［ｓ］が短い順に並べ替える。この処理により、ｐｏｌｙ＿ｌ［１］（等高線番号ｐｏｌｙ＿ｉ［１］）が、全長が最も短い開始ポリゴンとなるとともに、ｐｏｌｙ＿ｌ［ｐ＿ｓｕｍ］（等高線番号ｐｏｌｙ＿ｉ［ｐ＿ｓｕｍ］）が、全長が最も長い開始ポリゴンとなる。
次いで、ｌｉｎｅ＿ｉ［ｉ］とｌｉｎｅ＿ｌ［ｉ］をｌｉｎｅ＿ｌ［ｉ］が長い順に並べ替える。
この処理により、ｌｉｎｅ＿ｌ［１］（等高線番号ｌｉｎｅ＿ｌ［１］）が、全長が最も長い等高線となり、ｌｉｎｅ＿ｌ［ｓｕｍ］（等高線番号ｌｉｎｅ＿ｌ［ｓｕｍ］）が、全長が最も短い等高線となる（ステップ４９４）。
【００７１】
次のステップ４９５において、開始ポリゴンと等高線を結ぶ線分を書き出す。
書き出される線分の番号を、ｎｕｍｂｅｒ＝０とする。また、ｉｉ＝１と置く（ステップ４９６）。
次いで、線分を結べるかどうかの検討を行う開始ポリゴンである等高線のライン番号ｉをｐｏｌｙ＿ｉ［ｉｉ］とする（ステップ４９７）。
また、ｈｈ＝１とした上で、開始ポリゴン（ライン番号ｉ）との線分を結べるかどうかを検討する等高線のライン番号ｈをｌｉｎｅ＿ｉ［ｈｈ］とする（ステップ４９８〜４９９）。
そして、標高は０である、開始ポリゴンと開始ポリゴンとの線分を結べるかどうかを検討する等高線の標高が等しくない、開始ポリゴンである等高線のライン番号と開始ポリゴン（ライン番号ｉ）との線分を結べるかどうかを検討する等高線のライン番号ｈとが等しい、の３条件のいずれかを満たす場合、等高線番号ｈｈが等高線の総数ｓｕｍと等しくないとき、ｈｈを１インクリメントし（ステップ５０４）、等しいときは、開始ポリゴンの総数に至っていないとき次の開始ポリゴンを選択し（ステップ５０６）、開始ポリゴンの総数に至ったとき線分の作成を終了して（ステップ５０７）、線分を書き出す（ステップ５０８）。
このときｔ＝１からｔ＝書き出す線分番号の最大値まで、出力ファイルへの書き出しを繰り返し実行する（ステップ５０９〜５１１のサイクル）。このときの出力データの形式は、次の表のとおりである。
【００７２】
（表２）
2006091907.tif 000006
ｔの値が書き出す線分番号の最大値まで達したとき、出力ファイルへの書き出しを停止する（ステップ５１１）。
【００７３】
一方、ステップ５００〜５０２において、標高は０である、開始ポリゴンと開始ポリゴンとの線分を結べるかどうかを検討する等高線の標高が等しくない、開始ポリゴンである等高線のライン番号と開始ポリゴン（ライン番号）との線分を結べるかどうかを検討する等高線のライン番号とが等しい、の３条件のいずれをも満たさないとき、ステップ５１４以降において、開始ポリゴン（ライン番号ｉ）と等高線（ライン番号ｈ）を結ぶラインが存在するかどうかを調べる。そして、二つの等高線を最短距離で結ぶデータ点の組合せを捜す。
【００７４】
ステップ５１４で、ｔｍｐ＿ｊ＝−１，ｔｍｐ＿ｇ＝−１，ｌｌ＝１０００００［ｍ］とおき、次に、ｊ＝１とおく。このｊは、開始ポリゴンのポイント番号である（ステップ５１５）。そして、この点ｊが尾根型斜面（ｒ＝１）であるデータ点であるか否か判断し、Ｙｅｓであれば、ｇ＝１とおく。ｇは開始ポリゴンとの線分を結べるかどうかを検討する等高線ｈのポイント番号である。
そして、点ｇが尾根型斜面（ｒ＝１）であるデータ点あれば（ステップ５１８）、ｐｏｌｙ［ｈ］＝１かつｇ＝ｐ［ｈ］でなければ、点ｊと点ｇの距離ｌを計算し（ステップ５２０）、ｌｌがｌより大きいとき、ｔｍｐ＿ｊ＝ｊ，ｔｍｐ＿ｇ＝ｇ，ｌｌ＝ｌとして、ステップ５２３へ進む。また、ｌｌが１より小さいときは、直接ステップ５２３へ進む。
ステップ５２３において、開始ポリゴンとの線分を結べるかどうかを検討する等高線ｈのポイント番号の総数でないとき、ｇを１インクリメントして、ステップ５１８に戻り、開始ポリゴンとの線分を結べるかどうかを検討する等高線ｈのポイント番号の総数であるときは、ステップ５２５へ進む。そして、ｊの値が開始ポリゴンのポイント数の総数に達していないときは、ｊを１インクリメントして（ステップ５２６）、ステップ５１６へ戻る。
ステップ５２５において、ｊの値が開始ポリゴンのポイント数の総数に達していれば、ステップ５２７に進んで、ｔｍｐ＿ｊが−１であるか否か調べ、−１であれば、再度ステップ５０３に戻る。
【００７５】
一方、ステップ５２７においてｔｍｐ＿ｊが−１でないときは、ｊ＝ｔｍｐ＿ｊ，ｇ＝ｔｍｐ＿ｇとおき、以下のステップを実行することにより点ｊに最も近い、ｈ上の点を捜す。
ステップ５３０において、ｔｉｍｅｓ＝１，ｔｔ＝０，ｘ１＝ｘ［ｉ］［ｊ］，ｙ１＝ｙ［ｉ］［ｊ］とおく。ここで、（ｘ［ｉ］［ｊ］，ｙ［ｉ］［ｊ］）はライン番号ｉの等高線のポイント番号ｊのデータ点の（ｘ，ｙ）座標である。
次にステップ５３１において、開始ポリゴンとの線分を結べるかどうかを検討する等高線ｈのポイント番号の総数が５以下であれば、ステップ５３２へ進んでｓｔａｒｔ１＝ｌ，ｅｎｄ１＝Ｐ［ｈ］とする。
また、ｈのポイント番号の総数が５を越えるときは、当該ポイント番号が１であるとき、ｓｔａｒｔ１＝ｌ，ｅｎｄ１＝３とし、ポリゴンであればさらに、ｔｉｍｅｓ＝２，ｓｔａｒｔ２＝ｐ［ｈ］−２，ｅｎｄ２＝ｐ［ｈ］とする（ステップ５３６）。
また、当該ポイント番号が２であるとき、ｓｔａｒｔ１＝ｌ，ｅｎｄ１＝４とし、ポリゴンであればさらに、ｔｉｍｅｓ＝２，ｓｔａｒｔ２＝ｐ［ｈ］−１，ｅｎｄ２＝ｐ［ｈ］とする（ステップ５４０）。
当該ポイント番号がポイント番号の総数と等しいとき、ｓｔａｒｔ１＝ｐ［ｈ］−３，ｅｎｄ１＝ｐ［ｈ］とする（ステップ５４２）。
当該ポイント番号が（ポイント番号の総数−１）と等しいとき、ｓｔａｒｔ１＝ｐ［ｈ］−３，ｅｎｄ１＝ｐ［ｈ］とし、ポリゴンであればさらに、ｔｉｍｅｓ＝２，ｓｔａｒｔ２＝１，ｅｎｄ２＝２とする（ステップ５４６）。
そして、ステップ５３１、５３３、５３７、５４１、５４３における判断がいずれもＮｏであるとき、ｓｔａｒｔ１＝ｇ−２，ｅｎｄ１＝ｇ＋２として（ステップ５４７）、ステップ５４８に進む。
また、ステップ５３１、５３３、５３７、５４１、５４３における判断がＹｅｓであったとき、次の処理を実行した後も、ステップ５４８へ進む。
【００７６】
このステップ５４８以降の処理により、点ｊと、ｈ上のｓｔａｒｔ１からｅｎｄ１までのデータ点との線分について検討する。
先ず、ｋ＝ｓｔａｒｔ１とする（ステップ５４９）。
つぎのステップ５５０で、ｘ２＝ｘ［ｈ］［ｋ］，ｙ２＝ｙ［ｈ］［ｋ］とおく。
以下のステップを実行することにより、（ｘ１，ｙ１）と（ｘ２，ｙ２）を端点とする線分ｔｍｐ＿ｓｅｇｍｅｎｔが、等高線と交差するかどうか調べる。この際、標高がＺ［ｉ］、および、Ｚ［ｉ］より１ランク低い標高の等高線についてのみ調べればよい。
ステップ５５２において、（ｘ１，ｙ１）と（ｘ２，ｙ２）を端点とする線分ｔｍｐ＿ｓｅｇｍｅｎｔが、等高線と交差するか否か判断する。
次のステップ５５３にて、ｔｍｐ＿ｓｅｇｍｅｎｔの長さｌについて、ｌｉｍｉｔ＿ｌｅｎｇｔｈが１以上であるか調べ、１以上であるときｘ２，ｙ２，１を保存する。また、ｔｔ＝ｔｔ＋１  ｔｍｐ＿ｘ［ｔｔ］＝ｘ２，ｔｍｐ＿ｙ［ｔｔ］＝ｙ２，ｔｍｐ＿ｌ［ｔｔ］＝ｌとして（ステップ５５４）、次のステップ５５５に進み、ｋ＝ｅｎｄ１か否かを判断する。Ｎｏと判断されたときｋを１インクリメントしてステップ５５０へ戻り、以上の処理を繰り返す。
ステップ５５２において、（ｘ１，ｙ１）と（ｘ２，ｙ２）を端点とする線分ｔｍｐ＿ｓｅｇｍｅｎｔが、等高線と交差すると判断されたときは、データを保存することなく、ステップ５５５へ進む。
ステップ５５５において、ｋの値がｅｎｄ１に達したとき、ステップ５５７以降の処理により、等高線のデータ点ｓｔａｒｔ１からｅｎｄ１までの各線分について、ある程度長いものについては、線分上の中間点（線分をｎ等分（ｎは整数）する点）についても調べる。
このとき、ｎ等分された線分のそれぞれの長さはｍｉｎ＿ｌｅｎｇｔｈより長いものとする。このｍｉｎ＿ｌｅｎｇｔｈは使用者が入力して決定する。
ステップ５５９にてｋの値をｓｔａｒｔ１とする。
（ｘ［ｈ］［ｋ］，ｙ［ｈ］［ｋ］）と（ｘ［ｈ］［ｋ＋１］，ｙ［ｈ］［ｋ＋１］）を端点とする等高線の線分の長さ１２が、ｍｉｎ＿ｌｅｎｇｔｈ×２以上のとき、＿ｎを１２／ｍｉｎ＿ｌｅｎｇｔｈの商に決定する。
次のステップ５６２で、Ｓｉｇｎ＝１とする。
す５６０において、ｘ［ｈ］［ｋ］，ｙ［ｈ］［ｋ］とｘ［ｈ］［ｋ＋１］，ｙ［ｈ］［ｋ＋１］を端点とする等高線の線分の長さ１２が、ｍｉｎ＿ｌｅｎｇｔｈ×２未満のときは、ｋの値がｅｎｄ１−１か否か調べ、Ｎｏであればｋを１インクリメントして（ステップ５６９）ステップ５６０へ戻り、Ｙｅｓであればステップ５７２へジャンプする。
ステップ５６３に進んで、ｘ２とｙ２の座標の演算を行う。
【００７７】
（式２）
2006091907.tif 000007
【００７８】
次のステップ５６４以降の処理で、（ｘ１，ｙ１）と（ｘ２，ｙ２）を端点とする線分ｔｍｐ＿ｓｅｇｍｅｎｔが、等高線と交差するかどうか調べる。標高がＺ［ｉ］、および、Ｚ［ｉ］より１ランク低い標高の等高線についてのみ調べればよい。
（ｘ１，ｙ１）と（ｘ２，ｙ２）を端点とする線分ｔｍｐ＿ｓｅｇｍｅｎｔが、等高線と交差するときは、ｓｉｇｎ＝ｎ−１であるかどうか調べ、ｓｉｇｎ＝ｎ−１でないときは、ｓｉｇｎを１インクリメントしてステップ５６３へ戻って以上の処理を繰り返し実行する。ｓｉｇｎ＝ｎ−１であるときは、ステップ５７１に進んでｋの値がｅｎｄｉ−１より大きいか否か判断する。ｋの値がｅｎｄｉ−１より等しくないときは、ｋを１インクリメントして、Ｓ５６３へジャンプする。
ｋの値がｅｎｄｉ−１に等しいときはｔｉｍｅｓが２であるか否か判断し、２であれば、ｓｔａｒｔ１＝ｓｔａｒｔ２、ｅｎｄ１＝ｅｎｄ２、ｔｉｍｅｓ＝１とした（ステップ５７３）上で、ステップ５４８へ戻る。ｔｉｍｅｓが２でないときは、ｔｔが０か否か判断し、ｔｔが０のときはステップ５０３に戻り、ｔｔが０でないときは、ｔｔが２以上か否か判断する。そして、２以上であれば、ｔｍｐ＿１［ｔｔ］が小さい順に、ｔｍｐ＿ｘ［ｔｔ］＝ｘ２とｔｍｐ＿ｙ［ｔｔ］＝ｙ２とともに並べかえ（ステップ５７６）、次のステップ５７７でｎｕｍｂｅｒを１インクリメントする（ステップ５７７）。
そして、次のステップ５７８で、二つの等高線をつなぐ新しい線分ｎｅｗ＿ｓｅｇｍｅｎｔとして、下記の情報を保存する。
【００７９】
（表３）
2006091907.tif 000008
【００８０】
次いで、ｎｅｗ＿ｓｅｇｍｅｎｔが、これまでに作成した線分ｓｅｇｍｅｎｔと交差するか否か調べる。
ステップ５８１において、ｎｕｍｂｅｒが１であるか否か調べ、１であればステップ５０３へ戻り、１でなければｔを１とし（ステップ５８２）て、（ｏｎｅ＿ｘ［ｔ］，ｏｎｅ＿ｙ［ｔ］）と（ｔｗｏ＿ｘ［ｔ］，ｔｗｏ＿ｙ［ｔ］）を端点とする線分ｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］とｎｅｗ＿ｓｅｇｍｅｎｔが交差するかどうか調べる。
これらが交差するときは、ｆｉｎａｌ＿ｌ［ｔ］がｆｉｎａｌ［ｎｕｍｂｅｒ］より小さいとき、ｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］とｎｅｗ＿ｓｅｇｍｅｎｔの情報を入れかえ（ステップ５８６）、ステップ５８７へ進んで、ｎｕｍｂｅｒ＝ｎｕｍｂｅｒ−１として、ステップ５０３へ戻る。
また、ｆｉｎａｌ＿ｌ［ｔ］がｆｉｎａｌ［ｎｕｍｂｅｒ］より小さくないとき、ステップ５８７へジャンプしてｎｕｍｂｅｒ＝ｎｕｍｂｅｒ−１として、ステップ５０３へ戻る。
さらに、（ｏｎｅ＿ｘ［ｔ］，ｏｎｅ−ｙ［ｔ］）と（ｔｗｏ−ｘ［ｔ］，ｔｗｏ−ｙ［ｔ］）を端点とする線分ｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］とｎｅｗ＿ｓｅｇｍｅｎｔが交差しない場合は、ｔがｎｕｍｂｅｒ−１と等しくないときｔを１インクリメントし、ｔがｎｕｍｂｅｒ−１と等しいときｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］とｎｅｗ＿ｓｅｇｍｅｎｔのとの関係を調べる。
ステップ５９１にてｔを１として、次のステップ５９２において、ｎｅｗ＿ｓｅｇｍｅｎｔがつなぐ二つの等高線について、ｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］が、既に、つないでいるか否か判断する。
判断の結果、Ｎｏのときは、ｎｅｗ＿ｓｅｇｍｅｎｔがつなぐ二つの等高線（ライン番号ｉとｈ）のうちの一方の等高線（仮にＭ）の１点が、ｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］の端点であるか否かさらに判断し（ステップ５９３）、ｎｅｗ＿ｓｅｇｍｅｎｔとｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］の、Ｍ上の端点２点の距離ｌ３を計算する（ステップ５９４）。その結果、ｌ３が１０００を越えないとき、ｎｅｗ＿ｓｅｇｍｅｎｔとｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］を、それぞれ、Ｍ上の１点を始点とするベクターと考え、二つのベクターが成す角θを計算し（ステップ５９６）、θ＜４５°かつｌ３＜５００であるかどうか判断した後、さらにｆｉｎａｌ＿ｌ［ｔ］＜ｆｉｎａｌ＿ｌ［ｎｕｍｂｅｒ］であるかどうか判断し（ステップ５９７〜５９８）、いずれもＹｅｓのときｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］とｎｅｗ＿ｓｅｇｍｅｎｔの情報を入れ替えた後、ｎｕｍｂｅｒ＝ｎｕｍｂｅｒ−１の処理をしてから（ステップ５９９）、ステップ５０３へ戻る。ステップ５９８の判断結果がＮｏのときはステップ６００の処理をしてステップ５０３へ戻る。
また、ステップ５９２の判断結果がＹｅｓのときは、ｆｉｎａｌ＿ｌ［ｔ］＜ｆｉｎａｌ＿ｌ［ｎｕｍｂｅｒ］であるとき、ｐｒｅ＿ｓｅｇｍｅｎｔ［ｔ］とｎｅｗ＿ｓｅｇｍｅｎｔの情報を入れかえた後、ｎｕｍｂｅｒ＝ｎｕｍｂｅｒ−１の処理をしてステップ５０３に戻る（ステップ６０１〜６０３）。
さらに、ステップ５９３の判断結果がＮｏ、ステップ５９５の判断結果がＹｅｓのときは、ステップ５０３へ戻る。
【００８１】
［谷次数の計算］
斜面崩壊の発生場所が、特定の谷次数ｎの位置に集中していれば、まだ崩壊が起きていない谷次数ｎの部分は、他と比べ、崩壊の危険が高い。したがって、谷線に沿って得られる谷次数は、侵食の進み具合や、崩壊の傾向や危険度を把握するために重要な情報である。このプログラムは、最初に谷線生成プログラムを実行して谷線を生成し、次いで前記生成した谷線を水系毎に分類する水系分類プログラムを実行して得られた水系分類データを読み込んで、谷次数の計算を行うものである。勿論、落水線を用いてもよい（図４５）。
【００８２】
谷線生成プログラムについては前述したので、水系分類プログラム（図４３）について以下詳しく説明する。
前提として、標高が同じ二つの谷線（落水線）データのデータ点（終点）の距離がｄ［ｍ］以内（デフォルトは０．５［ｍ］）であるとき、二つの谷線（落水線）データは合流するとする。
本発明の落水線作成手法は、隣り合う等高線、したがって標高の異なる等高線を直線でつなげることから、屈曲の激しい部分では、落水線は途切れる。
このような部分は、全体からみるとわずかな数なので、現在、途切れた部分については、手作業でつなぐのが最も実用的である。
そこで、作成された落水線の中で、途切れている部分があれば、その部分を手作業でつないで落水線データを補正し、当該補正した落水線データを解析対象とする。
【００８３】
［水系分類プログラム］
水系については、本発明で、同一の終点に収束する谷線（落水線）データは、同じ水系であると定義している。
実際には、標高が同一の２つの谷線（落水線）の終点の平面距離がｄ［ｍ］以内であるとき、この２つの谷線（落水線）は同一の終点に収束する、というように処理している。
この実施例では、デフォルトはｄ＝０．０［ｍ］としている。例えば、元データが縮尺１：２５，０００の等高線であり、図上０．１［ｍｍ］しか離れていない終点を同一としたいときは、ｄ＝２．５［ｍ］となる。このｄは、本発明では解析者が目的に応じて入力するようにしてある。
また、最低ｆ本以上の谷線（落水線）が同一の終点を持つとき、これらの谷線（落水線）が水系を形成する、としている。このｆは、本発明を使って解析する人が目的に応じて入力するようにしてある。
図４３のステップ６１１において、上記補正済みの谷線（落水線）データを読み込み、全ての谷線（落水線）データに水系番号−１という属性を与える。
次のステップ６１２でｋ＝１、ｓ＝１とおく。次のステップ６１３で、Ｗｓの終点をｗとし、ｓより谷線（落水線）番号が大きい谷線（落水線）データの中から、終点の標高がｗと同じであり、水平距離がｄ（使用者が決定）以内である谷線（落水線）データを選ぶ。これらの谷線（落水線）の総数が、ｆ以上であるとき（ステップ６１４）、選ばれた谷線（落水線）それぞれに水系番号ｋを与える（ステップ６１５）（図１２＿１＿Ｂ）。また、総数がｆより小さい場合は、選ばれた谷線（落水線）それぞれに水系番号−１０という属性を与える（ステップ６１６）（図１２＿１＿Ａ）。ｓが最大の谷線（落水線）番号（ステップ６１７）であればメインルーチンに復帰終了し、でなければ谷線（落水線）番号に＋１をする（ステップ６１８）、Ｗｓの属性が−１０（ステップ６１９）であればステップ６１７へジャンプする。Ｗｓの属性が−１０でない場合、ステップ６２０においてＷｓの属性＞０のときは同様にステップ６１７へジャンプする。満たさないものは、水系番号に＋１を与えステップ６１３へジャンプする。
以上の処理にて、谷線（落水線）は水系毎に分類される。
なお、水系番号毎（例えば、１，２，３，…）に、谷線（落水線）の色を変えることにより、谷線（落水線）をベースにして、分類された水系を表示、印刷することができ、視覚的に理解し易い水系図を作成することができる。
【００８４】
次いで図４６、４７を参照して谷次数計算プログラムについて説明する。
先ず、水系分類を行った谷線データを読み込み（ステップ６３１）、次のステップ６３２にて、α＝等高線の標高間隔（デフォルトは、α＝１０［ｍ］）とする。また、ｓ＝１とする。
以後、水系毎に谷次数を計算する。ここでｋ＝１とする。このｋは水系毎に付与される水系番号（１，２，３，…，ｋ＿ｅｎｄ）である。
次のステップ６３４において、水系番号ｋである谷線データを始点の標高が高い順に並べ替え、仮番号ｈ（１，２，３，…，ｈ＿ｅｎｄ）を与える。仮番号１の谷線データＷ１の始点の標高をｍａｘ＿Ｚ，終点の標高をｍｉｎ＿Ｚとする（図１３）。
本実施例では、谷次数の計算の基になるデータを谷線としているが、落水線であってもよい。
仮番号ｈの谷線データＷｈのｇ番目のデータ点をｗｈ，ｇとするとき、Ｗｈのデータ点の総数をＰ［ｈ］個とする。線分のｗｈ，ｇｗｈ，ｇ＋１の起点をｗｈ，ｇ、先端点をｗｈ，ｇ＋１とする。
このとき、ｗｈ，ｇの標高は、ｗｈ，ｇ＋１の標高より高い。
先ず、起点が谷線データの始点にあたる線分ｗｈ，１ｗｈ，２の谷次数には、あらかじめ０を与える。
【００８５】
ステップ６３６において、Ｅ＝ｍａｘ＿Ｚとし、次のステップにおいてｈ＝１とする。その次に、Ｃｏｕｎｔ＝０とする（ステップ６３８）。
次いで、Ｗｈのデータ点の総数Ｐ［ｈ］が０であるか否か判断する。
Ｗｈのデータ点の総数が０でないとき、Ｗｈのデータ点について、ポイント番号が小さい順にデータ点の標高がＥと等しい点を捜す。ここでｇ＝１とおく。
次に、［ｗｈ，ｇの標高］がＥであるか否か判断する（ステップ６４１）。［ｗｈ，ｇの標高］がＥであるとき、Ｃｏｕｎｔが０であれば、ｉ＝ｈ、ｊ＝ｇとするとともに、線分ｗｉ，ｊ  ｗｉ，ｊ＋１を基準線分とする。このとき、ｔｍｐ＝−１、ｃｏｕｎｔ＝１、ｏｒｄｅｒ＝−１として（ステップ６４３）、ステップ６４７へ戻って、仮番号ｈが最終の番号であるか否か判断し、次のステップに移行する。
【００８６】
一方、［ｗｈ，ｇの標高］がＥより大きいとき、ｗｈ，ｇ＋１がＷｈの終点であるか否か判断し（ステップ６４５）、終点でなければｇを１インクリメントして、ステップ６４１に戻る。
ステップ６４５においてｗｈ，ｇ＋１がＷｈの終点であるとき、ステップ６４４において［ｗｈ，ｇの標高］がＥより小さいとき、及びステップ６４９において線分ｗｉ，ｊ  ｗｉ，ｊ＋１と線分ｗｈ，ｇｗｈ，ｇ＋１がｗｉ，ｊ＋１で合流しないと判断されたときは、いずれもステップ６４７へ進む。
ステップ６４７において、仮番号ｈが最終の番号であるか否か判断し、最終の番号でないとき、ｈを１インクリメントして（ステップ６４８）、ステップ６３９に戻る。
【００８７】
ステップ６４９において線分ｗｉ，ｊｗｉ，ｊ＋１と線分ｗｈ，ｇｗｈ，ｇ＋１がｗｉ，ｊ＋１で合流すると判断されたときは、谷次数の計算を実行するため、ステップ６５０へ進む。
ステップ６５０では、ｈとｇを保存し、Ｐ［ｈ］＝０とする。これは、ｗｉ，ｊ＋１より下流において、ＷｉとＷｈの重複をさけるために行うものである（図１７、１８）。
そして、ステップ６５１において、ｔｍｐが負か否かチェックし（ｔｍｐの意味は段落００９８参照）、負の数であれば、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数と等しいとき、ステップ６５３において、ｔｍｐ＝５、ｏｒｄｅｒ＝（ｗｉ，ｊｗｉ，ｊ＋１の谷次数）＋１の処理を行う。また、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数より大きいとき、ステップ６５５において、ｔｍｐ＝１、ｏｒｄｅｒ＝（ｗｉ，ｊｗｉ，ｊ＋１の谷次数）とする。
さらに、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数より小さいとき、ステップ６５６において、ｔｍｐ＝１０、ｏｒｄｅｒ＝（線分ｗｈ，ｇｗｈ,ｇ＋１の谷次数）とする。
【００８８】
以上の処理が終了したら、ステップ６４７に戻る。
ステップ６４７において、仮番号ｈが最終の番号ｈ＿ｅｎｄでないとき、ｈを１インクリメントしてステップ６３９へ戻る。
仮番号ｈが最終の番号ｈ＿ｅｎｄであるときは、ステップ６５７へ進み、ｏｒｄｅｒが負の数であれば、線分ｗｉ，ｊ＋１ｗｉ，ｊ＋２の谷次数を線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数と同一にし（ステップ６５８）、ｏｒｄｅｒが０以上の数であれば、ｗｉ，ｊ＋１ｗｉ，ｊ＋２の谷次数をｏｒｄｅｒの数とする（ステップ６５９）。
【００８９】
ステップ６５１において、ｔｍｐが０以上であるとき、Ｏｐｔｉｏｎ−ｖ１（図４７）のサブルーチンに入る。
このサブルーチンは、三本以上の谷線データが、１点で合流する場合に実行されるものである（ｔｍｐの意味は段落００９８参照）。
ステップ６７１において、ｗｉ，ｊｗｉ，ｊ＋１の谷次数がｗｈ，ｇｗｈ，ｇ＋１の谷次数と等しく、かつ、ｔｍｐ＝１であるとき、ｔｍｐ＝５とするとともに、ｏｒｄｅｒ＝（ｗｉ，ｊｗｉ，ｊ＋１の谷次数）＋１とする（ステップ６７２）。
また、ステップ６７１において、ｗｉ，ｊｗｉ，ｊ＋１の谷次数がｗｈ，ｇｗｈ，ｇ＋１の谷次数と等しくないか、またはｔｍｐ＝１でないとき、ｗｉ，ｊｗｉ，ｊ＋１の谷次数がｗｈ，ｇｗｈ，ｇ＋１の谷次数より小さいか否か判断する。判断結果がＹｅｓであれば、ｔｍｐが１か、５か、１０か、１５かがチェックされ（ステップ６７４、６７６、６７８、６８３）、ステップ６７４とステップ６７６においてＹｅｓのとき、ｔｍｐ＝１０、ｏｒｄｅｒ＝（ｗｈ，ｇｗｈ，ｇ＋１の谷次数）の処理がされる。
また、ステップ６７８においてｔｍｐ＝１０であり、ステップ６７９においてｗｈ，ｇｗｈ，ｇ＋１の谷次数がｏｒｄｅｒであるときは、ｔｍｐ＝１５、ｏｒｄｅｒ＝ｗｈ，ｇｗｈ，ｇ＋１の谷次数＋１の処理を行う（ステップ６８０）。
そして、ステップ６７９においてｗｈ，ｇｗｈ，ｇ＋１の谷次数がｏｒｄｅｒでないときは、ステップ６８１に進んでｗｈ，ｇｗｈ，ｇ＋１の谷次数がｏｒｄｅｒより大きいか否かを判断し、大きければｔｍｐ＝１０、ｏｒｄｅｒ＝ｗｈ，ｇｗｈ，ｇ＋１の谷次数の処理を行う（ステップ６８２）。
さらに、ステップ６８３において、ｔｍｐ＝１５であるとき、ｏｒｄｅｒ＝ｗｈ，ｇｗｈ，ｇ＋１の谷次数が、ｏｒｄｅｒ（以上あるか否か）の判断をして、Ｙｅｓのとき、ｔｍｐ＝１０、ｏｒｄｅｒ＝ｗｈ，ｇｗｈ，ｇ＋１の谷次数の処理を行い（ステップ６８５）、Ｎｏのとき、処理を終了してステップ６４７に戻る。
【００９０】
谷次数についての計算が終了したら、計算結果をステップ６６０において書き出す。
次のステップ６６１にて、ｓを１インクリメントして、ｉ＝ｈ＿ｅｎｄでないとき、ｈ＝ｉ＋１、ｃｏｎｕｔ＝０として、再度ステップ６３９に戻る。
ｉ＝ｈ＿ｅｎｄのとき、Ｅ＞ｍｉｎ＿Ｚ＋αであれば、Ｅ＝Ｅ−αの処理をし（ステップ６６４）て、ステップ６３８に戻る。
ｉ＝ｈ＿ｅｎｄのとき、Ｅ＞ｍｉｎ＿Ｚ＋αでなければ、ｋ＝ｋ＿ｅｎｄを判断する。
ｋ＝ｋ＿ｅｎｄでなければ、ｋを１インクリメントしてステップ６３４に戻り、次の水系番号のデータについて処理を実行する。
全ての水系番号のデータを処理すれば、ｋ＝ｋ＿ｅｎｄとなるから、計算を終了する。
［谷次数と斜面の垂直断面形の組合せ］
【００９１】
図３１〜３４を参照して説明する。
落水線データＷｉ、Ｗｈ、Ｗｐについて、それぞれ、ｊ番目のデータ点をｗｉ，ｊ、ｇ番目のデータ点をｗｈ，ｇ、ｑ番目のデータ点をｗｐ，ｑとする。また、ｗｉ，ｊとｗｉ，ｊ＋１、ｗｈ，ｇとｗｈ，ｇ＋１、ｗｐ，ｑとｗｐ，ｑ＋１の中点を、それぞれ、ｔｉ，ｊ、ｔｈ，ｇ、ｔｐ，ｑとする。本発明による斜面の垂直断面形は、落水線データのデータ点を中点とする二つの線分、つまり、３点から成るラインを一単位とする。一単位のラインの両端の点は、落水線データの線分の中点となる場合が多い（図１５Ｂ））が、落水線データの始点や終点となる場合もある（図１５Ａ））。また、複数の落水線データが同じデータ点に合流する場合、その合流点を中点とする一単位のラインの垂直断面形は、それぞれ異なる場合がある（図１５，Ｂ１），Ｂ２））。したがって、落水線データＷｉ、Ｗｈ、Ｗｐが、データ点ｗｉ，ｊ＋１において合流するとき、ｗｉ，ｊ＋１における斜面の垂直断面形（ｗｉ，ｊ＋１を中点とするライン）を、下記の手順によって、唯一つに定める。
先ず、落水線生成プログラムを実行して落水線を生成し（ステップ７０１）た後、次の７０２にて水系分類プログラムを実行する。本実施例は、落水線データを基に計算を行ったが、谷線データであってもよい。
そこで、水系分類データを読み込む（ステップ７０２の２）。続いて、水系番号を持たない、すなわち水系をなさない落水線についての計算を行うかどうか入力して決定する（ステップ７０３）。
水系番号を持たない落水線についての計算を行うと決定されたときは、Ｏｐｔｉｏｎ−ｃのサブルーチンに進む。このサブルーチンは、付加的なものであるから、このサブルーチンについては後述することとする。
【００９２】
このプログラムは、先ず水系毎に谷次数を計算し、さらに垂直断面形の分類を行うものである。そこで、この処理について詳しく説明する。
最初にステップ７０６にて等高線の標高間隔αを規定する。なお、デフォルトは、α＝１０［ｍ］としてある。ここでｓ＝１（ステップ７６５においてｓが出てくるため）、ｋ＝１とする。ｓはデータ番号、ｋは水系毎に付与される水系番号（１，２，３，…，ｋ＿ｅｎｄ）である。
ステップ７０８において、水系番号ｋの落水線データを、始点の標高が高い順に並べ替え、仮番号ｈ（１，２，３，…，ｈ＿ｅｎｄ）を与える。また、仮番号１の落水線データＷ１の始点の標高をｍａｘ＿Ｚ、終点の標高をｍｉｎ＿Ｚとする。
次いで、仮番号ｈの落水線データＷｈのｇ番目のデータ点をｗｈ，ｇとし、Ｗｈのデータ点の総数をＰ［ｈ］個とする。線分ｗｈ，ｇｗｈ，ｇ＋１の起点をｗｈ，ｇ、先端点をｗｈ，ｇ＋１とする。このとき、ｗｈ，ｇの標高＞ｗｈ，ｇ＋１の標高の関係にある。
そして起点が落水線データの始点にあたる線分ｗｈ，１ｗｈ，２の谷次数を０とする。次にＥ＝ｍａｘ＿Ｚ、ｈ＝１、ｃｏｕｎｔ＝０とおく。
【００９３】
Ｗｈのデータ点の総数が０でないとき、Ｗｈのデータ点について、ポイント番号が小さい順にデータ点の標高がＥと等しい点を捜す。ここでｇ＝１とおく（ステップ７１４）。
次に、ｗｈ，ｇの標高がＥであるか否か判断する（ステップ７１５）。ｗｈ，ｇの標高がＥであるとき、Ｃｏｕｎｔが０であれば、ｉ＝ｈ、ｊ＝ｇとするとともに、線分ｗｉ，ｊｗｉ，ｊ＋１を基準線分とする。このとき、ｔｍｐ＝−１、ｃｏｕｎｔ＝１、ｏｒｄｅｒ＝−１として（ステップ７２３）、ステップ７１９へ戻って、仮番号ｈが最終の番号であるか否か判断する。判断結果がＮｏのとき仮番号ｈを１繰り上げてステップ７１３に戻る。
【００９４】
一方、ｗｈ，ｇの標高がＥより高いとき、ｗｈ，ｇ＋１がＷｈの終点であるか否か判断し（ステップ７１７）、終点でなければデータ番号ｇを＋１してステップ７１５に戻る。
ステップ７１７においてｗｈ，ｇ＋１がＷｈの終点であるとき、ステップ７１６においてｗｈ，ｇの標高がＥより低いとき、及びステップ７２４においてｗｉ，ｊｗｉ，ｊ＋１とｗｈ，ｇｗｈ，ｇ＋１がｗｉ，ｊ＋１で合流しないと判断されたときは、ステップ７１９へ進む。
ステップ７１９において、仮番号ｈが最終の番号であるか否か判断し、最終の番号でないとき、仮番号ｈを１インクリメントして（ステップ７２０）、ステップ７１３に戻る。
【００９５】
ステップ７２４において線分ｗｉ，ｊｗｉ，ｊ＋１と線分ｗｈ，ｇｗｈ，ｇ＋１がｗｉ，ｊ＋１で合流すると判断されたときは、谷次数の計算を実行するため、ステップ７２５へ進む。ステップ７２５では、ｈとｇを保存する。
そして、ステップ７２６において、ｔｍｐが負か否かチェックし、負の数であれば、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数と等しいとき、ステップ７２８において、ｔｍｐ＝５、ｏｒｄｅｒ＝（  線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数）＋１の処理を行う。
また、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数より大きいとき、ステップ７３０において、ｔｍｐ＝１、ｏｒｄｅｒ＝（  線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数）とする。
さらに、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数より小さいとき、ステップ７３１において、ｔｍｐ＝１０、ｏｒｄｅｒ＝（線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数）とする。
【００９６】
以上の処理が終了したら、ステップ７１９に戻る。
ステップ７１９において、仮番号ｈが最終の番号ｈ＿ｅｎｄでない場合、ｈを１インクリメントしてステップ７１３へ戻り、仮番号ｈが最終の番号に達するまで以上の処理を繰り返す。
また、仮番号ｈが最終の番号ｈ＿ｅｎｄに達したときは、Ｃｏｕｎｔが０であるか否か判断する。ステップ７２１にてＣｏｕｎｔが０と判断されたときは、ステップ７９０に進み、標高が終点の１つ手前の標高であるとき、落水線データの始点の標高を１つ下げてステップ７１３に戻る。
一方ステップ７９０で、標高が終点の１つ手前の標高ではない場合、水系番号ｋが最終のものでないとき、水系番号を１繰り上げてステップ７０８に戻り、次の水系番号のデータ処理に入る。また、水系番号ｋが最終のものであるときは、全ての対象について処理が終了しているので、この処理を終了する。
【００９７】
ステップ７２６において、ｔｍｐが０以上である場合、ステップ７３２において、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数と等しく、かつ、ｔｍｐ＝１であるとき、ｔｍｐ＝５とするとともに、ｏｒｄｅｒ＝（線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数）＋１とする（ステップ７３３）。
また、前記ステップ７３２において、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数と等しくないか、またはｔｍｐ＝１でないとき、線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数が線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数より小さいか否か判断する。
判断結果がＹｅｓであれば、ｔｍｐが１か、５か、１０か、１５かがチェックされ（ステップ７３５，７３６，７３８，７４３）、ステップ７３５とステップ７３６においてｔｍｐが１か５のとき、ｔｍｐ＝１０、ｏｒｄｅｒ＝（線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数）の処理がされる（ステップ７３７）。
また、ステップ７３８においてｔｍｐ＝１０であり、ステップ７３９において線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数がｏｒｄｅｒであるときは、ｔｍｐ＝１５、ｏｒｄｅｒ＝線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数＋１の処理を行う（ステップ７４０）。
そして、ステップ７３９において線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数がｏｒｄｅｒでないときは、ステップ７４１に進んで線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数がｏｒｄｅｒより大きいか否かを判断し、大きければｏｒｄｅｒ＝線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数の処理を行う（ステップ７４２）。
さらに、ステップ７４３において、ｔｍｐ＝１５であるとき、線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数≧ｏｒｄｅｒの判断をして、Ｙｅｓのとき、ｔｍｐ＝１０、ｏｒｄｅｒ＝線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数の処理を行い（ステップ７４５）、ステップ７１９に戻る。また、ステップ７４４の線分ｗｈ，ｇｗｈ，ｇ＋１の谷次数≧ｏｒｄｅｒの判断かＮｏのとき、処理を終了してステップ７１９に戻る。
【００９８】
ここで、ｔｍｐの値の持つ意味について整理しておく。
ｔｍｐ＝１：線分ｗｉ，ｊｗｉ，ｊ＋１のみが、最大の谷次数をもつ。
ｔｍｐ＝５：線分ｗｉ，ｊｗｉ，ｊ＋１とそれ以外（複数可）の線分ｗｈ，ｇｗｈ，ｇ＋１が、最大の谷次数をもつ。
ｔｍｐ＝１０：単一の線分ｗｈ，ｇｗｈ，ｇ＋１（≠線分ｗｉ，ｊｗｉ，ｊ＋１）が、最大の谷次数をもつ。
ｔｍｐ＝１５：複数の線分ｗｈ，ｇｗｈ，ｇ＋１（≠線分ｗｉ，ｊｗｉ，ｊ＋１）が、最大の谷次数をもつ。
【００９９】
１つの水系に属する落水線データについての谷次数の計算が終了すると、前記ステップ７１９においてＹｅｓの判断がなされ、ステップ７２１に進んで、Ｃｏｕｎｔが０であるか否か判断する。Ｃｏｕｎｔが０と判断されたときはステップ７９０に進み、０でない場合さらにステップ７４６に進む。
該ステップ７４６において、ｏｒｄｅｒが負か否か判断される。
負と判断されたときは、線分ｗｉ，ｊ＋１ｗｉ，ｊ＋２の谷次数の値を線分ｗｉ，ｊｗｉ，ｊ＋１の谷次数の値とする。
また、負と判断されなかったときは、ｏｒｄｅｒの値を線分ｗｉ，ｊ＋１ｗｉ，ｊ＋２の谷次数の値とする。
【０１００】
次いで、ステップ７４９とステップ７５０において、ｏｒｄｅｒが負であるか、ｔｍｐが１であるときは、ｉｉ＝ｉ、ｊｊ＝ｊとおく。
また、ステップ７５２においてｔｍｐが１０であるときは、データ点ｗｉ，ｊ＋１で合流する線分ｗｈ，ｇｗｈ，ｇ＋１（ただしｈ≠ｉ）の中で最大の谷次数をもつ線分の（ｈ，ｇ）を用いてｉｉ＝ｈ、ｊｊ＝ｇとおく。
上記の３つのステップにおいて、いずれにも該当しないときは、線分ｗｉ，ｊｗｉ，ｊ＋１と線分ｗｈ，ｇｗｈ，ｇ＋１が同じ谷次数を持っていて互いに流れとしての経歴は互角であるから、いずれの落水線が直線的に流れて行くことになるかを調べるために、線分ｗｈ，ｇｗｈ，ｇ＋１と線分ｗｈ，ｇ＋１ｗｈ，ｇ＋２が水平面上でなす角δｈ，ｇ＋１（≦１８０°）を計算する（図１６Ｂ）。ただし、このｈにはｉが含まれる、また、このｇにはｊが含まれる。
したがって、線分ｗｉ，ｊｗｉ，ｊ＋１と線分ｗｉ，ｊ＋１ｗｉ，ｊ＋２が水平面上でなす上記角δｈ，ｇ＋１（≦１８０°）についても計算するものである。そして、計算されたδｈ，ｇ＋１の中で、最大であるδｈ，ｇ＋１のｈとｇについて、ｉｉ＝ｈ、ｊｊ＝ｇとおく。すなわち、直線的に流れていくものを優先して基準線分として利用していくこととしている。
【０１０１】
ここで、データ構造及びその属性の計算方法及びその属性について説明する。
【０１０２】
（表４）
2006091907.tif 000009
勾配θｉｉ，ｊｊ：ｔａｎθｉｉ，ｊｊ＝α／ｌｉｉ，ｊｊより計算
谷次数ｖｉｉ，ｊｊ−１：ｗｉｉ，ｊｊ−１ｗｉｉ，ｊｊの谷次数
垂直断面形を決めるτｉｉ，ｊｊ＝１８０°＋θｉｉ，ｊｊ−１−θｉｉ，ｊｊ
水平面上での角δｉｉ，ｊｊ：ｌｉｉ，ｊｊ−１、ｌｉｉ，ｊｊ、ｗｉｉ，ｊｊ−１とｗｉｉ，ｊｊ＋１との水平面距離ｌｌから次式の計算により求まる。
【０１０３】
（式３）
2006091907.tif 000010
【０１０４】
また、上から中点、データ点、中点のデータｍｉｉ，ｊｊ−１ｗｉｉ，ｊｊｍｉｉ，ｊｊ＋１について属性ファイルに書き出す属性は、つぎのとおりである。
（１）線分番号：ｓ（ｘｙファイルのｓに対応させる）
（２）中点の標高：ｚｉｉ，ｊｊ
（３）水系番号：ｋ
（４）ｗｉｉ，ｊｊの上流の線分の勾配：θｉｉ，ｊｊ−１
（５）ｗｉｉ，ｊｊの下流の線分の勾配：θｉｉ，ｊｊ
（６）ｗｉｉ，ｊｊでの、水平面での角：δｉｉ，ｊｊ
（７）垂直断面形を分けるための角：τｉｉ，ｊｊ
（８）谷次数ｖｉｉ，ｊｊ−１：線分ｗｉｉ，ｊｊ−１ｗｉｉ，ｊｊの谷次数
以上みたように、例えば谷次数は、１つの落水線データの線分、したがって２つのデータ点に対し１つの属性を有するが、例えば垂直断面形を決める角は、連続する２つの落水線データの線分、したがって３つのデータ点に対し１つの属性を有する。
このため、最初の及び最後のものを除く落水線データは、典型的には下表のようなステップ８０７のデータ点を書き出すこととなる。
【０１０５】
（式４）
2006091907.tif 000011
また、書き出す属性は下表のようになる。
【０１０６】
（表５）
2006091907.tif 000012
【０１０７】
以下の処理を実行することにより、全ての線分について、ｘｙファイル属性ファイルにデータを書き出す処理を実行する。
ｗｉｉ，ｊｊの（ｘ，ｙ，ｚ）座標をそれぞれ（ｘｉｉ，ｊｊｙｉｉ，ｊｊ，ｚｉｉ，ｊｊ）、ｗｈ，ｇの（ｘ，ｙ，ｚ）座標をそれぞれ（ｘｈ，ｇ，ｙｈ，ｇ，ｚｈ，ｇ）とする（ステップ７５５）。
そして、線分ｗｉｉ，ｊｊｗｉｉ，ｊｊ＋１以外に、ｗｉ，ｊ＋１を先端点とする線分が存在するか否か判断し（ステップ７５６）、存在すれば、線分ｗｉｉ，ｊｊｗｉｉ，ｊｊ＋１を除く、ｗｉ，ｊ＋１を先端点とする複数の線分をｗｈ，ｇｗｈ，ｇ＋１とする（ステップ７５７）。
【０１０８】
ステップ７５８からステップ７６６の処理により、今までの処理により取得したデータの全てをファイルに書き出す。
先ず、ステップ７５９とステップ７６１において、データポイント番号が１か２かそれ以外かを判別する。
そして、データポイント番号が１であれば、ステップ７６０において書き出しを行い、データポイント番号が２であるときは、ステップ７６２において書き出しを行う。
また、データポイント番号が１でも２でもないときは、ステップ７６３において書き出しを行う。
そして、ステップ７６４では、Ｗｈのデータ点の総数Ｐ［ｈ］を０とおく。これは、以後の処理において重複する落水線データを排除するために行う処理である。
以上の処理により、全ての落水線データのｘｙ座標データと属性データの書き出しを終了する。
【０１０９】
次に、線分ｗｉｉ，ｊｊｗｉｉ，ｊｊ＋１について書き出しを行う。
データポイント番号が１か、２かつＷｉｉのデータ点の総数Ｐ［ｉｉ］の２つ手前か否かを調べ、それぞれ満足する条件にしたがって、データを書き出し（ステップ７６８〜７７８）、データ番号ｓを＋１してステップ７８９へ進む。
一方ステップ７５６において、ｗｉｉ，ｊｊｗｉｉ，ｊｊ＋１以外に、ｗｉｉ，ｊｊ＋１を先端点とする線分が存在しないときは、ステップ７８０に進んで、データポイント番号が１であるか否か判断し、１であればステップ７８９に進む。
また、データポイント番号が１以外である場合には、データポイント番号が２、データ点の総数が３、データ番号が２、データ番号がデータ点の総数の１つ手前、のいずれか条件を満たするか否かによって、４通りの形式でデータを書き出す（ステップ７８１〜７８７）。
しかる後に、データポイント番号ｓを＋１して、ステップ７８９に進む。
【０１１０】
ステップ７８９においては、基準線分のライン番号が仮番号の総数に到達したか否かを判断する。
そして、到達していない場合は、ｈ＝ｉ＋１、ｃｏｕｎｔ＝０とおいて、ステップ７１３に戻る。
また、基準線分のライン番号が仮番号の総数に到達したと判断された場合は、Ｅ＞ｍｉｎ＿Ｚ＋αのとき、標高を１ランク下げて（Ｅ＝Ｅ−α）してステップ７１３に戻って以後の処理を実行する。
さらに、Ｅ＞ｍｉｎ＿Ｚ＋αでないときは、水系番号の最終に到達していなければ、次の水系についての処理に移行する（ステップ７９４）。
ここで、水系番号の最終に到達したときは、全ての水系について処理が終了したので、プログラムの実行を終了する。
【０１１１】
ここであらためて、サブルーチンＯｐｔｉｏｎ＿ｃ（図４８）について説明する
次に、落水線Ｇの線分全てについて、谷次数０という属性を与える（ステップ７９６）。
書き出されていないＧの落水線データＷｉｉがあるとき（ステップ７９７の１）、ｗｉｉのｊｊ番目（ｊｊ＝１，２，３，…）のデータ点をｗｉｉ，ｊｊとする。このときｊｊ＝１とおく（ステップ７９７の２）。
次のステップ７９８ではデータ番号ｊｊが１でないとき、ｊｊ＝２かつＰ［ｉｉ］＝３であるか、ｊｊ＝２、ｊｊ＝Ｐ［ｉｉ］−１であるか、のいずれかの条件を満たす場合、ステップ８０１、８０４、８０８を実行してそれぞれデータを書き出す。
また、これが最も一般的であるが、ステップ８０７を実行する。
そして、ステップ８０１とステップ８０８を実行後は、ステップ８０２にてｓを＋１してステップ７９７の１に戻って以後の処理を繰り返して実行する。
また、ステップ８０４とステップ８０７を実行後は、ステップ８０５にてｓを＋１した後、ステップ７９９にてｊｊを＋１してステップ７９８に戻って以後の処理を繰り返す。
以上の処理の繰り返した結果、ステップ７９７の１において全てのＧの落水線データｗｉｉが書き出されたと判断されて処理を終了し、メインルーチンに戻ってステップ７０６以降の処理に入るものである。
【０１１２】
［等高線属性データのグリッド化プログラム１］
本発明は、等高線データを基に算出した各種の属性データ（線分）をグリッド化するときに用いるプログラムに関するものである。
一般に、値数統計解析手法では、規則正しい、格子状の配列を持つグリッドデータを用いる場合が多い。また、植生データ、地質データなどの多くのデータがグリッドデータとして整備されてきている。
一方、各種の情報を保有する線分データや（ランダムな）ポイントデータは、そのままでは、上記グリッドデータと結合して使用することは困難である。
そこで本発明は、取得された、地形属性を持つ線分データなどをグリッド化して、各種のグリッドデータとリンクさせ、活用の範囲を広げようとするものである。
グリッド化に用いる線分データは、線分の始点と終点の平面位置座標の情報を必ず持ち、勾配や斜面方位などの属性を一つ以上持つものとする。
そして例えば、落水線の線分データから、勾配と斜面方位と谷次数を同時に計算し、１）ライン番号，２）線分の始点のｘ座標，３）線分の始点のｙ座標，４）線分の終点のｘ座標，５）線分の終点のｙ座標，６）水系番号，７）勾配，８）斜面方位，９）谷次数を、各線分毎に書き出したファイルを作っておいて、必要に応じた属性だけを読み込んでもよい。
また、勾配グリッドデータを作りたいときは、上記２）〜５）と７）だけを書き出したファイルを作っても良い。
いずれにしても、グリッドデータ作成に用いる線分データの形成は、いろいろ考えられる。また、落水線だけでなく、最急登線、谷線、尾根線、属性付きのポイントデータを基に、グリッドデータを作成することが可能である。
【０１１３】
斜面の垂直断面形のように、落水線の２つの線分を単位とする場合は、２つの線分に分けて書き出す。
２つに分けられた線分は、始点と終点の（ｘ，ｙ）座標は異なるが、属性は同じとなる。
【０１１４】
2006091907.tif 000013
【０１１５】
等高線に沿って分類された斜面の水平断面形の場合は、等高線の線分毎に書き出す。
（例）
１）ライン番号
２）線分の始点のｘ座標
３）線分の始点のｙ座標
４）線分の終点のｘ座標
５）線分の終点のｙ座標
６）水平断面形の種類（１：尾根型，−１：谷型，０：それ以外）
【０１１６】
まず、グリッドデータを作成するための作成範囲を決める。例として以下の２つの方法を挙げる。
方法１）図面等をみて、手作業で（ｘ，ｙ）座標の最大値と最小値（ｍｉｎ＿ｘ，ｍａｘ＿ｘ，ｍｉｎ＿ｙ，ｍａｘ＿ｙ）を決める。
方法２）グリッドデータの基になる線分データを読み込み、これらの線分データの始点と終点の中から（ｘ，ｙ）座標の最大値と最小値（ｍｉｎ＿ｘ，ｍａｘ＿ｘ，ｍｉｎ＿ｙ，ｍａｘ＿ｙ）を決める。ただし、分布するデータの範囲が常に長方形とは限らないので注意する必要がある。
次に、作成するグリッドデータのグリッド間隔ｄを決める。
更に、グリッド点の位置を決める（中心、あるいは、四隅のはずれた点）。
なお、グリッドデータは、実際は、点ではなく、広がりを持ったセルとして現される。
【０１１７】
（表６）
2006091907.tif 000014
【０１１８】
従来多用されている標高グリッドデータを用いて、各種グリッドデータを計算する場合、下図のように行われる。
【０１１９】
（表７）
2006091907.tif 000015
例えば、グリッド点ｇｉ，ｊでの勾配を計算したいとき、ｇｉ，ｊの標高のみを用いて、ｇｉ，ｊの勾配を計算することはできない。
このため、ｇｉ，ｊの周囲のグリッド点の標高も使う必要がある。
したがって、計算範囲が広くなることから、計算結果が緩やかになる傾向にある。
これに対して、本発明においては、属性まで計算した線分データを作り、計算範囲内に存在するデータのみを使う。
まさに当該グリッド内での値が求められるのが特徴である。
従来は、標高グリッドデータから、勾配などの各種グリッドデータを作るのが普通である。
【０１２０】
（表８）
2006091907.tif 000016
【０１２１】
以下、属性を勾配とする実施例について詳しく説明する。
図３５〜３６を参照して説明する。
先ず使用する線分データと優先順位を決定する。
この優先順位は、パターン化されており、そのパターンは、
ｐａｔｔｅｒｎ１  ［優先順位１：落水線データ  ，優先順位２：最急登線データ］
ｐａｔｔｅｒｎ２  ［優先順位１：最急登線データ，優先順位２：落水線データ］
ｐａｔｔｅｒｎ３  ［優先順位１：落水線データ  ，優先順位２：    なし    ］
ｐａｔｔｅｒｎ４  ［優先順位１：最急登線データ，優先順位２：    なし    ］
の４種類である。
次いで、グリッドデータを作成する範囲を決定する。
このとき、ｍｉｎ＿ｘ，ｍａｘ＿ｘ，ｍｉｎ＿ｙ，ｍａｘ＿ｙを入力するが、手入力による方法の他、グリッドデータの基になる線分データを読み込み、これらの線分データの始点と終点の中から（ｍｉｎ＿ｘ，ｍａｘ＿ｘ，ｍｉｎ＿ｙ，ｍａｘ＿ｙ）を計算により自動的に求める。ただし、分布するデータの範囲が常に長方形とは限らないので注意を要する。
【０１２２】
そして、使用者がグリッド間隔ｄを入力することにより、ｄを決定する。このことにより、計算範囲ｒが確定する。なお、この計算範囲ｒは、本実施例ではグリッドを中心とした半径ｒで定義されている。ｒのデフォルトは、ｄ／√２としているが、使用者が変更可能にしてある。ｒを決める際には、グリッド化の基になるデータの精度を考慮する必要がある。また、上記グリッド間隔ｄの入力により各グリッドの位置（ｘ，ｙ）、総数（ｎｕｍ＿ｘ，ｎｕｍ＿ｙ）が確定する。
続いて、優先順位１のデータを読み込み、線分番号をｓ、線分の総数をｓｕｍ＿ｓとする（ステップ８１４）。
次のステップ８１５にて、使用者が入力して決定したパターンが、ｐａｔｔｅｒｎ＝１  ｏｒ  ｐａｔｔｅｒｎ＝２と判断されると、引き続き優先順位２のデータを読み込み、線分番号をｓｓ、線分の総数をｓｕｍ＿ｓｓとする。
そして、グリッド点の行の値ｊ＝１，同じく列の値ｉ＝１，線分番号ｓ＝１とおく（ステップ８１７）。
以後の処理により、優先順位１のデータを用いて、グリッド点ｇｉ，ｊでの値を計算する。このとき保存データ番号ｎ＝０とおく。
そして、線分番号ｓの線分の始点をｐ１＝（ｘ１，ｙ１），終点をｐ２＝（ｘ２，ｙ２）とする。
【０１２３】
ステップ８２０、８２１、８２２、８２４及び８２５において、線分の始点、終点がともに１つのグリッドの範囲外にある、または、グリッド中心ｇｉ，ｊと、始点ｐ１と終点ｐ２を通る直線Ｔにグリッド中心ｇｉ，ｊから下ろした垂線とＴとの交点ｔ（以下単に「交点」という。）と、の距離が計算範囲ｒを越えると判断された場合、ステップ８２６に進み、線分番号が線分の総数に達していないときは、線分番号ｓを１インクリメントして再びステップ８１９からステップ８２５を実行する。その実行の結果、ステップ８２０、８２１、８２２、８２４及び８２５において全てＮｏと判断されると、ステップ８２８、８３０及び８３２において、
ａ）グリッド中心と交点との距離が計算範囲ｒを越えず、かつ、交点が線分ｐ１ｐ２上の点である（ステップ８２８）、
ｂ）グリッド中心と終点との距離がグリッド中心と始点との距離より短いか等しく、かつ、グリッド中心と終点との距離が計算範囲ｒを越えない（ステップ８３０）、
ｃ）グリッド中心と始点との距離がグリッド中心と終点との距離より短かく、かつ、グリッド中心と始点との距離が計算範囲ｒを越えない（ステップ８３２）、のいずれかに該当するとき、線分番号ｓとそれらの距離ｌを保存し（ステップ８３３−２）、ｎを１インクリメントして（ステップ８３３−３）ステップ８２６へ戻る。
また、上記ａ）〜ｃ）のいずれにも該当しないとき、線分番号ｓが線分の総数ｓｕｍ＿ｓに達していないとき、ｓを１インクリメントしてステップ８１９へ戻る。
【０１２４】
ステップ８３５において、保存されたデータ番号ｎがあると判断された場合（ｎ＞０）、最近傍の線分データを用いて勾配のグリッドデータを生成するとの入力による指示があれば、ステップ８３７で保存したｎ個の線分を、距離ｌが小さい順に並べ替え、次いで、距離ｌが最も小さい線分の勾配の値を、グリッド点ｇｉ，ｊでの勾配の値として、書き出す（ステップ８３８）。
一方、ステップ８３６において、最近傍の線分データを用いて勾配のグリッドデータを作るとの指示がないときは、ｎ個の線分の勾配の平均値を、グリッド点ｇｉ，ｊでの勾配の値として、書き出す（ステップ８４０）。
【０１２５】
一方、当該グリッド点の計算範囲ｒ内に優先順位１のデータが存在しないときは、ステップ８３５においてＹｅｓと判断され、使用者がｐａｔｔｅｒｎ１かｐａｔｔｅｒｎ２を選択していた場合は、ステップ８４１においてＹｅｓと判断されるから、ステップ８４７に進んで優先順位２のデータを用いて、グリッド点ｇｉ，ｊでの値を計算する。
ステップ８４８以降ステップ８７０までの処理内容は、既に説明したステップ８１９からステップ８４０までの処理と同一であるので説明を省略する。
なお、ステップ８４１は、優先順位２のデータを処理するための固有のものである。
そして、上記処理を実行して優先順位２のデータについて処理した結果、当該グリッド点の計算範囲内に優先順位２のデータが存在すれば、ステップ８６５〜８６９を実行した後、ステップ８４３に戻って、継続して処理を実行する。
また、上記ステップ８３５にてｎ＝０であり、かつ、選択したパターンがｐａｔｔｅｒｎ＝１でもｐａｔｔｅｒｎ＝２でもないときは、グリッド点ｇｉ，ｊでの値はないことから、−９９９９を書き出す（ステップ８４２）。
【０１２６】
その後、ステップ８４３において、グリッド点の列ｉが未だ総数ｎｕｍ＿ｘに達していないとき、次のグリッド点の列に進み（ステップ８４５）、ステップ８１８へ戻って、この循環を繰り返し実行する。
その結果、ステップ８４３において、グリッド点の列ｉが総数ｎｕｍ＿ｘに達したと判断されたとき、グリッド点の次の行に進み（ステップ８４６）、ステップ８１８へ戻り、グリッド点の列を１ずつ繰り上げ実行して、最終的に最後のグリッド点の処理が終了したとき、ステップ８４４においてＹｅｓと判断されて、グリッド化についての処理を終了する。
【０１２７】
［等高線属性データのグリッド化プログラム２］
このプログラムは、以前のグリッド点の処理において使用したデータについては、以後の処理においては使用しないことを特徴としており、その余の点においては、グリッド化プログラム１と同じである。
したがって、前記特徴点についてのみ、図３７〜３８を参照して説明することとする。
ステップ８７４において、全ての線分データに、ｕｓｅｄ＝−１という属性を与える。
そして、ステップ８９４において線分番号ｓと距離ｌを保存するときに、併せてｕｓｅｄの値を保存する。
このｕｓｅｄの値は、ｎ個の線分が全てｕｓｅｄ＝１である、すなわち当該全ての線分データは既に以前のデータ点においてデータとして使用済みのものである、と判断されたときは、使用可能なデータが皆無となるから、プログラム１と同様の処理を行う（ステップ９０３，９０７）。
反対の判断のときは、ｕｓｅｄ＝−１である線分のみを用いて、プログラム１と同様の処理を行うが、この時、計算に使用した線分に、ｕｓｅｄ＝１を付与することとしている（ステップ９０５，９０９）。
【０１２８】
一方、優先順位２のデータについては、もともとこのデータが使われることが少ないと想定されること、及び優先順位１のデータが皆無であるならば、優先順位２のデータもその数が少ないことが想定されることから、ｕｓｅｄ＝−１という属性は与えないこととしている。
【０１２９】
以上、勾配や斜面方位の計算プログラムについては、説明してこなかったが、ここで改めて説明することとする。
図３９を参照して、最初にｎ本のラインデータをライン番号が小さい順に読み込む。ライン番号ｉ（１，２，…，ｎ）のラインデータをＷｉとする。ｓ＝１とおく。
Ｗｉのｊ番目のデータ点をｗｉ，ｊとする。Ｗｉのデータ点の総数をｍとする。そして、ｊ＝１とおく。
ステップ９５５において、ｗｉ，ｊとｗｉ，ｊ＋１を端点とする線分ｗｉ，ｊｗｉ，ｊ＋１について、勾配θと斜面方位δを計算する際に、ｗｉ，ｊの三次元座標を（ｘｉ，ｊ，ｙｉ，ｊ，ｚｉ，ｊ）、ｗｉ，ｊ＋１の三次元座標を（ｘｉ，ｊ＋１，ｙｉ，ｊ＋１，ｚｉ，ｊ＋１）とする。
斜面勾配θと斜面方位δはそれぞれ次の［式Ａ］と［式Ｂ］で計算される（ステップ９５６〜９５７）。
また、斜面方位δは、反時計回りで、東が０［°］として、ｗｉ，ｊとｗｉ，ｊ＋１を比べて、標高（ｚｉ，ｊとｚｉ，ｊ＋１）が、低い方の三次元座標を（ｘ１，ｙ１，ｚ１）、高い方の三次元座標を（ｘ２，ｙ２，ｚ２）とする。
１）ｘ１−ｘ２≧０かつｙ１−ｙ２≧０  →  δ＝ａ［°］
２）ｘ１−ｘ２＜０かつｙ１−ｙ２≧０  →  δ＝１８０−ａ［°］
３）ｘ１−ｘ２＜０かつｙ１−ｙ２＜０  →  δ＝１８０＋ａ［°］
４）ｘ１−ｘ２≧０かつｙ１−ｙ２＜０→  δ＝３６０−ａ［°］
【０１３０】
（式Ａ）
2006091907.tif 000017
（式Ｂ）
2006091907.tif 000018
【０１３１】
ステップ９５８において、ｗｉ，ｊとｗｉ，ｊ＋１の位置座標と勾配θと斜面方位δなどを、目的に応じた形で書き出す。このとき、線分番号はｓである。
次のステップ９６０にて、データ番号ｊが総数ｍに達していなければ、ｊを１インクリメントして、次のデータについて計算し、当該ラインデータの総数を処理したら（ステップ９６２）、次のラインデータについて処理する（ステップ９６３）。
全てのデータについて処理が済んだら計算を終了する。
【０１３２】
本発明においては、属性まで計算した線分データを読み込み、計算範囲内に存在するデータのみを使用してグリッドデータに変換することから、当該グリッド内での値が求められるのが特徴である。
また、使用者が最近傍の線分データを用いて勾配のグリッドデータを生成するか、ｎ個の線分の勾配の平均値を用いて勾配のグリッドデータを生成するかを選択可能としたので、具体的なアウトプットの性質に応じて使い分けすることができる。
さらに、同種の基礎データが複数存在する場合に、各種データを単独でまたは組合せて使用し、目的に応じて柔軟に対応することができる。
【図面の簡単な説明】
【０１３３】
【図１】斜面の形状（Ｄｉｋａｕ（１９９０）を変更）の分類図である。Ｌ，直線；Ｖ，凸；Ｃ，凹。太線はこれらの形状を三つのグループに分ける。（１）ともに直線；（２）一方が直線で、他方が曲線；（３）ともに曲線
【図２】等高線データ構造と形式を示す。
【図３】点ｑｊの決定と点ｑｊを見つけるときのエラーの例を示す。（Ａ）ｔ１は選択点の中で最もｍに近く、等高線データＴは等高線データＭの隣に位置し、仮線分ｍｔ１はどの等高線とも交差しない。ｔ４とｔ５は選択点ではない。Ｂ１）仮線分ｍｔ１は等高線データＭと交差する。このエラーは等高線データＭが屈曲している部分で、しばしば発生する。
【図４】点ｗの候補を捜す手順を示す。
【図５】等高線データＭとＭの隣のＨ（あるいはＫ）の関係を表す。
【図６】斜面の水平断面形を分類する点を示す。
【図７】連続するベクターの外積によって得られる斜面の水平断面形を示す。
【図８】落水線データ・最急登線データのデータ形式を示す。
【図９】落水線データ・最急登線データを示す。
【図１０】谷型斜面の角度と尾根型斜面の角度：ωを示す。
【図１１】谷頭・尾根下端の検索を示す。
【図１２】水系番号の付与を示す。
【図１３】谷次数の計算の順番を示す。
【図１４】落水線データに沿った組み合わせを示す。
【図１５】垂直断面形の一単位を示す。
【図１６】任意のデータ点における斜面の垂直断面形を、唯一つに決める手順を示す。
【図１７】重複線分の削除を示す。
【図１８】データ点ｗｉ，ｊ＋１における落水線（最急登線）データの合流を示す。
【図１９】水平断面形のプログラム（その１）フローチャート
【図２０】水平断面形のプログラム（その２）フローチャート
【図２１】各データ点の斜面の水平断面形の判定のフローチャート
【図２２】最急登線生成（その１）フローチャート
【図２３】最急登線生成（その２）フローチャート
【図２４】落水線線生成（その１）フローチャート
【図２５】落水線線生成（その２）フローチャート
【図２６】谷頭決定のプログラムフローチャート
【図２７】尾根下端点の決定プログラムフローチャート
【図２８】同高等高線結合線分作成（その１）のフローチャート
【図２９】同高等高線結合線分作成（その２）のフローチャート
【図３０】同高等高線結合線分作成（その３）のフローチャート
【図３１】谷次数と垂直断面形の組み合わせプログラム（その１）フローチャート
【図３２】谷次数と垂直断面形の組み合わせプログラム（その２）フローチャート
【図３３】谷次数と垂直断面形の組み合わせプログラム（その３）フローチャート
【図３４】谷次数と垂直断面形の組み合わせプログラム（その４）フローチャート
【図３５】属性グリッドデータ作成１（その１）フローチャート
【図３６】属性グリッドデータ作成１（その２）フローチャート
【図３７】属性グリッドデータ作成２（その１）フローチャート
【図３８】属性グリッドデータ作成２（その２）フローチャート
【図３９】勾配と斜面方位の計算フローチャート
【図４０】尾根線生成プログラムフローチャート
【図４１】最急登線生成（参考）（その１）フローチャート
【図４２】最急登線生成（参考）（その２）フローチャート
【図４３】水系分類プログラムフローチャート
【図４４】谷線生成プログラムフローチャート
【図４５】谷次数の計算全体フローチャート
【図４６】谷次数の計算フローチャート
【図４７】Ｏｐｔｉｏｎ＿ｖ１フローチャート
【図４８】Ｏｐｔｉｏｎ＿ｃフローチャート
【図４９】一単位ラインの属性解析プログラムフローチャート
【図５０】Ｏｐｔｉｏｎ１フローチャート
【図１】
2006091907.tif 000019
【図２】
2006091907.tif 000020
【図３】
2006091907.tif 000021
【図４】
2006091907.tif 000022
【図５】
2006091907.tif 000023
【図６】
2006091907.tif 000024
【図７】
2006091907.tif 000025
【図８】
2006091907.tif 000026
【図９】
2006091907.tif 000027
【図１０】
2006091907.tif 000028
【図１１】
2006091907.tif 000029
【図１２】
2006091907.tif 000030
【図１４】
2006091907.tif 000031
【図１５】
2006091907.tif 000032
【図１６】
2006091907.tif 000033
【図１７】
2006091907.tif 000034
【図１８】
2006091907.tif 000035
【図２０】
2006091907.tif 000036
【図３０】
2006091907.tif 000037
【図３４】
2006091907.tif 000038
【図３５】
2006091907.tif 000039
【図３６】
2006091907.tif 000040
【図３７】
2006091907.tif 000041
【図３８】
2006091907.tif 000042
【図４２】
2006091907.tif 000043
【図４３】
2006091907.tif 000044
【図４５】
2006091907.tif 000045
【図４７】
2006091907.tif 000046
【図４９】
2006091907.tif 000047
【図１３】
2006091907.tif 000048
【図１９】
2006091907.tif 000049
【図２１】
2006091907.tif 000050
【図２２】
2006091907.tif 000051
【図２３】
2006091907.tif 000052
【図２４】
2006091907.tif 000053
【図２５】
2006091907.tif 000054
【図２６】
2006091907.tif 000055
【図２７】
2006091907.tif 000056
【図２８】
2006091907.tif 000057
【図２９】
2006091907.tif 000058
【図３１】
2006091907.tif 000059
【図３２】
2006091907.tif 000060
【図３３】
2006091907.tif 000061
【図３９】
2006091907.tif 000062
【図４０】
2006091907.tif 000063
【図４１】
2006091907.tif 000064
【図４４】
2006091907.tif 000065
【図４６】
2006091907.tif 000066
【図４８】
2006091907.tif 000067
【図５０】
2006091907.tif 000068