JP4203599B2 - 地形データ処理プログラム - Google Patents
地形データ処理プログラム Download PDFInfo
- Publication number
- JP4203599B2 JP4203599B2 JP2005310574A JP2005310574A JP4203599B2 JP 4203599 B2 JP4203599 B2 JP 4203599B2 JP 2005310574 A JP2005310574 A JP 2005310574A JP 2005310574 A JP2005310574 A JP 2005310574A JP 4203599 B2 JP4203599 B2 JP 4203599B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- line
- point
- contour
- valley
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Lifetime
Links
Landscapes
- Instructional Devices (AREA)
- Processing Or Creating Images (AREA)
Description
本発明により、等高線図を用いて、技術者が手動で行っている作業(例えば、谷頭の抽出や谷線図の作成など)を、自動的に行うことが可能になる。
本発明により得られる谷頭や谷線や谷次数などの情報は、土砂災害の発生位置や被害範囲の予測に役立ち、特に、豪雨による災害に有効である。また、本発明により得られる尾根線は、雪崩の災害についての重要な情報である。さらに、本発明により得られる、斜面型(図1)や勾配や斜面方位や谷次数などは、地形の特徴を把握するための基礎資料である。
具体的には、地形分類の情報は、近年、地方自治体等が整備を進めている、住民の防災意識を高め、自然災害時における住民の避難活動を支援するハザードマップの作成に活用できる。また、近年、環境問題が重視され、地域の自然環境に目が向けられることが多くなり、各地で、自然環境を紹介するためのビジターセンターの建設が進められている。地形は、自然環境を構成する要素であり、生態系(植生含む)に深く関わっている。本発明で得られる地形情報の出力図は、ビジターセンターのような施設で展示するのに適した資料となる。さらに、林学(林業)の分野では、高精度な土壌図が必要とされ、そのための高精度な地形分類手法が要求される。この分野でも、最近は、コンピュータを用いた手法を模索している。本発明は、精度の高い数値等高線データを用いることにより、この要求に応えることが可能である。
この解決策として、日本全国をカバーする標高グリッドデータ、例えば数値地図50mメッシュ(標高)などを用いて、地形特徴の把握、数値地形計測及び流域解析等をコンピュータ上で行う手法が開発されている。均一に配置された標高グリッドデータを使用し、同一の手法を用いて計算を行うことにより、客観的、かつ、広範囲の地形解析を、自動的に短時間に行うことが可能である。標高グリッドデータは、日本において、最も一般的に使われるDEM(Digital Elevation model)(数値標高モデル)である。
DEMを得るための最新技術として、代表的なものに、レーザースキャナ、あるいは、人工衛星を用いて、地表面の位置情報(ランダムなポイントデータ)を得る手法の開発も進んでいる。レーザースキャナを用いることにより、1〜2[m]間隔の、高密度のポイントデータを得ることが可能であるが、広域のデータ取得については、費用の面で問題がある。
また、地表面の位置情報を、はじめからグリッドデータの形式で得る手法は実用化されていないことから、数値等高線データやランダムなポイントデータなどから、標高グリッドデータを作成するために、様々なアルゴリズム(spline、kriging、idw、trend、TOPOGRIDなど)が開発されている。元の地形をできるだけ正確に再現した標高グリッドデータを作成するためには、使用するアルゴリズムの検討、および、各アルゴリズム毎に設定する計算の条件の値などの検討を十分に行う必要がある。
標高グリッドデータは規則的な配置を持つことから、DEMを一度、標高グリッドデータにしてしまえば、1)崩壊前後の標高グリッドデータの差から、崩壊や堆積の差分量を計算することは容易であり、2)標高グリッドデータから勾配や斜面方位などを計算する手法については、多くの手法が開発・紹介されており、3)各種グリッドデータを用いた地形の統計解析手法も、学会誌や書籍などで紹介されている。つまり、標高グリッドデータは、コンピュータ処理に適していて処理速度を格段に向上できる。
数値化された等高線データは、その不規則なデータ配置から、地形特徴の算出のために直接使用されることはほとんど無く、もっぱら、標高グリッドデータ取得のための基データとして使われることが多かった。
本発明では、手作業のごとく、等高線や等高線から得られる落水線などに沿って、斜面の形状に関する情報の計算や判断を行い、その方法は一通りである。したがって、標高グリッドデータを用いた各種地形情報の計算のように、様々な方法があり、方法により得られる結果が異なるということは無い。また、コンピュータが普及する以前から、等高線を基にした各種の分類図(地すべり、地質、土壌、崩壊、活断層など)が作成されており、これは、貴重な情報である。等高線データをベースに出力される本発明の結果(出力図)は、これらの図や写真などとの比較が、グリッドデータの場合に比べて、はるかに容易である。また、本発明では、結果として得られる、地形情報に関する属性付のラインデータをグリッドデータに変換する手法も含んでいることから、数値データとして普及している各種グリッドデータとの組み合わせも可能であり、応用できる範囲が広い。
これまで、標高グリッドデータは、等高線データを基に作成されることが多く、その場合はグリッド化する方法による誤差が生じる。また、グリッド化によりデータが等間隔に分断されてしまうため、谷線や尾根線のような斜面の境界、さらに山頂や凹地、鞍部といった地形の特徴を考慮した計算を行うことが難しい。しかし、等高線データをそのまま使用することにより、等高線が持つ情報にしたがって忠実に斜面を分類することが可能であり、等高線で表現された谷や尾根、山頂、凹地、鞍部等を考慮して行う手作業による分類を再現することができる。
本発明は、等高線データに基づいて各種のデータ処理を行うものである。
そこで先ず、等高線データのデータ構造について説明する。
図2(A)は、等高線データのイメージ図である。この図において、等高線の四角内の数字はライン番号を、同じく円内の数字はポイント番号を示している。
図2(B)は、データ構造を示すもので、ファイルは、x座標とy座標のデータを格納するxyファイルと、z座標のデータを格納するzファイルに分けられており、各ファイルには、前記ライン番号、ポイント番号、END記号が格納されている。
本発明は、等高線データを基に、水平断面形を分類するプログラム、落水線を生成するプログラム及び最急登線を生成するプログラムを基本プログラムとし、各種の応用的なデータ処理を行う応用プログラムとから構成されている。本発明は、該応用プログラムのうちの谷線生成プログラムであり、詳細は段落0048〜0058において説明する。
斜面の水平断面形の分類を行うためには、任意の等高線が、標高の高い等高線と低い等高線のどちらに向かって曲がっているのかを知る必要がある。
このため先ず、等高線データMの左右どちらの側に、標高の低いあるいは高い隣の等高線データが存在するのかを判別しなければならない。
さらに、斜面の水平断面形は、等高線の形状によって分類されることから、曲線の変曲点が、水平断面形を分ける点になる。
この水平断面形分類プログラムは、選択した等高線データの線分データの任意のデータ点を最短距離線生成の参照点として選定するステップと、前記選択した等高線データに隣接する高位又は低位の等高線の線分データの任意のデータ点のうち、前記参照点から所定半径以内に存在する任意のデータ点を選択点として選定するステップと、前記選択点と前記参照点の距離を演算し、最も距離が短い選択点を到達点の候補として、仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分を含む等高線は前記選択した等高線に隣接する高位又は低位の等高線であると判断するステップと、前記参照点から隣接する高位又は低位の等高線であると判断された等高線データの各線分の任意の点に延ばされた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を落水線作成の先端点の候補とするステップと、全ての先端点の候補の中から参照点に最も近い候補を先端点として決定するステップと、前記参照点から前記先端点に向かって最短距離線を生成するステップと、前記参照点を始点とし、1つ前のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、前記先端点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積及び前記参照点を始点とし、前記先端点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、1つ後のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積の符号を演算し、前記両ベクターの外積が正であるとき、前記先端点は参照等高線データの右側に位置し、前記両ベクターの外積が負であるとき、前記先端点は参照等高線データの左側に位置すると判断するステップと、前記参照点の1つ前のデータ点から参照点までのベクターと前記参照点から1つ後のデータ点までのベクターとが成す角度が所定値以下である場合、等斉斜面であると判定し、該角度が所定値を超過する場合においては、前記先端点が参照等高線データの左右いずれの側に位置するか、前記参照点の1つ前のデータ点を始点とし、参照点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、1つ後のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積の符号が正負いずれかによって、参照等高線データに隣接する隣接等高線データが参照等高線データの左右どちら側に位置し、左右どちら側が高いか、斜面が直線状か谷型か尾根型か、によって斜面の水平断面形を分類するステップとを含み、前記参照点が選択した等高線データの終点の1つ前に達するまで前記各ステップを繰り返し実行し、前記参照点が選択した等高線データの終点の1つ前に達したとき、次の等高線データを選択して前記各ステップを繰り返し実行することにより、等高線データの始点と終点を除く全データ点について斜面の水平断面形を分類し、該分類データを記憶、出力又は送信を実行するものである。
[等高線位置判別サブプログラム]
先ず、1ランク低い等高線データとの位置関係をチェックするチェック1について、図19,20に基づいて説明する。
ステップ101において、等高線データを読み込み、等高線データM(ライン番号i)のj番目のデータ点をmj、その前後をmj−1、mj+1とおく。このとき、カウンタの値、count=0とする。
次にステップ103で、参照等高線データMの参照点mjにおいて、Mの隣に位置し、かつ、Mより標高が低い等高線データKを捜す。
先ず、等高線データMが1ランク低い等高線データKの左右どちらの側に位置するかを調べ次いで、等高線データMが1ランク高い等高線データHの左右どちらの側に位置するかを調べる。以下、具体的に説明する。
参照点mjからmj+1、mj−1、kまでのベクターをそれぞれα、γ、βとし(図5)、等高線データのx座標とy座標の値のみを用いて(Z=0とし)、外積γ×βとβ×αを計算する(ステップ106)。γ×β>0、かつ、β×α>0であるとき、点kは等高線データMの右側に位置(ステップ108)し、図5のように、等高線データMの右側が低いことになる。また、もし、γ×β<0、かつ、β×α<0であるとき、点kは等高線データMの左側に位置し、等高線データMの左側が低いことになる(ステップ112)。(γ×β>0、かつ、β×α<0)、あるいは、(γ×β<0、かつ、β×α>0)、あるいは、γ×β=0あるいは、β×α=0であるとき、点kは判断には適さない点であるので、ステップ117へジャンプする。
Mの隣に位置し、かつ、Mより標高が高い等高線データ(等高線データをH、データ点をhとする)を使用することを除き、1ランク低い等高線データとの位置関係のチェックと同じ処理を行う。すなわち、ステップ117〜129において、等高線データHがMの左右どちらの側に位置するかを調べる。
参照点mjからhまでのベクターをβ’とし、等高線データのx座標とy座標の値のみを用いて(Z=0とし)、外積γ×β’とβ’×αを計算する(図5)。
γ×β’<0、かつ、β’×α<0であるとき、点hは等高線データMの左側に位置し、図5のように、等高線データMの左側が高いことになる。
また、もし、γ×β’>0、かつ、β’×α>0であるとき、点hは等高線データMの右側に位置し、等高線データMの右側が高いことになる。
(γ×β’>0、かつ、β’×α<0)、あるいは、(γ×β’<0、かつ、β’×α>0)、あるいは、γ×β’=0あるいは、β’×α=0であるとき、点hは判断には適さない点であるので、次のデータ点mj+1を用いるためにステップ130へジャンプする。
等高線データMと隣の等高線データとのトポロジー的関係を確認するために、参照点(mj=mj+1,mj+2,・・)を変えながら、上記チェック1と上記チェック2の処理を3回繰り返す。このとき、チェック回数は前記カウンタの値として記録される。
また、前記位置情報の内容は、等高線の右側が低いか、左側が高いとき、1、等高線の右側が高いか、左側が低いとき、2としている。
この具体例では、各等高線データの二番目のデータ点からチェックが開始され、参照点を変えながら、3回同じ位置関係が認められたとき、その位置関係を正として受け入れるようにしているが、チェック開始データ点、実施回数は特にこれに限定されず、適宜回数実施すればよい。
図21のステップ161において、前記等高線位置判別サブプログラムで作成された、等高線データと各等高線データの位置情報Jの値、すなわち、1か2を読み込む。
次のステップ162で、直線斜面を定義するγを入力する。この例ではγを5°としている。
次のステップ164で、等高線データMのデータ点mjにおいて、データ点mjからデータ点mj+1へ向かうベクターをαjとおくとき、等高線データMの全てのデータ点において、αj−1とαjの成す角θjと、外積αj−1×αjを計算する(図7参照)。但し、Mの始点と終点では計算しない。
もし、点mj+1での外積の符号が、点mjでの外積の符号と異なる場合は、点mjとmj+1との中点を変曲点とし、等高線データMに新たなデータ点として加える。
等高線データMの両側に、等高線データHとKが存在するとき、等高線データH、M、Kの標高をそれぞれ、EH、EM、EKとする(EH≧EM≧EK。ただし、EH=EM=EKである場合は除く。)。このとき、αj−1×αj<0であれば、ラインmj−1mjmj+1は等高線データMの左側に突き出る(図7A)。また、αj−1×αj>0であれば、ラインmj−1mjmj+1は等高線データMの右側に突き出る(図7B)。
もし、外積αj−1×αj=0である場合は、mj−1mjmj+1は直線であり、ベクターαj−1とαjの角θjは0°に等しい(0°≦θj<180°)。
点mjにおける斜面の水平断面形は、下記の要領で分類される。
ケース1.αj−1×αj=0(θj=0°):直線斜面(ステップ166)
ケース2.αj−1×αj<0 かつ 等高線データH(K)が等高線データMの左(右)側に位置する: 集水(谷型)斜面(図7A、ステップ169)
ケース3.αj−1×αj<0 かつ 等高線データH(K)が等高線データMの右(左)側に位置する: 発散(尾根型)斜面(図7A、ステップ170)
ケース4.αj−1×αj>0 かつ 等高線データH(K)が等高線データMの左(右)側に位置する: 発散(尾根型)斜面(図7B、ステップ173)
ケース5.αj−1×αj>0 かつ 等高線データH(K)が等高線データMの右(左)側に位置する: 集水斜面(図7B、ステップ174)
計算上、θj=0°となることはまれであるから、直線斜面を定義するγに対して、幅を持たせる必要がある。このため、本例では、γを±5°で計算している。
以上で水平断面形分類プログラムについての説明を終了し、次いで最急登線プログラムについて説明する。
このプログラムは、任意の等高線データのデータ点から、1ランク上の等高線データのうち最も近いデータ点に対し最急登線を生成するプログラムである。
この発明は、コンピュータに、先に生成された最急登線データの到達点を次に生成する最急登線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する高位の等高線の全ての線分データの任意の点を到達点として、個々の最急登線線分データを生成させて、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させる地形データ処理プログラムであって、該地形データプログラムは、任意の等高線データの線分データの任意のデータ点を最急登線生成の起点として選定する第1のステップと、上記選択した等高線データに隣接する高位の等高線の線分データの任意のデータ点のうち、前記起点からの距離が短いものが優先的に選ばれた任意のデータ点を選択点として選定する第2のステップと、前記選択点と前記起点の距離を演算し、最も距離が短い選択点を到達点の候補として、前記優先的に選ばれた任意のデータ点を含む等高線の線分である仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分の到達点を含む等高線は前記選択した等高線に隣接する高位の等高線であると判断する第3のステップと、前記起点から隣接する高位の等高線であると判断された等高線データの各線分の任意の点に引かれた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を最急登線作成の到達点の候補とする第4のステップと、全ての到達点の候補の中から起点に最も近い候補を到達点として決定する第5のステップと、前記起点から前記到達点に向かって最急登線線分データを生成する第6のステップとを含み、コンピュータに、前記決定した到達点を次に生成する最急登線線分データの起点として、前記第2乃至第6のステップを順次繰り返し実行させ、上記到達点の候補が全く存在せず最急登線の終点に到達したと判断されたとき、任意のデータ点を選択した後前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ、前記選択した任意のデータ点が前記任意の等高線データの最後のデータであると判断されたとき、まだ始点とするために用いていない等高線データを選択して前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ、始点とするために用いていない等高線データがないと判断されたとき処理を終了することにより、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させるための地形データ処理プログラムである。
このことにより、既に最急登線データを生成したか否か、又は、生成しようとして不可能であったか否かを判別できるようにする。
CPUは、ステップ201において等高線データ全てを読み込み、次のステップ202で最初にライン番号がnである等高線データをMn、Mnのnn番目のデータ点をmnn、作成する最急登線データの最急登線番号をs、最急登線番号sである最急登線データをWs、Wsのss番目の点をwssとする。
ステップ203では、等高線データの全データ点に上述の属性を与える。
次いで、n,s,nnに順次1をデータセットして起点m=mnnと定義したうえで、ss=1とデータセットする(ステップ205〜208)。
このステップ209,210により、既に最急登線データが生成されているか否かが判断される。
このとき、当該データ点mを起点とする最急登線データが既に生成されていたら、新たに最急登線データを生成することなく、ステップ211、213に移り、最急登線データのポイント番号が1であるか否か、また、mがMnの終点であるか否か判断し、終点でなければ、次のデータ点を選択(nn=nn+1)(ステップ214)してステップ207に戻る。mがMnの終点であれば、Mnがライン番号最大の等高線データか否か判断し、Mnがライン番号最大の等高線データでなければ、次の等高線データを選択(n=n+1)(ステップ216)してステップ206に戻り、Mnがライン番号最大の等高線データであれば、始点とするために用いていない等高線データがないと判断されるから、最急登線プログラム最急登線データの生成処理を終了する。
最急登線データのポイント番号が−10でないときは、mを最急登線データW(最急登線番号s)の発生点とする。このとき、mはWのss番目の点(初期値ss=0)となる(実際には、ステップ208にて、mはWの1番目の点とされる)。
次いで、ステップ217〜218において、当該等高線データMnより標高が1ランク高い等高線データがあり、かつ、Mnより高い等高線データのデータ点が前記起点mの半径R以内にあるとき、標高が1ランク高い等高線データの全てのデータ点のうち、起点mから所定半径R以内に存在するデータ点を全て選択し、選択した全てのデータ点にフラグ1を立てる(ステップ219)。
ステップ217において、当該等高線データMnより標高が1ランク高い等高線データがないとき、および、ステップ218において、Mnより高い等高線データのデータ点が起点mの半径R以内にないときは、その起点は最急登線データの終点であって、mから最急登線の線分を上方へ引くことはできないから、そのデータ点に−10の属性を与えて、ステップ211に戻る。
上記の所定半径Rは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Rは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、R=150mとした(1:25,000地形図上では6mmとなる)。Rの選択は、計算時間に影響するので重要である。
次いで、選択されたこれらの等高線データの線分(以下「仮線分」という。)を用いて、標高が1ランク高い等高線データTが選択された等高線データMnの隣りに存在するかどうかを調べる。
t1がMnの隣りの等高線データのデータ点であれば、線分mt1はどの仮線分とも交差することはない(図3、A)。
しかし、t1がMnの隣りの等高線データのデータ点でないならば、線分mt1は上記したいずれかの仮線分と交差する。
よって、ステップ223において、線分mt1が仮線分と交差すると判断されたときは、t1を選択点の中から除去(ステップ224)するため前記フラグを消去し、他に選択点がある限り(ステップ225)ステップ221に戻って起点mに最も近い点を演算により選んで、ステップ222、223に進んでこの処理を繰り返す。ステップ225において他に選択点がないときは、前述した手順でステップ211に戻る。
このとき、全ての選択点を用いても標高が1ランク高い等高線データを決定できない場合は、データ点mを最急登線データの終点とする。
T=Q、t1=qjとする(qjはQのj番目のデータ点)。
このとき、k=j,kk=jとし、データ点qjの前後のデータ点についても、仮線分と交差するか否か調べるために、
min=j−5(但し、j−5<0ならmin=1)とし、
max=j+5(但し、j+5>[Qのポイント番号の最大値]なら、max=[Qのポイント番号の最大値])とする(ステップ226)。
次いで、起点mと標高が1ランク上の隣接する等高線データQのデータ点qjの前後(この例では、前後5つずつ)のデータ点との線分(qj+5.... qj−5)は仮線分と交差するかについて調べ(ステップ227〜229,231〜233)、起点mと各データ点との線分が仮線分と交差しないものを最急登線作成の先端点wの候補とする(ステップ230.234)。
さらに、起点mから、qk+1とqkを通る直線とqkk−1とqkkを通る直線に垂線をおろして交点をpk、pkkとし(ステップ238.244)、pk、pkkは線分qk+1qk、qkk+1qkkの上にあり、かつ、mpk、mpkkの線分は仮線分と交差しないものについて、最急登線作成の先端点wの候補とする(ステップ241.247)。
そして、すべての先端点の候補の中から起点mに最も近い点を最急登線作成の先端点wとして選び(図4参照)、mとwを結んで最急登線を生成し、生成した最急登線データは、最急登線データファイルに記憶される(ステップ250.251)。
一方、mが等高線データMiのデータ点miiであるときは、rise_j[i][ii]が−10か、またrise_i[i][ii]が−1か否か判断し、−10であれば、mは終点であり、−1であれば、ステップ217に戻り最急登線データの生成処理に入る。
前記ステップ256において、rise_i[i][ii]が−1でないときは、miiを通る最急登線データが既に存在する。そして、miiはrise_i[i][ii]番目の最急登線データのrise_j[i][ii]番目の点である(ステップ258)。
次いでステップ259において、Wの始点からss−1番目の点(ss番目の点がmである)について調べる。
ライン番号rの等高線データMrのrr番目のデータ点mrrと一致する点については、等高線データ点に、rise_i[r][rr]=Wsのライン番号,rise_j[r][rr]=Wsでのポイント番号、という属性を与える。
なお、ステップ248において、wの候補が全く存在しないときは、ステップ266の処理をした上で、ステップ211に戻る。
また、ステップ256において、最急登線データのライン番号が−1であるときは、最急登線データは存在しないのであるから、ステップ217に戻る。
さらに、ステップ255において、最急登線データのポイント番号が−10であるときは、mを最急登線データWの終点として、ステップ259〜264の処理をして、ステップ213に戻る。
この場合のプログラムのフローチャートは、図41、42のようになる。
次いで、落水線生成プログラムについて説明する。
前記最急登線生成プログラムが任意の等高線データのデータ点から、1ランク上の等高線データの最大傾斜で登るデータ点に対して、最急登線を生成するものであるのに対し、このプログラムは反対に、任意の等高線データのデータ点から、1ランク下の等高線データの最大傾斜で下るデータ点に対し、落水線を生成するものである。
そして、このプログラムについては、後述する谷線生成プログラムにおいて実際に使用しているので、その際に詳しく説明する。
以上、本発明の基本プログラムについて説明した。
次いで、各種の応用プログラムについて説明する。
応用プログラムは、要旨外の谷頭決定プログラム(段落0033〜0046参照)、請求項1に係る谷線生成プログラム(段落0047〜0058参照)、要旨外の尾根線生成プログラム(段落0059〜0066参照)、要旨外の谷次数計算プログラム(段落0081〜0090参照)、要旨外の谷次数と斜面の垂直断面形の組合せプログラム(段落0091〜0111参照)及び要旨外の属性をもったラインデータをグリッド化するプログラム(段落0112〜0132参照)である。以下、これら応用プログラムについて順に説明する。
谷線や尾根線は、山地全体の形状を把握するために重要な情報である。特に谷頭は、山地における侵食の起源であり、谷の最上部であり、風化や重力などによって斜面の後退が起きる(谷頭侵食)。この谷頭の時間的経緯に伴う移動の速度、方向は、山地の侵食と地形変化およびその速度を予測する上で重要である。
本発明は、出来る限り伝統的な手作業に近い手順で、数値等高線データのデータ点の中から、谷頭に該当する点を選び出すものである。
ここでいう谷頭とは、山地において最初に谷型斜面が顕れた谷の最上部を意味する。
このプログラムは、最初に谷型斜面であることを規定する上限角度を決定するために、その角度を入力して定義する。
そして、段落0012〜0019において既に述べた水平断面形分類プログラムを実行し、水平断面形の分類データを出力する。
次いで、この水平断面形の分類データを読み込んで1単位ラインの属性を解析する。
本実施例では、θj<5°であるとき、データ点mjにおける水平断面形は直線斜面として取り扱う。
谷頭を定義するための項目としては、本実施例では、谷型斜面の角度s1Ps2を用いて谷頭を定義しているが、谷型斜面の幅(D1)や谷型斜面の深さ(L/D1)を用いて定義しても良いこと勿論である(図10参照)。
図49を参照して説明する。
最初に、上述した基本プログラムである水平断面形分類プログラムの出力結果を読み込み、各等高線データを水平断面形によって分類し、分類したラインを一単位として、一単位ライン毎に書き出すラインファイルを作成する。分類したラインのライン番号をsとする(ステップ401)。
そして、Mがポリゴンか否かを判断(ステップ403)し、ポリゴンであれば、データ点の始点と終点のフラグが同じであるか否か調べ(ステップ404)、同じでなければm1とmn−1の中点を一単位の始点とし(ステップ405)、同じであればm1を一単位の始点とする(ステップ406)。
ステップ403においてポリゴンでないと判断されたときは、m1を一単位の始点とする(ステップ407)。
また、n=3でないときは、読み込んだ点とひとつ前の点のフラグが等しいかどうか調べ(ステップ413)、等しいときは読み込んだ点のひとつ先の点を一単位の終点とし(ステップ414)、等しくないときは読み込んだ点とひとつ前の点の中点を一単位の終点とする(ステップ416)して、それぞれ前記サブルーチンOption1に進む。
上述のステップ409において、今回読み込んだ点が終点のひとつ手前でないときは、今回読み込んだ点とひとつ前の点のフラグが等しいかどうか調べ(ステップ420)、等しくないときは読み込んだ点とひとつ前の点の中点を一単位の終点とし(ステップ421)て、サブルーチンOption1に進み、等しいときはさらに先のデータ点を読み込んで(ステップ424,408)、上記処理を繰り返す。
次いで、直線D1に対して一単位のライン上の始点と終点を除く各データ点から垂線を下ろし、それぞれの垂線長を求め、最長のものをL、Lの端点であるデータ点(ポイント番号b)を決定する(ステップ432)。このポイント番号bのデータ点を谷型斜面あるいは尾根型斜面の頂点とする。
そして、一単位の始点とポイント番号bのデータ点の長さ(s1p)と、一単位の終点とポイント番号bのデータ点の長さ(s2p)を計算し、線分s1p,線分s2p,線分D1を用いて谷型斜面、あるいは、尾根型斜面の角度ωを計算する(ステップ433)。
角度は、次式を用いて計算する。
始点、終点を除く一単位ライン上の全データ点での水平断面形は同じである。そこで一単位のライン毎に、直線:0、尾根型:1、谷型:−1の属性を付与する(ステップ434)。
一単位のライン毎に、水平断面形(r)という属性と共に、xy座標を書き出す(ステップ435)。
このとき、一単位の始点が連続する二つのデータ点(仮にmj−1とmj)の中点であるときは、mjから書き出す。同様に、一単位の終点が連続する二つのデータ点(仮にmj−1とmj)の中点であるときは、mj−1まで書き出す
書き出されるファイルの内容は下表の通りとなる。このファイルをfile_xyr1とする。
file_xyr1の構造
(表1の2)
このとき、ω<aである谷型斜面の頂点(ポイント番号b)にあたるデータ点であるときは、r=−10、谷型斜面で頂点以外のデータ点であるときは、r=−1、ω<aである尾根型斜面の頂点(ポイント番号b)にあたるデータ点であるときは、r=10、尾根型斜面で頂点以外のデータ点であるときは、r=1、それ以外は、r=0の属性を与える(ステップ435)。
また、ラインの標高ファイルにs,Zsも書き出す(Zsは、番号sの水平断面形の一単位のラインの標高)。
次のステップ436において、sを1インクリメントして一単位の属性解析プログラムに戻る。
そして、ステップ418−1において、flag[m1]=flag[mn−1]であるか調べ、そのいずれかにより、ステップ404において決定した始点を終点として、再度サブルーチンOption1を実行する(ステップ419)。Mがライン番号の最大の等高線データになるまで、以上の処理を繰り返し、Mがライン番号の最大の等高線データになったら、メインルーチンに復帰する。
図26のフローチャートを参照して説明する。
谷頭点を決定するために先ず、その候補の抽出を行う(図11_1)。
谷頭となるデータ点を見つけるために、前述の一単位ラインの属性解析プログラムでfile_xyr1に書き出したr=−10であるデータ点を結ぶライン(以下「ジグザグライン」という。)を引く処理を実行する。
最初に、file_xyr1とその標高ファイルを読み込み、標高の高い等高線から順番に並べ替える(ステップ441)。
次いでジグザグラインの線分の最大長Rを決める(ステップ443)。
全データ点に、fall_i(等高線データのライン番号,等高線データのポイント番号)=−1、fall_j(等高線データのライン番号,等高線データのポイント番号)=−1という属性を与える。等高線データには、読み込み順に、ライン番号n(1,2,3…,n_end)を与える。このとき、g=0とする(ステップ444)。
また、ライン番号nの等高線データをMとし、Mの各データ点に、ポイント番号nn(1,2,3…,nn_end)を与える(ステップ445)。
そして、Mのポイント番号nnのデータ点をmとする(ステップ446)。
次のステップ447で、mの属性rが−10であるか否か調べ、−10であればそのデータ点が谷頭の候補であるから、ステップ448に移ってfall_i(n,nn)>0かどうか判断する。
ここで、fall_i(n,nn)>0であればジグザグライン番号が既についていて、mを通るジグザグラインが既に存在するので、mを始点とするジグザグラインは発生させない。逆にfall_i(n,nn)>0でなければ、fall_j(n,nn)が−10であるか否か判断し、−10であれば、既に、mからジグザグラインを延長させようとして、不可能であったので、mを始点とするジグザグラインは発生させない。fall_j(n,nn)が−10でないときは、g=g+1として、mをジグザグラインW(ライン番号g)の発生点とする。このとき、mはWのgg番目の点(gg=1)となる(ステップ450)。
ここで、mからジグザグラインWの延長を試みる。このとき、mのWでのポイント番号はggである。
ステップ455において、mと前記各選択点とを結ぶ各線分(選択線分)の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で、長さが最小となる選択点を、mからの延長点wと決定する(ステップ456)。
そして、wを含む等高線データをM、wをmに置き換え(ステップ457)、次のステップ458に進む。ただし、このmをライン番号iiの等高線データMのポイント番号jjのデータ点とする。
ここで、fall_i(ii,jj)=−1であれば、ジグザグラインのポイント番号ggを1インクリメントして(ステップ459)、ステップ452へ戻る。
また、fall_i(ii,jj)=−1でないとき、fall_j(ii,jj)=−10か否か調べ(ステップ460)、−10であれば、mをWの終点とし(ステップ463)、−10でなければ、WにジグザグラインW’の[fall_j(ii,jj)+1]番目の点から終点までを接続する(ステップ462)。
次に、Wの始点からgg−1番目の点(gg番目の点がm)について調べる。等高線データ(仮にT,ライン番号aa)のデータ点(仮にt,ポイント番号bb)と一致する点については、等高線データのデータ点にfall_i(aa,bb)=g、fall_j(aa,bb)=Wでのポイント番号という属性を与えた(ステップ464)上で、ステップ467に戻る。
ステップ467においてポイント番号が最大値に達したと判断されたときは、先にステップ469において付与されたライン番号が最大値に達しているか否か調べ、達していなければライン番号nを1インクリメントしてステップ445へ戻り、以上の処理を繰り返し実行する。
処理が進んで全ての処理が実行され、ステップ469においてYesと判断されたときは、ジグザグラインの作成を終了し、作成されたジグザグラインの始点を谷頭と決定する(ステップ472)。
最終的な処理として、file_xyr1を再び呼び込み、読み込んだ(x,y)座標が、作成されたジグザグラインの始点の(x,y)座標と等しいとき、rの属性を−10とし、それ以外のときはr=0に変更し、file_xyr1と同じ形式で書き出す。これをfile_xyr2とする(ステップ474)。
以上から明らかなように、file_xyr2は、file_xyr1に比べて、属性rの値だけが変化していることとなる。
なお、谷頭のデータ点のみのポイントファイルを作成することも可能である。
谷線や尾根線は、山地全体の形状を把握するために重要な情報である。特に谷線は、水系の分類や水系領域の抽出や谷密度の計算等に不可欠の情報であり、地形の侵食、崩壊した物質の移動経路、地形の変化の過程の解明、更に、地殻運動や岩石構造によるリニアメントの抽出において利用されている。
本発明は、出来る限り伝統的な手作業に近い手順で谷線を生成することを目的とし、数値等高線データのデータ点の中から、谷頭に該当する点を選び出し、これらの点から谷線を発生させるものである。
ここでいう谷線とは、谷頭からのみ発生させた、最も急傾斜で下る落水線を意味する。
したがって、谷の最上部である谷の頂点以外のデータ点からは落水線は発生されない。この点で、等高線データの全てのデータ点から発生される落水線とは異なる。
この段階で、谷線の生成をする。
CPUは、ステップ302で最初にライン番号がnである等高線データをMn、Mnのnn番目のデータ点をmnn、作成する落水線データの落水線番号をs、落水線番号sである落水線データをWs、Wsのss番目の点をwssとする。
ステップ303では、等高線データの全データ点にrの属性を与える。すなわち、ライン番号n、ポイント番号nnであるデータ点mnnにおいて、fall_i[n][nn]=−1、fall_j[n][nn]=−1とする。
次のステップ304で、任意の点aから落水線の線分を下方に向けて引くとき、aを起点mとする。
次いで、n,s,nnに順次1をデータセットして起点m=mnnと定義したうえで、ss=1とデータセットする(ステップ305〜308)。
このステップ309,310により、既に落水線データが生成されているか否かが判断される。
このとき、当該データ点mを起点とする落水線データが既に生成されていたら、新たに落水線データを生成することなく、ステップ311、313に移り、落水線データのポイント番号が1であるか否か、また、mがMnの終点であるか否か判断し、終点でなければ、次のデータ点を選択(nn=nn+1)(ステップ314)してステップ307に戻る。mがMnの終点であれば、Mnがライン番号最大の等高線データか否か判断し、Mnがライン番号最大の等高線データでなければ、次の等高線データを選択(n=n+1)(ステップ316)してステップ306に戻り、Mnがライン番号最大の等高線データであれば、落水線データの生成処理を終了する。
次いで、ステップ317〜318において、当該等高線データMnより標高が1ランク低い等高線データがあり、かつ、Mnより低い等高線データのデータ点が前記起点mの半径R以内にあるとき、標高が1ランク低い等高線データの全てのデータ点のうち、起点mから所定半径R以内に存在するデータ点を全て選択し、選択した全てのデータ点にフラグ1を立てる(ステップ319)。
ステップ317において、当該等高線データMnより標高が1ランク低い等高線データがないとき、および、ステップ318において、Mnより低い等高線データのデータ点が起点mの半径R以内にないときは、その起点は落水線データの終点であって、mから落水線の線分を下方へ引くことはできないから、そのデータ点にfall_j[n][nn]=−10の属性を与えて、ステップ311に戻る。
上記の所定半径Rは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Rは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、R=150mとした(1:25,000地形図上では6mmとなる)。Rの選択は、計算時間に影響するので重要である。
次いで、選択されたこれらの等高線データの線分(以下「仮線分」という。)を用いて、標高が1ランク低い等高線データTが選択された等高線データMnの隣りに存在するかどうかを調べる。
t1がMnの隣りの等高線データのデータ点であれば、線分mt1はどの仮線分とも交差することはない(図3、A)。
しかし、t1がMnの隣りの等高線データのデータ点でないならば、線分mt1は上記したいずれかの仮線分と交差する。
よって、ステップ323において、線分mt1が仮線分と交差すると判断されたときは、t1を選択点の中から除去(ステップ224)し、他に選択点がある限り(ステップ325)ステップ321に戻ってt1の次に起点mに近い点t2を選んで、ステップ322、323に進んでこの処理を繰り返す。ステップ325において他に選択点がないときは、前述した手順でステップ311に戻る。
このとき、全ての選択点を用いても標高が1ランク低い等高線データを決定できない場合は、データ点mを落水線データの終点とする。
T=Q、t1=qjとする(qjはQのj番目のデータ点)。
このとき、k=j,kk=jとし、データ点qjの前後のデータ点についても、仮線分と交差するか否か調べるために、
min=j−5(但し、j−5<0ならmin=1)とし、
max=j+5(但し、j+5>[Qのポイント番号の最大値]なら、max=[Qのポイント番号の最大値])とする(ステップ326)。
次いで、起点mと1ランク下の隣接する等高線データQのデータ点qjの前後(この例では、前後5つずつ)のデータ点との線分(qj+5‥‥qj−5)は仮線分と交差するかについて調べ(ステップ327〜329,331〜333)、起点mと各データ点との線分が仮線分と交差しないものを落水線作成の先端点wの候補とする(ステップ330.334)。
さらに、起点mから、qk+1とqkを通る直線とqkk−1とqkkを通る直線に垂線をおろして交点をpk、pkkとし(ステップ338.344)、pk、pkkは線分qk+1qk、qkk+1qkkの上にあり、かつ、mpk、mpkkの線分は仮線分と交差しないものについて、落水線作成の先端点wの候補とする(ステップ341.347)。
そして、すべての先端点wの候補の中から起点mに最も近い点を落水線作成の先端点wとして選び、mとwを結んで落水線を生成し、生成した落水線データは、落水線データファイルに記憶される(ステップ350.351)。
一方、mが等高線データMiのデータ点miiであるときは、fall_j[i][ii]が−10か、また−1か否か判断し、−10であれば、mは終点(ステップ365)であり、−1であれば、ステップ317に戻り落水線データの生成処理に入る。
前記ステップ356において、fall_i[i][ii]が−1でないときは、miiを通る落水線データが既に存在する。そして、miiはfall_i[i][ii]番目の落水線データのfall_j[i][ii]番目の点である(ステップ358)。
次いでステップ359において、Wの始点からss番目の点([ss+1]番目の点がmである)について調べる。
ライン番号rの等高線データMrのrr番目のデータ点mrrと一致する点については、データ点mrrに、fall_i[r][rr]=Wsのライン番号,fall_j[r][rr]=Wsでのポイント番号、という属性を与える。
なお、ステップ348において、wの候補が全く存在しないときは、ステップ366の処理をした上で、ステップ311に戻る。
また、ステップ356において、落水線データのfall_i[i][ii]が−1であるときは、落水線データは存在しないのであるから、ステップ317に戻る。
さらに、ステップ355において、落水線データのポイント番号が−10であるときは、既にmから落水線データを延長させようとして不可能であったので、mを落水線データWの終点として、前述のステップ359の処理をする。
そして落水線の終点まで到達したら、再度ステップ311に戻って、次のデータ点から終点に到達するまで落水線データを生成し続ける。
当該等高線データの最後のデータ点からの落水線データの生成が終了したら、1ランク下の等高線データの最初のデータ点から落水線データを生成し、順次この処理を実行し、ライン番号が最大の等高線データに到達したとき落水線データの生成を終了する。
最急登線は、山地全体の形状を把握するために重要な情報である。特に尾根線は、特に雪崩との関係が深いことが指摘されており、雪崩のハザードマップ作成、それによる、災害防止に不可欠のものとなっている。
本発明は、出来る限り伝統的な手作業に近い手順で尾根線を生成することを目的とし、数値等高線データのデータ点の中から、尾根下端点に該当する点を選び出し、これらの点から尾根線を発生させるものである。
ここでいう尾根線とは、尾根下端点からのみ発生させた、最も急傾斜で登る最急登線を意味する。
したがって、最も突き出した点である尾根の尾根下端点以外のデータ点からは尾根線は発生されない。この点で、等高線データの全てのデータ点から発生される最急登線とは異なる。
そして、前述した水平断面形分類プログラム(図19〜21参照)を実行し、水平断面形の分類データを出力する。
ついで、この水平断面形の分類データを読み込んで1単位ラインの属性(図49参照)を解析する。
前記解析によって得られたデータに基づいて尾根下端点を決定するサブプログラム(図27参照)を実行し、次いで尾根線を生成するサブプログラムを実行し、尾根線を生成する。
本実施例では、θj<5°であるとき、データ点mjにおける水平断面形は直線斜面として取り扱う。
尾根下端点を定義するための項目としては、本実施例では、尾根型斜面の角度(∠s1ps2)を用いて尾根下端点を定義しているが、尾根型斜面の幅(D1)や尾根型斜面の深さ(L/D1)を用いて定義しても良いこと勿論である(図10_2)。
このプログラムについては、既に段落0036から段落0048にて説明した谷線生成プログラムの1単位ラインの属性解析プログラムと同一であるので、詳しい説明を省略する。
尾根下端点となるデータ点を見つけるため、前述の一単位ラインの属性解析プログラムでfile_xyr1に書き出したr=10であるデータ点を結ぶライン(以下「ジグザグライン」という。)を引く。
図27を参照して説明する。
尾根下端点を決定するために先ず、その候補の抽出を行う(図11_2)。
最初に、file_xyr1とその標高ファイルを読み込み、標高の低い等高線から順番に並べ替える(ステップ441−2)。
次いでジグザグラインの線分の最大長Rを決める(ステップ443−2)。
全データ点に、rise_i(等高線データのライン番号,等高線データのポイント番号)=−1、rise_j(等高線データのライン番号,等高線データのポイント番号)=−1という属性を与える。等高線データには、読み込み順に、ライン番号n(1,2,3…,n_end)を与える。このとき、g=0とする(ステップ444−2)。
また、ライン番号nの等高線データをMとし、Mの各データ点に、ポイント番号nn(1,2,3…,nn_end)を与える(ステップ445−2)。
そして、Mのポイント番号nnのデータ点をmとする(ステップ446−2)。次のステップ447−2で、mの属性rが10であるか否か調べ、10であればそのデータ点が尾根下端点の候補であるから、ステップ448−2に移ってrise_i(n,nn)>0かどうか判断する。
ここで、rise_i(n,nn)>0であればジグザグライン番号が既についていて、mを通るジグザグラインが既に存在するので、mを始点とするジグザグラインは発生させない。逆にrise_i(n,nn)>0でなければ、rise_j(n,nn)が−10であるか否か判断し、−10であれば、既に、mからジグザグラインを延長させようとして、不可能であったので、mを始点とするジグザグラインは発生させない。rise_j(n,nn)が−10でないときは、g=g+1として、mをジグザグラインW(ライン番号g)の発生点とする。このとき、mはWのgg番目の点(gg=1)となる(ステップ450−2)。ここで、mからジグザグラインWの延長を試みる。
ステップ455−2において、mと前記各選択点とを結ぶ各線分(選択線分)の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で、長さが最小となる選択点を、mからの延長点wと決定する(ステップ456−2)。
そして、wを含む等高線データをM、wをmに置き換え(ステップ457−2)、次のステップ458−2に進む。ただし、このmを、ライン番号iiの等高線データMのポイント番号jjのデータ点とする。
ここで、rise_i(ii,jj)=−1であれば、ジグザグラインのポイント番号ggを1インクリメントして(ステップ459−2)、ステップ452−2へ戻る。
ステップ467−2においてポイント番号が最大値に達したと判断されたときは、先にステップ444−2において付与されたライン番号が最大値に達しているか否か調べ、達していなければライン番号nを1インクリメントしてステップ445−2へ戻り、以上の処理を繰り返し実行する。
最終的な処理として、file_xyr1を再び呼び込み、読み込んだ(x,y)座標が、作成されたジグザグラインの始点の(x,y)座標と等しいとき、rの属性として10を、それ以外ときはr=0に変更し、file_xyr1と同じ形式で書き出す。これをfile_xyr2とする(ステップ474−2)。以上から明らかなように、file_xyr2は、file_xyr1に比べて、属性rの値だけが変化していることとなる。
以上の処理が終了したところで、尾根線生成プログラムのメインルーチンに復帰する。
尾根線を生成する。
先ず、file_xyr2とその標高ファイルを読み込み、r=10であるデータ点、すなわち尾根下端点からのみ、尾根線データを生成するために、最急登線生成プログラムのサブルーチン(図22参照)に入って、ステップ201をスキップしてステップ202から処理を開始する。
以後の処理内容については、段落0022から段落0031において説明したことと同じであるので、説明を省略する。
以下に述べるプログラムは、任意の二つの等高線を結ぶ線分の数は1本とすることを前提としている。
一単位ラインの属性解析プログラムを再度実行する。その際に実行するオプションはOption1(図50参照)である。このときD2は計算しない。また、変曲点については書き出さないので、読み込んだデータ点の数と書き出すデータ点の数は等しいこととなる。
一単位ラインの属性解析プログラムを終了したら、メインルーチンに戻って、同高等高線結合線分生成プログラムを実行する。
図28乃至30を参照して説明する。
最初に、使用者が、等高線の全長max_length、結合する線分の最大長limit_lengthを入力して決定する。
全長がmax_lengthより短く、始点=終点である等高線データを開始ポリゴンとし、開始ポリゴンと同じ高さの等高線とを結ぶ線分を引く。この線分は、使用者が決定した最大長limit_lengthを越えることはない。
次いでfile_xyrを読み込み、読み込み順にライン番号i(1,2,3…)を与える。等高線の総数をsumとする。また、ライン番号iの等高線のデータ点の総数をP[i]とする(ステップ482)。
また、file_Zを読み込み、各等高線の標高をZ[i]とする(ステップ483)。
次のステップ484において、各等高線について、ライン番号がiであるとき、(1)始点=終点である等高線データには、poly[i]=1という属性を与え、
それ以外の場合はpoly[i]=0という属性を与えるとともに、
(2)全長を計算し、ライン番号line_i[i]と全長line_l[i]を保存一時記憶する。次いで、s=1,i=1とする(ステップ485〜486)。次のステップ487において、poly[i]=1であり、かつ、全長<max_length以下であり、かつ、標高が0より上であれば、ライン番号(poly_i[s]=i)と全長(poly_l[s]=line_l[i])を保存一時記憶して、sを1インクリメントして、ステップ490に進む(ステップ487〜489)。
一方、ステップ487において、poly[i]=1の全長<max_lengthである、標高が0より上である、の条件のいずれかを満たさないときは、同じくステップ490に進む。
ステップ490では、ライン番号iが等高線データの総数sumと等しいか否か判断し、等しくなければ、ライン番号iを1インクリメントして、ステップ487へ戻って処理を繰り返し実行する。
一方、ライン番号iが等高線データの総数sumと等しいと判断されたときは、開始ポリゴンの総数p_numをsとして、開始ポリゴン選択処理を終了する(ステップ492)。
次いで、line_i[i]とline_l[i]をline_l[i]が長い順に並べ替える。
この処理により、line_l[1](等高線番号line_l[1])が、全長が最も長い等高線となり、line_l[sum](等高線番号line_l[sum])が、全長が最も短い等高線となる(ステップ494)。
書き出される線分の番号を、number=0とする。また、ii=1と置く(ステップ496)。
次いで、線分を結べるかどうかの検討を行う開始ポリゴンである等高線のライン番号iをpoly_i[ii]とする(ステップ497)。
また、hh=1とした上で、開始ポリゴン(ライン番号i)との線分を結べるかどうかを検討する等高線のライン番号hをline_i[hh]とする(ステップ498〜499)。
そして、標高は0である、開始ポリゴンと開始ポリゴンとの線分を結べるかどうかを検討する等高線の標高が等しくない、開始ポリゴンである等高線のライン番号と開始ポリゴン(ライン番号i)との線分を結べるかどうかを検討する等高線のライン番号hとが等しい、の3条件のいずれかを満たす場合、等高線番号hhが等高線の総数sumと等しくないとき、hhを1インクリメントし(ステップ504)、等しいときは、開始ポリゴンの総数に至っていないとき次の開始ポリゴンを選択し(ステップ506)、開始ポリゴンの総数に至ったとき線分の作成を終了して(ステップ507)、線分を書き出す(ステップ508)。
このときt=1からt=書き出す線分番号の最大値まで、出力ファイルへの書き出しを繰り返し実行する(ステップ509〜511のサイクル)。このときの出力データの形式は、次の表のとおりである。
tの値が書き出す線分番号の最大値まで達したとき、出力ファイルへの書き出しを停止する(ステップ511)。
そして、点gが尾根型斜面(r=1)であるデータ点あれば(ステップ518)、poly[h]=1かつg=p[h]でなければ、点jと点gの距離lを計算し(ステップ520)、llがlより大きいとき、tmp_j=j,tmp_g=g,ll=lとして、ステップ523へ進む。また、llが1より小さいときは、直接ステップ523へ進む。
ステップ523において、開始ポリゴンとの線分を結べるかどうかを検討する等高線hのポイント番号の総数でないとき、gを1インクリメントして、ステップ518に戻り、開始ポリゴンとの線分を結べるかどうかを検討する等高線hのポイント番号の総数であるときは、ステップ525へ進む。そして、jの値が開始ポリゴンのポイント数の総数に達していないときは、jを1インクリメントして(ステップ526)、ステップ516へ戻る。
ステップ525において、jの値が開始ポリゴンのポイント数の総数に達していれば、ステップ527に進んで、tmp_jが−1であるか否か調べ、−1であれば、再度ステップ503に戻る。
ステップ530において、times=1,tt=0,x1=x[i][j],y1=y[i][j]とおく。ここで、(x[i][j],y[i][j])はライン番号iの等高線のポイント番号jのデータ点の(x,y)座標である。
次にステップ531において、開始ポリゴンとの線分を結べるかどうかを検討する等高線hのポイント番号の総数が5以下であれば、ステップ532へ進んでstart1=l,end1=P[h]とする。
また、hのポイント番号の総数が5を越えるときは、当該ポイント番号が1であるとき、start1=l,end1=3とし、ポリゴンであればさらに、times=2,start2=p[h]−2,end2=p[h]とする(ステップ536)。
また、当該ポイント番号が2であるとき、start1=l,end1=4とし、ポリゴンであればさらに、times=2,start2=p[h]−1,end2=p[h]とする(ステップ540)。
当該ポイント番号がポイント番号の総数と等しいとき、start1=p[h]−3,end1=p[h]とする(ステップ542)。
当該ポイント番号が(ポイント番号の総数−1)と等しいとき、start1=p[h]−3,end1=p[h]とし、ポリゴンであればさらに、times=2,start2=1,end2=2とする(ステップ546)。
そして、ステップ531、533、537、541、543における判断がいずれもNoであるとき、start1=g−2,end1=g+2として(ステップ547)、ステップ548に進む。
また、ステップ531、533、537、541、543における判断がYesであったとき、次の処理を実行した後も、ステップ548へ進む。
先ず、k=start1とする(ステップ549)。
つぎのステップ550で、x2=x[h][k],y2=y[h][k]とおく。
以下のステップを実行することにより、(x1,y1)と(x2,y2)を端点とする線分tmp_segmentが、等高線と交差するかどうか調べる。この際、標高がZ[i]、および、Z[i]より1ランク低い標高の等高線についてのみ調べればよい。
ステップ552において、(x1,y1)と(x2,y2)を端点とする線分tmp_segmentが、等高線と交差するか否か判断する。
次のステップ553にて、tmp_segmentの長さlについて、limit_lengthが1以上であるか調べ、1以上であるときx2,y2,1を保存する。また、tt=tt+1 tmp_x[tt]=x2,tmp_y[tt]=y2,tmp_l[tt]=lとして(ステップ554)、次のステップ555に進み、k=end1か否かを判断する。Noと判断されたときkを1インクリメントしてステップ550へ戻り、以上の処理を繰り返す。
ステップ552において、(x1,y1)と(x2,y2)を端点とする線分tmp_segmentが、等高線と交差すると判断されたときは、データを保存することなく、ステップ555へ進む。
ステップ555において、kの値がend1に達したとき、ステップ557以降の処理により、等高線のデータ点start1からend1までの各線分について、ある程度長いものについては、線分上の中間点(線分をn等分(nは整数)する点)についても調べる。
このとき、n等分された線分のそれぞれの長さはmin_lengthより長いものとする。このmin_lengthは使用者が入力して決定する。
ステップ559にてkの値をstart1とする。
(x[h][k],y[h][k])と(x[h][k+1],y[h][k+1])を端点とする等高線の線分の長さ12が、min_length×2以上のとき、_nを12/min_lengthの商に決定する。
次のステップ562で、Sign=1とする。
す560において、x[h][k],y[h][k]とx[h][k+1],y[h][k+1]を端点とする等高線の線分の長さ12が、min_length×2未満のときは、kの値がend1−1か否か調べ、Noであればkを1インクリメントして(ステップ569)ステップ560へ戻り、Yesであればステップ572へジャンプする。
ステップ563に進んで、x2とy2の座標の演算を行う。
(x1,y1)と(x2,y2)を端点とする線分tmp_segmentが、等高線と交差するときは、sign=n−1であるかどうか調べ、sign=n−1でないときは、signを1インクリメントしてステップ563へ戻って以上の処理を繰り返し実行する。sign=n−1であるときは、ステップ571に進んでkの値がendi−1より大きいか否か判断する。kの値がendi−1より等しくないときは、kを1インクリメントして、S563へジャンプする。
kの値がendi−1に等しいときはtimesが2であるか否か判断し、2であれば、start1=start2、end1=end2、times=1とした(ステップ573)上で、ステップ548へ戻る。timesが2でないときは、ttが0か否か判断し、ttが0のときはステップ503に戻り、ttが0でないときは、ttが2以上か否か判断する。そして、2以上であれば、tmp_1[tt]が小さい順に、tmp_x[tt]=x2とtmp_y[tt]=y2とともに並べかえ(ステップ576)、次のステップ577でnumberを1インクリメントする(ステップ577)。
そして、次のステップ578で、二つの等高線をつなぐ新しい線分new_segmentとして、下記の情報を保存する。
ステップ581において、numberが1であるか否か調べ、1であればステップ503へ戻り、1でなければtを1とし(ステップ582)て、(one_x[t],one_y[t])と(two_x[t],two_y[t])を端点とする線分pre_segment[t]とnew_segmentが交差するかどうか調べる。
これらが交差するときは、final_l[t]がfinal[number]より小さいとき、pre_segment[t]とnew_segmentの情報を入れかえ(ステップ586)、ステップ587へ進んで、number=number−1として、ステップ503へ戻る。
また、final_l[t]がfinal[number]より小さくないとき、ステップ587へジャンプしてnumber=number−1として、ステップ503へ戻る。
さらに、(one_x[t],one−y[t])と(two−x[t],two−y[t])を端点とする線分pre_segment[t]とnew_segmentが交差しない場合は、tがnumber−1と等しくないときtを1インクリメントし、tがnumber−1と等しいときpre_segment[t]とnew_segmentのとの関係を調べる。
ステップ591にてtを1として、次のステップ592において、new_segmentがつなぐ二つの等高線について、pre_segment[t]が、既に、つないでいるか否か判断する。
判断の結果、Noのときは、new_segmentがつなぐ二つの等高線(ライン番号iとh)のうちの一方の等高線(仮にM)の1点が、pre_segment[t]の端点であるか否かさらに判断し(ステップ593)、new_segmentとpre_segment[t]の、M上の端点2点の距離l3を計算する(ステップ594)。その結果、l3が1000を越えないとき、new_segmentとpre_segment[t]を、それぞれ、M上の1点を始点とするベクターと考え、二つのベクターが成す角θを計算し(ステップ596)、θ<45°かつl3<500であるかどうか判断した後、さらにfinal_l[t]<final_l[number]であるかどうか判断し(ステップ597〜598)、いずれもYesのときpre_segment[t]とnew_segmentの情報を入れ替えた後、number=number−1の処理をしてから(ステップ599)、ステップ503へ戻る。ステップ598の判断結果がNoのときはステップ600の処理をしてステップ503へ戻る。
また、ステップ592の判断結果がYesのときは、final_l[t]<final_l[number]であるとき、pre_segment[t]とnew_segmentの情報を入れかえた後、number=number−1の処理をしてステップ503に戻る(ステップ601〜603)。
さらに、ステップ593の判断結果がNo、ステップ595の判断結果がYesのときは、ステップ503へ戻る。
斜面崩壊の発生場所が、特定の谷次数nの位置に集中していれば、まだ崩壊が起きていない谷次数nの部分は、他と比べ、崩壊の危険が高い。したがって、谷線に沿って得られる谷次数は、侵食の進み具合や、崩壊の傾向や危険度を把握するために重要な情報である。このプログラムは、最初に谷線生成プログラムを実行して谷線を生成し、次いで前記生成した谷線を水系毎に分類する水系分類プログラムを実行して得られた水系分類データを読み込んで、谷次数の計算を行うものである。勿論、落水線を用いてもよい(図45)。
前提として、標高が同じ二つの谷線(落水線)データのデータ点(終点)の距離がd[m]以内(デフォルトは0.5[m])であるとき、二つの谷線(落水線)データは合流するとする。
本発明の落水線作成手法は、隣り合う等高線、したがって標高の異なる等高線を直線でつなげることから、屈曲の激しい部分では、落水線は途切れる。
このような部分は、全体からみるとわずかな数なので、現在、途切れた部分については、手作業でつなぐのが最も実用的である。
そこで、作成された落水線の中で、途切れている部分があれば、その部分を手作業でつないで落水線データを補正し、当該補正した落水線データを解析対象とする。
水系については、本発明で、同一の終点に収束する谷線(落水線)データは、同じ水系であると定義している。
実際には、標高が同一の2つの谷線(落水線)の終点の平面距離がd[m]以内であるとき、この2つの谷線(落水線)は同一の終点に収束する、というように処理している。
この実施例では、デフォルトはd=0.0[m]としている。例えば、元データが縮尺1:25,000の等高線であり、図上0.1[mm]しか離れていない終点を同一としたいときは、d=2.5[m]となる。このdは、本発明では解析者が目的に応じて入力するようにしてある。
また、最低f本以上の谷線(落水線)が同一の終点を持つとき、これらの谷線(落水線)が水系を形成する、としている。このfは、本発明を使って解析する人が目的に応じて入力するようにしてある。
図43のステップ611において、上記補正済みの谷線(落水線)データを読み込み、全ての谷線(落水線)データに水系番号−1という属性を与える。
次のステップ612でk=1、s=1とおく。次のステップ613で、Wsの終点をwとし、sより谷線(落水線)番号が大きい谷線(落水線)データの中から、終点の標高がwと同じであり、水平距離がd(使用者が決定)以内である谷線(落水線)データを選ぶ。これらの谷線(落水線)の総数が、f以上であるとき(ステップ614)、選ばれた谷線(落水線)それぞれに水系番号kを与える(ステップ615)(図12_1_B)。また、総数がfより小さい場合は、選ばれた谷線(落水線)それぞれに水系番号−10という属性を与える(ステップ616)(図12_1_A)。sが最大の谷線(落水線)番号(ステップ617)であればメインルーチンに復帰終了し、でなければ谷線(落水線)番号に+1をする(ステップ618)、Wsの属性が−10(ステップ619)であればステップ617へジャンプする。Wsの属性が−10でない場合、ステップ620においてWsの属性>0のときは同様にステップ617へジャンプする。満たさないものは、水系番号に+1を与えステップ613へジャンプする。
以上の処理にて、谷線(落水線)は水系毎に分類される。
なお、水系番号毎(例えば、1,2,3,…)に、谷線(落水線)の色を変えることにより、谷線(落水線)をベースにして、分類された水系を表示、印刷することができ、視覚的に理解し易い水系図を作成することができる。
先ず、水系分類を行った谷線データを読み込み(ステップ631)、次のステップ632にて、α=等高線の標高間隔(デフォルトは、α=10[m])とする。また、s=1とする。
以後、水系毎に谷次数を計算する。ここでk=1とする。このkは水系毎に付与される水系番号(1,2,3,…,k_end)である。
次のステップ634において、水系番号kである谷線データを始点の標高が高い順に並べ替え、仮番号h(1,2,3,…,h_end)を与える。仮番号1の谷線データW1の始点の標高をmax_Z,終点の標高をmin_Zとする(図13)。
本実施例では、谷次数の計算の基になるデータを谷線としているが、落水線であってもよい。
仮番号hの谷線データWhのg番目のデータ点をwh,gとするとき、Whのデータ点の総数をP[h]個とする。線分のwh,gwh,g+1の起点をwh,g、先端点をwh,g+1とする。
このとき、wh,gの標高は、wh,g+1の標高より高い。
先ず、起点が谷線データの始点にあたる線分wh,1wh,2の谷次数には、あらかじめ0を与える。
次いで、Whのデータ点の総数P[h]が0であるか否か判断する。
Whのデータ点の総数が0でないとき、Whのデータ点について、ポイント番号が小さい順にデータ点の標高がEと等しい点を捜す。ここでg=1とおく。
次に、[wh,gの標高]がEであるか否か判断する(ステップ641)。[wh,gの標高]がEであるとき、Countが0であれば、i=h、j=gとするとともに、線分wi,j wi,j+1を基準線分とする。このとき、tmp=−1、count=1、order=−1として(ステップ643)、ステップ647へ戻って、仮番号hが最終の番号であるか否か判断し、次のステップに移行する。
ステップ645においてwh,g+1がWhの終点であるとき、ステップ644において[wh,gの標高]がEより小さいとき、及びステップ649において線分wi,j wi,j+1と線分wh,gwh,g+1がwi,j+1で合流しないと判断されたときは、いずれもステップ647へ進む。
ステップ647において、仮番号hが最終の番号であるか否か判断し、最終の番号でないとき、hを1インクリメントして(ステップ648)、ステップ639に戻る。
ステップ650では、hとgを保存し、P[h]=0とする。これは、wi,j+1より下流において、WiとWhの重複をさけるために行うものである(図17、18)。
そして、ステップ651において、tmpが負か否かチェックし(tmpの意味は段落0098参照)、負の数であれば、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数と等しいとき、ステップ653において、tmp=5、order=(wi,jwi,j+1の谷次数)+1の処理を行う。また、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数より大きいとき、ステップ655において、tmp=1、order=(wi,jwi,j+1の谷次数)とする。
さらに、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数より小さいとき、ステップ656において、tmp=10、order=(線分wh,gwh,g+1の谷次数)とする。
ステップ647において、仮番号hが最終の番号h_endでないとき、hを1インクリメントしてステップ639へ戻る。
仮番号hが最終の番号h_endであるときは、ステップ657へ進み、orderが負の数であれば、線分wi,j+1wi,j+2の谷次数を線分wi,jwi,j+1の谷次数と同一にし(ステップ658)、orderが0以上の数であれば、wi,j+1wi,j+2の谷次数をorderの数とする(ステップ659)。
このサブルーチンは、三本以上の谷線データが、1点で合流する場合に実行されるものである(tmpの意味は段落0098参照)。
ステップ671において、wi,jwi,j+1の谷次数がwh,gwh,g+1の谷次数と等しく、かつ、tmp=1であるとき、tmp=5とするとともに、order=(wi,jwi,j+1の谷次数)+1とする(ステップ672)。
また、ステップ671において、wi,jwi,j+1の谷次数がwh,gwh,g+1の谷次数と等しくないか、またはtmp=1でないとき、wi,jwi,j+1の谷次数がwh,gwh,g+1の谷次数より小さいか否か判断する。判断結果がYesであれば、tmpが1か、5か、10か、15かがチェックされ(ステップ674、676、678、683)、ステップ674とステップ676においてYesのとき、tmp=10、order=(wh,gwh,g+1の谷次数)の処理がされる。
また、ステップ678においてtmp=10であり、ステップ679においてwh,gwh,g+1の谷次数がorderであるときは、tmp=15、order=wh,gwh,g+1の谷次数+1の処理を行う(ステップ680)。
そして、ステップ679においてwh,gwh,g+1の谷次数がorderでないときは、ステップ681に進んでwh,gwh,g+1の谷次数がorderより大きいか否かを判断し、大きければtmp=10、order=wh,gwh,g+1の谷次数の処理を行う(ステップ682)。
さらに、ステップ683において、tmp=15であるとき、order=wh,gwh,g+1の谷次数が、order(以上あるか否か)の判断をして、Yesのとき、tmp=10、order=wh,gwh,g+1の谷次数の処理を行い(ステップ685)、Noのとき、処理を終了してステップ647に戻る。
次のステップ661にて、sを1インクリメントして、i=h_endでないとき、h=i+1、conut=0として、再度ステップ639に戻る。
i=h_endのとき、E>min_Z+αであれば、E=E−αの処理をし(ステップ664)て、ステップ638に戻る。
i=h_endのとき、E>min_Z+αでなければ、k=k_endを判断する。
k=k_endでなければ、kを1インクリメントしてステップ634に戻り、次の水系番号のデータについて処理を実行する。
全ての水系番号のデータを処理すれば、k=k_endとなるから、計算を終了する。
[谷次数と斜面の垂直断面形の組合せ]
落水線データWi、Wh、Wpについて、それぞれ、j番目のデータ点をwi,j、g番目のデータ点をwh,g、q番目のデータ点をwp,qとする。また、wi,jとwi,j+1、wh,gとwh,g+1、wp,qとwp,q+1の中点を、それぞれ、ti,j、th,g、tp,qとする。本発明による斜面の垂直断面形は、落水線データのデータ点を中点とする二つの線分、つまり、3点から成るラインを一単位とする。一単位のラインの両端の点は、落水線データの線分の中点となる場合が多い(図15B))が、落水線データの始点や終点となる場合もある(図15A))。また、複数の落水線データが同じデータ点に合流する場合、その合流点を中点とする一単位のラインの垂直断面形は、それぞれ異なる場合がある(図15,B1),B2))。したがって、落水線データWi、Wh、Wpが、データ点wi,j+1において合流するとき、wi,j+1における斜面の垂直断面形(wi,j+1を中点とするライン)を、下記の手順によって、唯一つに定める。
先ず、落水線生成プログラムを実行して落水線を生成し(ステップ701)た後、次の702にて水系分類プログラムを実行する。本実施例は、落水線データを基に計算を行ったが、谷線データであってもよい。
そこで、水系分類データを読み込む(ステップ702の2)。続いて、水系番号を持たない、すなわち水系をなさない落水線についての計算を行うかどうか入力して決定する(ステップ703)。
水系番号を持たない落水線についての計算を行うと決定されたときは、Option−cのサブルーチンに進む。このサブルーチンは、付加的なものであるから、このサブルーチンについては後述することとする。
最初にステップ706にて等高線の標高間隔αを規定する。なお、デフォルトは、α=10[m]としてある。ここでs=1(ステップ765においてsが出てくるため)、k=1とする。sはデータ番号、kは水系毎に付与される水系番号(1,2,3,…,k_end)である。
ステップ708において、水系番号kの落水線データを、始点の標高が高い順に並べ替え、仮番号h(1,2,3,…,h_end)を与える。また、仮番号1の落水線データW1の始点の標高をmax_Z、終点の標高をmin_Zとする。
次いで、仮番号hの落水線データWhのg番目のデータ点をwh,gとし、Whのデータ点の総数をP[h]個とする。線分wh,gwh,g+1の起点をwh,g、先端点をwh,g+1とする。このとき、wh,gの標高>wh,g+1の標高の関係にある。
そして起点が落水線データの始点にあたる線分wh,1wh,2の谷次数を0とする。次にE=max_Z、h=1、count=0とおく。
次に、wh,gの標高がEであるか否か判断する(ステップ715)。wh,gの標高がEであるとき、Countが0であれば、i=h、j=gとするとともに、線分wi,jwi,j+1を基準線分とする。このとき、tmp=−1、count=1、order=−1として(ステップ723)、ステップ719へ戻って、仮番号hが最終の番号であるか否か判断する。判断結果がNoのとき仮番号hを1繰り上げてステップ713に戻る。
ステップ717においてwh,g+1がWhの終点であるとき、ステップ716においてwh,gの標高がEより低いとき、及びステップ724においてwi,jwi,j+1とwh,gwh,g+1がwi,j+1で合流しないと判断されたときは、ステップ719へ進む。
ステップ719において、仮番号hが最終の番号であるか否か判断し、最終の番号でないとき、仮番号hを1インクリメントして(ステップ720)、ステップ713に戻る。
そして、ステップ726において、tmpが負か否かチェックし、負の数であれば、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数と等しいとき、ステップ728において、tmp=5、order=( 線分wi,jwi,j+1の谷次数)+1の処理を行う。
また、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数より大きいとき、ステップ730において、tmp=1、order=( 線分wi,jwi,j+1の谷次数)とする。
さらに、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数より小さいとき、ステップ731において、tmp=10、order=(線分wh,gwh,g+1の谷次数)とする。
ステップ719において、仮番号hが最終の番号h_endでない場合、hを1インクリメントしてステップ713へ戻り、仮番号hが最終の番号に達するまで以上の処理を繰り返す。
また、仮番号hが最終の番号h_endに達したときは、Countが0であるか否か判断する。ステップ721にてCountが0と判断されたときは、ステップ790に進み、標高が終点の1つ手前の標高であるとき、落水線データの始点の標高を1つ下げてステップ713に戻る。
一方ステップ790で、標高が終点の1つ手前の標高ではない場合、水系番号kが最終のものでないとき、水系番号を1繰り上げてステップ708に戻り、次の水系番号のデータ処理に入る。また、水系番号kが最終のものであるときは、全ての対象について処理が終了しているので、この処理を終了する。
また、前記ステップ732において、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数と等しくないか、またはtmp=1でないとき、線分wi,jwi,j+1の谷次数が線分wh,gwh,g+1の谷次数より小さいか否か判断する。
判断結果がYesであれば、tmpが1か、5か、10か、15かがチェックされ(ステップ735,736,738,743)、ステップ735とステップ736においてtmpが1か5のとき、tmp=10、order=(線分wh,gwh,g+1の谷次数)の処理がされる(ステップ737)。
また、ステップ738においてtmp=10であり、ステップ739において線分wh,gwh,g+1の谷次数がorderであるときは、tmp=15、order=線分wh,gwh,g+1の谷次数+1の処理を行う(ステップ740)。
そして、ステップ739において線分wh,gwh,g+1の谷次数がorderでないときは、ステップ741に進んで線分wh,gwh,g+1の谷次数がorderより大きいか否かを判断し、大きければorder=線分wh,gwh,g+1の谷次数の処理を行う(ステップ742)。
さらに、ステップ743において、tmp=15であるとき、線分wh,gwh,g+1の谷次数≧orderの判断をして、Yesのとき、tmp=10、order=線分wh,gwh,g+1の谷次数の処理を行い(ステップ745)、ステップ719に戻る。また、ステップ744の線分wh,gwh,g+1の谷次数≧orderの判断かNoのとき、処理を終了してステップ719に戻る。
tmp=1:線分wi,jwi,j+1のみが、最大の谷次数をもつ。
tmp=5:線分wi,jwi,j+1とそれ以外(複数可)の線分wh,gwh,g+1が、最大の谷次数をもつ。
tmp=10:単一の線分wh,gwh,g+1(≠線分wi,jwi,j+1)が、最大の谷次数をもつ。
tmp=15:複数の線分wh,gwh,g+1(≠線分wi,jwi,j+1)が、最大の谷次数をもつ。
該ステップ746において、orderが負か否か判断される。
負と判断されたときは、線分wi,j+1wi,j+2の谷次数の値を線分wi,jwi,j+1の谷次数の値とする。
また、負と判断されなかったときは、orderの値を線分wi,j+1wi,j+2の谷次数の値とする。
また、ステップ752においてtmpが10であるときは、データ点wi,j+1で合流する線分wh,gwh,g+1(ただしh≠i)の中で最大の谷次数をもつ線分の(h,g)を用いてii=h、jj=gとおく。
上記の3つのステップにおいて、いずれにも該当しないときは、線分wi,jwi,j+1と線分wh,gwh,g+1が同じ谷次数を持っていて互いに流れとしての経歴は互角であるから、いずれの落水線が直線的に流れて行くことになるかを調べるために、線分wh,gwh,g+1と線分wh,g+1wh,g+2が水平面上でなす角δh,g+1(≦180°)を計算する(図16B)。ただし、このhにはiが含まれる、また、このgにはjが含まれる。
したがって、線分wi,jwi,j+1と線分wi,j+1wi,j+2が水平面上でなす上記角δh,g+1(≦180°)についても計算するものである。そして、計算されたδh,g+1の中で、最大であるδh,g+1のhとgについて、ii=h、jj=gとおく。すなわち、直線的に流れていくものを優先して基準線分として利用していくこととしている。
勾配θii,jj:tanθii,jj=α/lii,jjより計算
谷次数vii,jj−1:wii,jj−1wii,jjの谷次数
垂直断面形を決めるτii,jj=180°+θii,jj−1−θii,jj
水平面上での角δii,jj:lii,jj−1、lii,jj、wii,jj−1とwii,jj+1との水平面距離llから次式の計算により求まる。
(1)線分番号:s(xyファイルのsに対応させる)
(2)中点の標高:zii,jj
(3)水系番号:k
(4)wii,jjの上流の線分の勾配:θii,jj−1
(5)wii,jjの下流の線分の勾配:θii,jj
(6)wii,jjでの、水平面での角:δii,jj
(7)垂直断面形を分けるための角:τii,jj
(8)谷次数vii,jj−1:線分wii,jj−1wii,jjの谷次数
以上みたように、例えば谷次数は、1つの落水線データの線分、したがって2つのデータ点に対し1つの属性を有するが、例えば垂直断面形を決める角は、連続する2つの落水線データの線分、したがって3つのデータ点に対し1つの属性を有する。
このため、最初の及び最後のものを除く落水線データは、典型的には下表のようなステップ807のデータ点を書き出すこととなる。
また、書き出す属性は下表のようになる。
wii,jjの(x,y,z)座標をそれぞれ(xii,jjyii,jj,zii,jj)、wh,gの(x,y,z)座標をそれぞれ(xh,g,yh,g,zh,g)とする(ステップ755)。
そして、線分wii,jjwii,jj+1以外に、wi,j+1を先端点とする線分が存在するか否か判断し(ステップ756)、存在すれば、線分wii,jjwii,jj+1を除く、wi,j+1を先端点とする複数の線分をwh,gwh,g+1とする(ステップ757)。
先ず、ステップ759とステップ761において、データポイント番号が1か2かそれ以外かを判別する。
そして、データポイント番号が1であれば、ステップ760において書き出しを行い、データポイント番号が2であるときは、ステップ762において書き出しを行う。
また、データポイント番号が1でも2でもないときは、ステップ763において書き出しを行う。
そして、ステップ764では、Whのデータ点の総数P[h]を0とおく。これは、以後の処理において重複する落水線データを排除するために行う処理である。
以上の処理により、全ての落水線データのxy座標データと属性データの書き出しを終了する。
データポイント番号が1か、2かつWiiのデータ点の総数P[ii]の2つ手前か否かを調べ、それぞれ満足する条件にしたがって、データを書き出し(ステップ768〜778)、データ番号sを+1してステップ789へ進む。
一方ステップ756において、wii,jjwii,jj+1以外に、wii,jj+1を先端点とする線分が存在しないときは、ステップ780に進んで、データポイント番号が1であるか否か判断し、1であればステップ789に進む。
また、データポイント番号が1以外である場合には、データポイント番号が2、データ点の総数が3、データ番号が2、データ番号がデータ点の総数の1つ手前、のいずれか条件を満たするか否かによって、4通りの形式でデータを書き出す(ステップ781〜787)。
しかる後に、データポイント番号sを+1して、ステップ789に進む。
そして、到達していない場合は、h=i+1、count=0とおいて、ステップ713に戻る。
また、基準線分のライン番号が仮番号の総数に到達したと判断された場合は、E>min_Z+αのとき、標高を1ランク下げて(E=E−α)してステップ713に戻って以後の処理を実行する。
さらに、E>min_Z+αでないときは、水系番号の最終に到達していなければ、次の水系についての処理に移行する(ステップ794)。
ここで、水系番号の最終に到達したときは、全ての水系について処理が終了したので、プログラムの実行を終了する。
次に、落水線Gの線分全てについて、谷次数0という属性を与える(ステップ796)。
書き出されていないGの落水線データWiiがあるとき(ステップ797の1)、wiiのjj番目(jj=1,2,3,…)のデータ点をwii,jjとする。このときjj=1とおく(ステップ797の2)。
次のステップ798ではデータ番号jjが1でないとき、jj=2かつP[ii]=3であるか、jj=2、jj=P[ii]−1であるか、のいずれかの条件を満たす場合、ステップ801、804、808を実行してそれぞれデータを書き出す。
また、これが最も一般的であるが、ステップ807を実行する。
そして、ステップ801とステップ808を実行後は、ステップ802にてsを+1してステップ797の1に戻って以後の処理を繰り返して実行する。
また、ステップ804とステップ807を実行後は、ステップ805にてsを+1した後、ステップ799にてjjを+1してステップ798に戻って以後の処理を繰り返す。
以上の処理の繰り返した結果、ステップ797の1において全てのGの落水線データwiiが書き出されたと判断されて処理を終了し、メインルーチンに戻ってステップ706以降の処理に入るものである。
本発明は、等高線データを基に算出した各種の属性データ(線分)をグリッド化するときに用いるプログラムに関するものである。
一般に、値数統計解析手法では、規則正しい、格子状の配列を持つグリッドデータを用いる場合が多い。また、植生データ、地質データなどの多くのデータがグリッドデータとして整備されてきている。
一方、各種の情報を保有する線分データや(ランダムな)ポイントデータは、そのままでは、上記グリッドデータと結合して使用することは困難である。
そこで本発明は、取得された、地形属性を持つ線分データなどをグリッド化して、各種のグリッドデータとリンクさせ、活用の範囲を広げようとするものである。
グリッド化に用いる線分データは、線分の始点と終点の平面位置座標の情報を必ず持ち、勾配や斜面方位などの属性を一つ以上持つものとする。
そして例えば、落水線の線分データから、勾配と斜面方位と谷次数を同時に計算し、1)ライン番号,2)線分の始点のx座標,3)線分の始点のy座標,4)線分の終点のx座標,5)線分の終点のy座標,6)水系番号,7)勾配,8)斜面方位,9)谷次数を、各線分毎に書き出したファイルを作っておいて、必要に応じた属性だけを読み込んでもよい。
また、勾配グリッドデータを作りたいときは、上記2)〜5)と7)だけを書き出したファイルを作っても良い。
いずれにしても、グリッドデータ作成に用いる線分データの形成は、いろいろ考えられる。また、落水線だけでなく、最急登線、谷線、尾根線、属性付きのポイントデータを基に、グリッドデータを作成することが可能である。
2つに分けられた線分は、始点と終点の(x,y)座標は異なるが、属性は同じとなる。
(例)
1)ライン番号
2)線分の始点のx座標
3)線分の始点のy座標
4)線分の終点のx座標
5)線分の終点のy座標
6)水平断面形の種類(1:尾根型,−1:谷型,0:それ以外)
方法1)図面等をみて、手作業で(x,y)座標の最大値と最小値(min_x,max_x,min_y,max_y)を決める。
方法2)グリッドデータの基になる線分データを読み込み、これらの線分データの始点と終点の中から(x,y)座標の最大値と最小値(min_x,max_x,min_y,max_y)を決める。ただし、分布するデータの範囲が常に長方形とは限らないので注意する必要がある。
次に、作成するグリッドデータのグリッド間隔dを決める。
更に、グリッド点の位置を決める(中心、あるいは、四隅のはずれた点)。
なお、グリッドデータは、実際は、点ではなく、広がりを持ったセルとして現される。
例えば、グリッド点gi,jでの勾配を計算したいとき、gi,jの標高のみを用いて、gi,jの勾配を計算することはできない。
このため、gi,jの周囲のグリッド点の標高も使う必要がある。
したがって、計算範囲が広くなることから、計算結果が緩やかになる傾向にある。
これに対して、本発明においては、属性まで計算した線分データを作り、計算範囲内に存在するデータのみを使う。
まさに当該グリッド内での値が求められるのが特徴である。
従来は、標高グリッドデータから、勾配などの各種グリッドデータを作るのが普通である。
図35〜36を参照して説明する。
先ず使用する線分データと優先順位を決定する。
この優先順位は、パターン化されており、そのパターンは、
pattern1 [優先順位1:落水線データ ,優先順位2:最急登線データ]
pattern2 [優先順位1:最急登線データ,優先順位2:落水線データ]
pattern3 [優先順位1:落水線データ ,優先順位2: なし ]
pattern4 [優先順位1:最急登線データ,優先順位2: なし ]
の4種類である。
次いで、グリッドデータを作成する範囲を決定する。
このとき、min_x,max_x,min_y,max_yを入力するが、手入力による方法の他、グリッドデータの基になる線分データを読み込み、これらの線分データの始点と終点の中から(min_x,max_x,min_y,max_y)を計算により自動的に求める。ただし、分布するデータの範囲が常に長方形とは限らないので注意を要する。
続いて、優先順位1のデータを読み込み、線分番号をs、線分の総数をsum_sとする(ステップ814)。
次のステップ815にて、使用者が入力して決定したパターンが、pattern=1 or pattern=2と判断されると、引き続き優先順位2のデータを読み込み、線分番号をss、線分の総数をsum_ssとする。
そして、グリッド点の行の値j=1,同じく列の値i=1,線分番号s=1とおく(ステップ817)。
以後の処理により、優先順位1のデータを用いて、グリッド点gi,jでの値を計算する。このとき保存データ番号n=0とおく。
そして、線分番号sの線分の始点をp1=(x1,y1),終点をp2=(x2,y2)とする。
a)グリッド中心と交点との距離が計算範囲rを越えず、かつ、交点が線分p1p2上の点である(ステップ828)、
b)グリッド中心と終点との距離がグリッド中心と始点との距離より短いか等しく、かつ、グリッド中心と終点との距離が計算範囲rを越えない(ステップ830)、
c)グリッド中心と始点との距離がグリッド中心と終点との距離より短かく、かつ、グリッド中心と始点との距離が計算範囲rを越えない(ステップ832)、のいずれかに該当するとき、線分番号sとそれらの距離lを保存し(ステップ833−2)、nを1インクリメントして(ステップ833−3)ステップ826へ戻る。
また、上記a)〜c)のいずれにも該当しないとき、線分番号sが線分の総数sum_sに達していないとき、sを1インクリメントしてステップ819へ戻る。
一方、ステップ836において、最近傍の線分データを用いて勾配のグリッドデータを作るとの指示がないときは、n個の線分の勾配の平均値を、グリッド点gi,jでの勾配の値として、書き出す(ステップ840)。
ステップ848以降ステップ870までの処理内容は、既に説明したステップ819からステップ840までの処理と同一であるので説明を省略する。
なお、ステップ841は、優先順位2のデータを処理するための固有のものである。
そして、上記処理を実行して優先順位2のデータについて処理した結果、当該グリッド点の計算範囲内に優先順位2のデータが存在すれば、ステップ865〜869を実行した後、ステップ843に戻って、継続して処理を実行する。
また、上記ステップ835にてn=0であり、かつ、選択したパターンがpattern=1でもpattern=2でもないときは、グリッド点gi,jでの値はないことから、−9999を書き出す(ステップ842)。
その結果、ステップ843において、グリッド点の列iが総数num_xに達したと判断されたとき、グリッド点の次の行に進み(ステップ846)、ステップ818へ戻り、グリッド点の列を1ずつ繰り上げ実行して、最終的に最後のグリッド点の処理が終了したとき、ステップ844においてYesと判断されて、グリッド化についての処理を終了する。
このプログラムは、以前のグリッド点の処理において使用したデータについては、以後の処理においては使用しないことを特徴としており、その余の点においては、グリッド化プログラム1と同じである。
したがって、前記特徴点についてのみ、図37〜38を参照して説明することとする。
ステップ874において、全ての線分データに、used=−1という属性を与える。
そして、ステップ894において線分番号sと距離lを保存するときに、併せてusedの値を保存する。
このusedの値は、n個の線分が全てused=1である、すなわち当該全ての線分データは既に以前のデータ点においてデータとして使用済みのものである、と判断されたときは、使用可能なデータが皆無となるから、プログラム1と同様の処理を行う(ステップ903,907)。
反対の判断のときは、used=−1である線分のみを用いて、プログラム1と同様の処理を行うが、この時、計算に使用した線分に、used=1を付与することとしている(ステップ905,909)。
図39を参照して、最初にn本のラインデータをライン番号が小さい順に読み込む。ライン番号i(1,2,…,n)のラインデータをWiとする。s=1とおく。
Wiのj番目のデータ点をwi,jとする。Wiのデータ点の総数をmとする。そして、j=1とおく。
ステップ955において、wi,jとwi,j+1を端点とする線分wi,jwi,j+1について、勾配θと斜面方位δを計算する際に、wi,jの三次元座標を(xi,j,yi,j,zi,j)、wi,j+1の三次元座標を(xi,j+1,yi,j+1,zi,j+1)とする。
斜面勾配θと斜面方位δはそれぞれ次の[式A]と[式B]で計算される(ステップ956〜957)。
また、斜面方位δは、反時計回りで、東が0[°]として、wi,jとwi,j+1を比べて、標高(zi,jとzi,j+1)が、低い方の三次元座標を(x1,y1,z1)、高い方の三次元座標を(x2,y2,z2)とする。
1)x1−x2≧0かつy1−y2≧0 → δ=a[°]
2)x1−x2<0かつy1−y2≧0 → δ=180−a[°]
3)x1−x2<0かつy1−y2<0 → δ=180+a[°]
4)x1−x2≧0かつy1−y2<0→ δ=360−a[°]
(式B)
次のステップ960にて、データ番号jが総数mに達していなければ、jを1インクリメントして、次のデータについて計算し、当該ラインデータの総数を処理したら(ステップ962)、次のラインデータについて処理する(ステップ963)。
全てのデータについて処理が済んだら計算を終了する。
また、使用者が最近傍の線分データを用いて勾配のグリッドデータを生成するか、n個の線分の勾配の平均値を用いて勾配のグリッドデータを生成するかを選択可能としたので、具体的なアウトプットの性質に応じて使い分けすることができる。
さらに、同種の基礎データが複数存在する場合に、各種データを単独でまたは組合せて使用し、目的に応じて柔軟に対応することができる。
Claims (1)
- コンピュータに、
谷頭を含む等高線データの1ランク下位の等高線データ上のデータ点が起点である谷頭から所定距離内に存在するとき、該データ点を起点との結合線分の到達点の選択点とし、該選択点を含む等高線の線分を仮線分として選び、前記起点と前記各選択点とを結ぶ選択線分の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で長さが最小となる選択点を到達点として谷線データを生成させ、以後前記到達点を始点として前記谷線データを生成するステップを繰り返し実行させ、順次谷線データを生成させることを特徴とする谷線を生成、記憶又は出力させる地形データ処理プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005310574A JP4203599B2 (ja) | 2005-10-25 | 2005-10-25 | 地形データ処理プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2005310574A JP4203599B2 (ja) | 2005-10-25 | 2005-10-25 | 地形データ処理プログラム |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002320548A Division JP3755002B2 (ja) | 2002-09-27 | 2002-09-27 | 地形データ処理プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2006091907A JP2006091907A (ja) | 2006-04-06 |
JP4203599B2 true JP4203599B2 (ja) | 2009-01-07 |
Family
ID=36232866
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2005310574A Expired - Lifetime JP4203599B2 (ja) | 2005-10-25 | 2005-10-25 | 地形データ処理プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP4203599B2 (ja) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP4355743B2 (ja) | 2006-12-04 | 2009-11-04 | 株式会社神戸製鋼所 | Cu合金配線膜とそのCu合金配線膜を用いたフラットパネルディスプレイ用TFT素子、及びそのCu合金配線膜を作製するためのCu合金スパッタリングターゲット |
JP5241296B2 (ja) * | 2008-04-04 | 2013-07-17 | 株式会社シン技術コンサル | 数値地図データ処理プログラム及び数値地図データ処理装置 |
JP7209073B1 (ja) | 2021-11-17 | 2023-01-19 | 株式会社パスコ | 地形図出力装置、地形図出力方法およびプログラム |
-
2005
- 2005-10-25 JP JP2005310574A patent/JP4203599B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JP2006091907A (ja) | 2006-04-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Riveiro et al. | Automated processing of large point clouds for structural health monitoring of masonry arch bridges | |
Pike et al. | Geomorphometry: a brief guide | |
Douglas | Experiments to locate ridges and channels to create a new type of digital elevation model | |
CN109035364B (zh) | 一种基于cad地形图快速绘制剖面图的方法 | |
WO2009119960A1 (en) | Three-dimensional implementation method of mine tunnel | |
KR100657870B1 (ko) | 항공 레이저 측량 데이터를 이용한 지반고 추출 방법 | |
Zheng et al. | A robust channel network extraction method combining discrete curve evolution and the skeleton construction technique | |
JP4203599B2 (ja) | 地形データ処理プログラム | |
JP4314371B2 (ja) | 地形データ処理プログラム | |
JP6686262B2 (ja) | 地形変化点抽出システム、及び地形変化点抽出方法 | |
CN114863033A (zh) | 一种基于点云数模的断面提取方法 | |
JP4203601B2 (ja) | 地形データ処理プログラム | |
JP2002092658A (ja) | 3次元デジタル地図作成装置及び3次元デジタル地図作成のプログラムを記憶した記憶媒体 | |
Tarboton | TARDEM, a suite of programs for the analysis of digital elevation data | |
JP3755002B2 (ja) | 地形データ処理プログラム | |
JP4203600B2 (ja) | 地形データ処理プログラム | |
CN116012613B (zh) | 一种基于激光点云的露天矿的土方量变化测算方法和系统 | |
CN112182125A (zh) | 一种商务集聚区边界识别系统 | |
JP6514901B2 (ja) | 測量データ処理装置 | |
JP4389029B2 (ja) | 地形データ処理方法 | |
CN111488411A (zh) | 道路设施的构建方法以及装置、渲染方法、介质、终端 | |
JP2006092567A (ja) | 地形データ処理プログラム | |
JP6746851B2 (ja) | 地形分類システム、及び地形分類方法 | |
KR100764870B1 (ko) | 수치지도의 등고선 자동입력장치와 그 입력방법 | |
JP3572253B2 (ja) | 3次元モデル生成方法及び装置、並びにこの方法の実行プログラムを記録した記録媒体 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20080516 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080711 |
|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20080916 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 4203599 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
EXPY | Cancellation because of completion of term |