Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP3755002B2 - Topographic data processing program - Google Patents
[go: Go Back, main page]

JP3755002B2 - Topographic data processing program - Google Patents

Topographic data processing program Download PDF

Info

Publication number
JP3755002B2
JP3755002B2 JP2002320548A JP2002320548A JP3755002B2 JP 3755002 B2 JP3755002 B2 JP 3755002B2 JP 2002320548 A JP2002320548 A JP 2002320548A JP 2002320548 A JP2002320548 A JP 2002320548A JP 3755002 B2 JP3755002 B2 JP 3755002B2
Authority
JP
Japan
Prior art keywords
data
point
line
contour
line segment
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
Application number
JP2002320548A
Other languages
Japanese (ja)
Other versions
JP2004118820A (en
Inventor
博子 水越
政武 安仁屋
Original Assignee
国土交通省国土地理院長
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by 国土交通省国土地理院長 filed Critical 国土交通省国土地理院長
Priority to JP2002320548A priority Critical patent/JP3755002B2/en
Publication of JP2004118820A publication Critical patent/JP2004118820A/en
Application granted granted Critical
Publication of JP3755002B2 publication Critical patent/JP3755002B2/en
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Landscapes

  • Instructional Devices (AREA)
  • Processing Or Creating Images (AREA)

Description

【0001】
【発明が属する技術分野】
本発明は、数値化した等高線を用いて、等高線に含まれる情報(標高及び地形の形状)を最大限に利用することにより、コンピュータ上にて、地形分類を行うための様々な情報を抽出、あるいは、計算するためのプログラムである。
本発明により、等高線図を用いて、技術者が手動で行っている作業(例えば、谷頭の抽出や谷線図の作成など)を、自動的に行うことが可能になる。
本発明により得られる谷頭や谷線や谷次数などの情報は、土砂災害の発生位置や被害範囲の予測に役立ち、特に、豪雨による災害に有効である。また、本発明により得られる尾根線は、雪崩の災害についての重要な情報である。さらに、本発明により得られる、斜面型(図1)や勾配や斜面方位や谷次数などは、地形の特徴を把握するための基礎資料である。
具体的には、地形分類の情報は、近年、地方自治体等が整備を進めている、住民の防災意識を高め、自然災害時における住民の避難活動を支援するハザードマップの作成に活用できる。また、近年、環境問題が重視され、地域の自然環境に目が向けられることが多くなり、各地で、自然環境を紹介するためのビジターセンターの建設が進められている。地形は、自然環境を構成する要素であり、生態系(植生含む)に深く関わっている。本発明で得られる地形情報の出力図は、ビジターセンターのような施設で展示するのに適した資料となる。さらに、林学(林業)の分野では、高精度な土壌図が必要とされ、そのための高精度な地形分類手法が要求される。この分野でも、最近は、コンピュータを用いた手法を模索している。本発明は、精度の高い数値等高線データを用いることにより、この要求に応えることが可能である。
【0002】
【従来の技術】
地形分類図は、伝統的に、地形図(等高線図)をベースにして、写真判読などをはじめとする手作業で作成されてきた。このため、写真等を正確に判読・解析するためには多大の労力と時間を要し、膨大なコストがかかるという問題があった。また、人間による手作業のため、個人差や見落としなどが存在した。
この解決策として、日本全国をカバーする標高グリッドデータ、例えば数値地図50mメッシュ(標高)などを用いて、地形特徴の把握、数値地形計測及び流域解析等をコンピュータ上で行う手法が開発されている。均一に配置された標高グリッドデータを使用し、同一の手法を用いて計算を行うことにより、客観的、かつ、広範囲の地形解析を、自動的に短時間に行うことが可能である。標高グリッドデータは、日本において、最も一般的に使われるDEM(Digital Elevation model)(数値標高モデル)である。
DEMを得るための最新技術として、代表的なものに、レーザースキャナ、あるいは、人工衛星を用いて、地表面の位置情報(ランダムなポイントデータ)を得る手法の開発も進んでいる。レーザースキャナを用いることにより、1〜2[m]間隔の、高密度のポイントデータを得ることが可能であるが、広域のデータ取得については、費用の面で問題がある。
また、地表面の位置情報を、はじめからグリッドデータの形式で得る手法は実用化されていないことから、数値等高線データやランダムなポイントデータなどから、標高グリッドデータを作成するために、様々なアルゴリズム(spline、kriging、idw、trend、TOPOGRIDなど)が開発されている。元の地形をできるだけ正確に再現した標高グリッドデータを作成するためには、使用するアルゴリズムの検討、および、各アルゴリズム毎に設定する計算の条件の値などの検討を十分に行う必要がある。
標高グリッドデータは規則的な配置を持つことから、DEMを一度、標高グリッドデータにしてしまえば、1)崩壊前後の標高グリッドデータの差から、崩壊や堆積の差分量を計算することは容易であり、2)標高グリッドデータから勾配や斜面方位などを計算する手法については、多く手法が開発・紹介されており、3)各種グリッドデータを用いた地形の統計解析手法も、学会誌や書籍などで紹介されている。つまり、標高グリッドデータは、コンピュータ処理に適していて処理速度を格段に向上できる。
【0003】
【発明が解決しようとする課題】
しかしながら、上記標高グリッドデータは、取得されたDEMから、どのアルゴリズムや設定値を用いるかにより、得られる標高値が異なる。また、得られた標高グリッドデータを用いて計算された勾配などについても、どの計算方法を用いるかにより、結果が変化する。加えて、標高グリッドデータから、各種のアルゴリズムを用いて得られる地形特徴を、従来の等高線図などを用いて手作業で得られる特徴に一致させることは難しい。
数値化された等高線データは、その不規則なデータ配置から、地形特徴の算出のために直接使用されることはほとんど無く、もっぱら、標高グリッドデータ取得のための基データとして使われることが多かった。
【0004】
しかし、本発明は、数値化された等高線データを用いて、従来、人間が等高線図を用いて、手作業で行ってきた地形特徴を得るための手段を、再現することを可能にした。
本発明では、手作業のごとく、等高線や等高線から得られる落水線などに沿って、斜面の形状に関する情報の計算や判断を行い、その方法は一通りである。したがって、標高グリッドデータを用いた各種地形情報の計算のように、様々な方法があり、方法により得られる結果が異なるということは無い。また、コンピュータが普及する以前から、等高線を基にした各種の分類図(地すべり、地質、土壌、崩壊、活断層など)が作成されており、これは、貴重な情報である。等高線データをベースに出力される本発明の結果(出力図)は、これらの図や写真などとの比較が、グリッドデータの場合に比べて、はるかに容易である。また、本発明では、結果として得られる、地形情報に関する属性付のラインデータをグリッドデータに変換する手法も含んでいることから、数値データとして普及している各種グリッドデータとの組み合わせも可能であり、応用できる範囲が広い。
これまで、標高グリッドデータは、等高線データを基に作成されることが多く、その場合はグリッド化する方法による誤差が生じる。また、グリッド化によりデータが等間隔に分断されてしまうため、谷線や尾根線のような斜面の境界、さらに山頂や凹地、鞍部といった地形の特徴を考慮した計算を行うことが難しい。しかし、等高線データをそのまま使用することにより、等高線が持つ情報にしたがって忠実に斜面を分類することが可能であり、等高線で表現された谷や尾根、山頂、凹地、鞍部等を考慮して行う手作業による分類を再現することができる。
【0005】
本発明は、上記従来の実情に鑑みてなされたもので、その目的は、従来手作業でのみ実現していた専門家レベルの判読・解析精度を維持しつつ、コンピュータ処理可能な新規の地形データ処理方法及びその装置を提供すること、具体的にはデジタル化した等高線データから落水線データおよび最急登線データを生成し、これらのデータに基づいたコンピュータ処理可能な地形分類のプログラムを提供することにある。これらのプログラムにより、地形分類図作成作業工程のほとんどの部分が自動化され、作成作業の飛躍的な効率化が図られるものである。
【0006】
【課題を解決するための手段】
コンピュータに、先に生成された最急登線データの到達点を次に生成する最急登線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する高位の等高線の全ての線分データの任意の点を到達点として、個々の最急登線線分データを生成させて、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させる地形データ処理プログラムであって、該地形データ処理プログラムは、任意の等高線データの線分データの任意のデータ点を最急登線生成の起点として選定する第1のステップと、上記選択した等高線データに隣接する高位の等高線の線分データの任意のデータ点のうち、前記起点からの距離が短いものが優先的に選ばれた任意のデータ点を選択点として選定する第2のステップと、前記選択点と前記起点の距離を演算し、最も距離が短い選択点を到達点の候補として、前記優先的に選ばれた任意のデータ点を含む等高線の線分である仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分の到達点を含む等高線は前記選択した等高線に隣接する高位の等高線であると判断する第3のステップと、前記起点から隣接する高位の等高線であると判断された等高線データの各線分の任意の点に引かれた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を最急登線作成の到達点の候補とする第4のステップと、全ての到達点の候補の中から起点に最も近い候補を到達点として決定する第5のステップと、前記起点から前記到達点に向かって最急登線線分データを生成する第6のステップとを含み、コンピュータに、前記 決定した到達点を次に生成する最急登線線分データの起点として、前記第2乃至第6のステップを順次繰り返し実行させ、上記到達点の候補が全く存在せず最急登線の終点に到達したと判断されたとき、次の任意のデータ点を選択した後前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ、前記選択した任意のデータ点が前記任意の等高線データの最後のデータ点であると判断されたとき、まだ始点とするために用いていない等高線データを選択して前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ、始点とするために用いていない等高線データがないと判断されたとき処理を終了することにより、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させるための地形データ処理プログラムとした。
【データ構造】
本発明は、等高線データに基づいて各種のデータ処理を行うものである。
そこで先ず、等高線データのデータ構造について説明する。
( )は、等高線データのイメージ図である。この図において、等高線の四角内の数字はライン番号を、同じく円内の数字はポイント番号を示している。
図2(B)は、データ構造を示すもので、ファイルは、x座標とy座標のデータを格納するxyファイルと、z座標のデータを格納するzファイルに分けられており、各ファイルには、前記ライン番号、ポイント番号、END記号が格納されている。
【0007】
本発明は、等高線データを基に、要旨外の水平断面形を分類するプログラム、落水線を生成するプログラム及び請求項1に係る最急登線を生成するプログラムを基本プログラムとし、各種の応用的なデータ処理を行う要旨外の応用プログラムとから構成されている。
【0008】
前記水平断面形の分類プログラムは、選択された等高線データが隣接する等高線データの左右どちらの側に位置しているかを判別する等高線位置判別サブプログラムと、当該等高線のデータ点は尾根型斜面上に位置するか、谷型斜面上に位置するか、直線斜面上に位置するかを判定する水平断面形判定サブプログラムとから成っている。詳しくは後述する。
【0009】
また、請求項1に係る前記最急登線生成プログラムは、斜面下方から上方に向かって、先に生成された最急登線データの到達点を、次に生成する最急登線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する高位の等高線の全ての線分データの任意の点を到達点として、個々の最急登線線分データを生成して、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成するものである。これについても段落0020〜0031において詳述する。
【0010】
さらにまた、前記落水線生成プログラムは、最急登線生成プログラムとは逆に、斜面上方から下方に向かって、先に生成された落水線データの到達点を、次に生成する落水線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する低位の等高線の全ての線分データの任意の点を到達点として、個々の落水線線分データを生成して、等高線から隣接する低位の等高線に対して最大傾斜で下る落水線を生成するものである。これについても段落0050〜0058において詳述する。
【0011】
以下、前記水平断面形の分類プログラムについて、図19〜21を参照して詳細に説明する。
斜面の水平断面形の分類を行うためには、任意の等高線が、標高の高い等高線と低い等高線のどちらに向かって曲がっているのかを知る必要がある。
このため先ず、等高線データMの左右どちらの側に、標高の低いあるいは高い隣の等高線データが存在するのかを判別しなければならない。
さらに、斜面の水平断面形は、等高線の形状によって分類されることから、曲線の変曲点が、水平断面形を分ける点になる。
【0012】
【水平断面形分類プログラム】
この水平断面形分類プログラムは、選択した等高線データの線分データの任意のデータ点を最短距離線生成の参照点として選定するステップと、前記選択した等高線データに隣接する高位又は低位の等高線の線分データの任意のデータ点のうち、前記参照点から所定半径以内に存在する任意のデータ点を選択点として選定するステップと、前記選択点と前記参照点の距離を演算し、最も距離が短い選択点を到達点の候補として、仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分を含む等高線は前記選択した等高線に隣接する高位又は低位の等高線であると判断するステップと、前記参照点から隣接する高位又は低位の等高線であると判断された等高線データの各線分の任意の点に延ばされた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を落水線作成の先端点の候補とするステップと、全ての先端点の候補の中から参照点に最も近い候補を先端点として決定するステップと、前記参照点から前記先端点に向かって最短距離線を生成するステップと、前記参照点を始点とし、1つ前のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、前記先端点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積及び前記参照点を始点とし、前記先端点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、1つ後のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積の符号を演算し、前記両ベクターの外積が正であるとき、前記先端点は参照等高線データの右側に位置し、前記両ベクターの外積が負であるとき、前記先端点は参照等高線データの左側に位置すると判断するステップと、前記参照点の1つ前のデータ点から参照点までのベクターと前記参照点から1つ後のデータ点までのベクターとが成す角度が所定値以下である場合、等斉斜面であると判定し、該角度が所定値を超過する場合においては、前記先端点が参照等高線データの左右いずれの側に位置するか、前記参照点の1つ前のデータ点を始点とし、参照点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターと、前記参照点を始点とし、1つ後のデータ点を終点とするベクターと同じ向きを持ち、大きさが任意のベクターとの外積の符号が正負いずれかによって、参照等高線データに隣接する隣接等高線データが参照等高線データの左右どちら側に位置し、左右どちら側が高いか、斜面が直線状か谷型か尾根型か、によって斜面の水平断面形を分類するステップとを含み、前記参照点が選択した等高線データの終点の1つ前に達するまで前記各ステップを繰り返し実行し、前記参照点が選択した等高線データの終点の1つ前に達したとき、次の等高線データを選択して前記各ステップを繰り返し実行することにより、等高線データの始点と終点を除く全データ点について斜面の水平断面形を分類し、該分類データを記憶、出力又は送信を実行するものである。
【0013】
以下、具体的に説明する。
(等高線位置判別サブプログラム)
先ず、1ランク低い等高線データとの位置関係をチェックするチェック1について、図19,20に基づいて説明する。
ステップ101において、等高線データを読み込み、等高線データM(ライン番号i)のj番目のデータ点をm、その前後をmj−1、mj+1とおく。このとき、カウンタの値、count=0とする。
ステップ10で、参照等高線データMの参照点mにおいて、Mの隣に位置し、かつ、Mより標高が低い等高線データKを捜す。
先ず、等高線データMが1ランク低い等高線データKの左右どちらの側に位置するかを調べ次いで、等高線データMが1ランク高い等高線データHの左右どちらの側に位置するかを調べる。以下、具体的に説明する。
【0014】
ステップ104において、参照点mから等高線データKへの最短距離の線を引き、この線ととの交点をkとする。もし、点kが存在しない場合は、kの位置を判断できないため、ステップ117へ進む(ステップ105)。
参照点mからmj+1、mj−1、kまでのベクターをそれぞれα、γ、βとし(図5)、等高線データのx座標とy座標の値のみを用いて(Z=0とし)、外積γ×βとβ×αを計算する(ステップ106)。γ×β>0、かつ、β×α>0であるとき、点kは等高線データMの右側に位置(ステップ10)し、図5のように、等高線データMの右側が低いことになる。また、もし、γ×β<0、かつ、β×α<0であるとき、点kは等高線データMの左側に位置し、等高線データMの左側が低いことになる(ステップ11)。(γ×β>0、かつ、β×α<0)、あるいは、(γ×β<0、かつ、β×α>0)、あるいは、γ×β=0あるいは、β×α=0であるとき、点kは判断には適さない点であるので、ステップ11へジャンプする。
【0015】
次いで、1ランク高い等高線データとの位置関係についてチェックするチェック2について説明する。
Mの隣に位置し、かつ、Mより標高が高い等高線データ(等高線データをH、データ点をhとする)を使用することを除き、1ランク低い等高線データとの位置関係のチェックと同じ処理を行う。すなわち、ステップ11〜129において、等高線データHがMの左右どちらの側に位置するかを調べる。
参照点mから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と隣の等高線データとのトポロジー的関係を確認するために、参照点(m=mj+1,mj+2,・・)を変えながら、上記チェック1と上記チェック2の処理を3回繰り返す。このとき、チェック回数は前記カウンタの値として記録される。
【0016】
その後、前記3回のチェックの結果得られた等高線位置データJ[1]、J[2]、J[3]の値が、全て一致しているとき、これを等高線データのデータ領域に位置情報についての属性として書き出す。一致しないときは、データ点が等高線データの終点に到達するまでに一定数確保できる場合は、前記チェック1、2を最初からやり直す。
【0017】
なおこの例では、データ点が等高線データの終点に到達するまでに一定数確保できない場合は、一致するデータを1、2番目のカウンタの等高線位置データJ[1]、J[2]とし、J[3]のデータを取り直す。また、次のデータ点が等高線データの終点である場合は、前記3回のチェックの結果得られた等高線位置データJ[1]、J[2]、J[3]の値のうち一致するものを、等高線データファイルに、属性として位置情報を書き出すこととしている。
また、前記位置情報の内容は、等高線の右側が低いか、左側が高いとき、1、等高線の右側が高いか、左側が低いとき、2としている。
この具体例では、各等高線データの二番目のデータ点からチェックが開始され、参照点を変えながら、3回同じ位置関係が認められたとき、その位置関係を正として受け入れるようにしているが、チェック開始データ点、実施回数は特にこれに限定されず、適宜回数実施すればよい。
【0018】
(水平断面形の判定サブプログラム)
図21のステップ161において、前記等高線位置判別サブプログラムで作成された、等高線データと各等高線データの位置情報Jの値、すなわち、1か2を読み込む。
次のステップ162で、直線斜面を定義するγを入力する。この例ではγを5°としている。
次のステップ164で、等高線データMのデータ点mにおいて、データ点mからデータ点mj+1へ向かうベクターをαとおくとき、等高線データMの全てのデータ点において、αj−1とαの成す角θと、外積αj−1×αを計算する(図7参照)。但し、Mの始点と終点では計算しない。
もし、点mj+1での外積の符号が、点mでの外積の符号と異なる場合は、点mとmj+1との中点を変曲点とし、等高線データMに新たなデータ点として加える。
【0019】
次いで、元の等高線データMの全てのデータ点において、斜面の水平断面形を判定する。
等高線データMの両側に、等高線データHとKが存在するとき、等高線データH、M、Kの標高をそれぞれ、E、E、Eとする(E≧E≧E。ただし、E=E=Eである場合は除く。)。このとき、αj−1×α<0であれば、ラインmj−1j+1は等高線データMの左側に突き出る(図A)。また、αj−1×α>0であれば、ラインmj−1j+1は等高線データMの右側に突き出る(図B)。
もし、外積αj−1×α=0である場合は、mj−1j+1は直線であり、ベクターαj−1とαの角θは0°に等しい(0°≦θ <180°)。
点mにおける斜面の水平断面形は、下記の要領で分類される。
ケース1.αj−1×α=0(θ=0°):直線斜面(ステップ166)
ケース2.αj−1×α<0 かつ 等高線データH(K)が等高線データMの左(右)側に位置する: 集水(谷型)斜面(図A、ステップ169)
ケース3.αj−1×α<0 かつ 等高線データH(K)が等高線データMの右(左)側に位置する: 発散(尾根型)斜面(図A、ステップ170)
ケース4.αj−1×α>0 かつ 等高線データH(K)が等高線データMの左(右)側に位置する: 発散(尾根型)斜面(図B、ステップ173)
ケース5.αj−1×α>0 かつ 等高線データH(K)が等高線データMの右(左)側に位置する: 集水斜面(図B、ステップ174)
計算上、θ=0°となることはまれであるから、直線斜面を定義するγに対して、幅を持たせる必要がある。このため、本例では、γを±5°で計算している。
以上で水平断面形分類プログラムについての説明を終了し、次いで最急登線プログラムについて説明する。
【0020】
【最急登線生成プログラム】
このプログラムは、任意の等高線データのデータ点から、1ランク上の等高線データのうち最も近いデータ点に対し最急登線を生成するプログラムである。
この発明は、コンピュータに、先に生成された最急登線データの到達点を次に生成する最急登線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する高位の等高線の全ての線分データの任意の点を到達点として、個々の最急登線線分データを生成させて、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させる地形データ処理プログラムであって、
該地形データプログラムは、
任意の等高線データの線分データの任意のデータ点を最急登線生成の起点として選定する第1のステップと、
上記選択した等高線データに隣接する高位の等高線の線分データの任意のデータ点のうち、前記起点からの距離が短いものが優先的に選ばれた任意のデータ点を選択点として選定する第2のステップと、
前記選択点と前記起点の距離を演算し、最も距離が短い選択点を到達点の候補として、前記優先的に選ばれた任意のデータ点を含む等高線の線分である仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分の到達点を含む等高線は前記選択した等高線に隣接する高位の等高線であると判断する第3のステップと、
前記起点から隣接する高位の等高線であると判断された等高線データの各線分の任意の点に引かれた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を最急登線作成の到達点の候補とする第4のステップと、
全ての到達点の候補の中から起点に最も近い候補を到達点として決定する第5のステップと、
前記起点から前記到達点に向かって最急登線線分データを生成する第6のステップとを含み、
コンピュータに、
前記決定した到達点を次に生成する最急登線線分データの起点として、前記第2乃至第6のステップを順次繰り返し実行させ
上記到達点の候補が全く存在せず最急登線の終点に到達したと判断されたとき、任意のデータ点を選択した後前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ
前記選択した任意のデータ点が前記任意の等高線データの最後のデータであると判断されたとき、まだ始点とするために用いていない等高線データを選択して前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ、始点とするために用いていない等高線データがないと判断されたとき処理を終了することにより、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させるための地形データ処理プログラムである。
【0021】
【実施例】
本実施例は、等高線データの全データ点に、rise_i[等高線データのライン番号][等高線データのポイント番号]=−1(既成の最急登線が存在するときに、その最急登線番号を入れる)と、rise_j[等高線データのライン番号][等高線データのポイント番号]=−1(その点から最急登線を引けないときは−10,既成の最急登線が存在するときは、その点での既成の最急登線のポイント番号を入れる)という属性を与える(ステップ203)点に特徴がある。
このことにより、既に最急登線データを生成したか否か、又は、生成しようとして不可能であったか否かを判別できるようにする。
【0022】
22、23のフローチャートを参照して、本実施例について説明する。
CPUは、ステップ201において等高線データ全てを読み込み、次のステップ202で最初にライン番号がnである等高線データをM、Mのnn番目のデータ点をmnn、作成する最急登線データの最急登線番号をs、最急登線番号sである最急登線データをW、Wのss番目の点をwssとする。
ステップ203では、等高線データの全データ点に上述の属性を与える
いで、n,s,nnに順次1をデータセットして起点m=mnnと定義したうえで、ss=1とデータセットする(ステップ205〜208)。
【0023】
本実施例の特徴的な部分として、ステップ209において、最急登線データのデータ点の属性rise_i[n][nn]が正であるか否か、そして、ステップ210において、最急登線データを生成しようとして不可能であったか否かを判断する。
このステップ209,210により、既に最急登線データが生成されているか否かが判断される。
このとき、当該データ点mを起点とする最急登線データが既に生成されていたら、新たに最急登線データを生成することなく、ステップ211、213に移り、最急登線データのポイント番号が1であるか否か、また、mがMの終点であるか否か判断し、終点でなければ、次のデータ点を選択(nn=nn+1)(ステップ214)してステップ207に戻る。mがMの終点であれば、Mがライン番号最大の等高線データか否か判断し、Mがライン番号最大の等高線データでなければ、次の等高線データを選択(n=n+1)(ステップ216)してステップ206に戻り、Mがライン番号最大の等高線データであれば、始点とするために用いていない等高線データがないと判断されるから、最急登線プログラム最急登線データの生成処理を終了する。
【0024】
前記ステップ210において、最急登線データのポイント番号が−10であるか否かを判断する。この属性−10については後述するが、既に、mから最急登線データを延長させようとして不可能であった、換言すれば、当該データ点は最急登線の終点であると判断されるので、mを始点とする最急登線線分データは発生させないで、次のステップ211に移る。
最急登線データのポイント番号が−10でないときは、mを最急登線データW(最急登線番号s)の発生点とする。このとき、mはWのss番目の点(初期値ss=0)となる(実際には、ステップ208にて、mはWの1番目の点とされる)。
【0025】
次いで、ステップ217において、当該等高線データMより標高が1ランク高い等高線データはあるか否か判断し、なければ、当該最急登線データの終点であると判断されるから、ステップ266において、−10という属性を付与して、ステップ211に戻る。
次いで、ステップ217〜218において、当該等高線データMより標高が1ランク高い等高線データがあり、かつ、Mより高い等高線データのデータ点が前記起点mの半径R以内にあるとき、標高が1ランク高い等高線データの全てのデータ点のうち、起点mから所定半径R以内に存在するデータ点を全て選択し、選択した全てのデータ点にフラグ1を立てる(ステップ219)。
ステップ217において、当該等高線データMより標高が1ランク高い等高線データがないとき、および、ステップ218において、Mより高い等高線データのデータ点が起点mの半径R以内にないときは、その起点は最急登線データの終点であって、mから最急登線の線分を上方へ引くことはできないから、そのデータ点に−10の属性を与えて、ステップ211に戻る。
上記の所定半径Rは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Rは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、R=150mとした(1:25,000地形図上では6mmとなる)。Rの選択は、計算時間に影響するので重要である。
【0026】
CPUは、選択されたデータ点と前記起点mの距離を演算(ステップ220)し、最も距離が短い選択点をデータ点tとし、該データ点tを含む等高線の等高線データをTとする(ステップ221)とともに、起点mから半径R以内に存在する全てのデータ点を含む等高線のデータ線分(同じ等高線データ上の連続する二つのデータ点をつなぐ線分)を選択する(ステップ222)。
次いで、選択されたこれらの等高線データの線分(以下「仮線分」という。)を用いて、標高が1ランクい等高線データTが選択された等高線データMの隣りに存在するかどうかを調べる。
がMの隣りの等高線データのデータ点であれば、線分mtはどの仮線分とも交差することはない(図3、A)。
しかし、tがMの隣りの等高線データのデータ点でないならば、線分mtは上記したいずれかの仮線分と交差する。
よって、ステップ223において、線分mtが仮線分と交差すると判断されたときは、tを選択点の中から除去(ステップ224)するため前記フラグを消去し、他に選択点がある限り(ステップ225)ステップ22に戻って起点mに最も近い点を演算により選んで、ステップ222、223に進んでこの処理を繰り返す。ステップ225において他に選択点がないときは、前述した手順でステップ211に戻る。
このとき、全ての選択点を用いても標高が1ランク高い等高線データを決定できない場合は、データ点mを最急登線データの終点とする。
【0027】
一方、線分mtが仮線分と交差しないと演算により判断されたときは、等高線データTは等高線データMの隣りに存在するものとして、
T=Q、t=qとする(qはQのj番目のデータ点)。
このとき、k=j,kk=jとし、データ点qの前後のデータ点についても、仮線分と交差するか否か調べるために、
min=j−5(但し、j−5<0ならmin=1)とし、
max=j+5(但し、j+5>[Qのポイント番号の最大値]なら、max=[Qのポイント番号の最大値])とする(ステップ226)。
次いで、起点mと標高が1ランク上の隣接する等高線データQのデータ点qの前後(この例では、前後5つずつ)のデータ点との線分(qj+5.... qj−5)は仮線分と交差するかについて調べ(ステップ227〜229,231〜233)、起点mと各データ点との線分が仮線分と交差しないものを最急登線作成の先端点wの候補とする(ステップ230.234)。
さらに、起点mから、qk+1とqを通る直線とqkk−1とqkkを通る直線に垂線をおろして交点を kkとし(ステップ238.244)、 、p kk は線分qk+1、qkk+1kkの上にあり、かつ、mp、mpkkの線分は仮線分と交差しないものについて、最急登線作成の先端点wの候補とする(ステップ241.247)。
そして、すべての先端点の候補の中から起点mに最も近い点を最急登線作成の先端点wとして選び(図4参照)、mとwを結んで最急登線を生成し、生成した最急登線データは、最急登線データファイルに記憶される(ステップ250.251)。
【0028】
ここでさらに、1ランク上の隣接する等高線データへの最急登線を生成するために、等高線データQをMに、データ点wをmに置換し(ステップ252)、ssを1インクリメントしてステップ254に進み、mが等高線データのデータ点でないとき、ステップ217に戻って次の最急登線データの生成処理に入る。
一方、mが等高線データMのデータ点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)。
【0029】
このときは、この最急登線データWに、当該データ点mから既に生成された最急登線データのrise_j[i][ii]+1番目の点から終点までのデータを接続する(ステップ258)。
次いでステップ259において、Wの始点からss−1番目の点(ss番目の点がmである)について調べる。
ライン番号rの等高線データMのrr番目のデータ点mrrと一致する点については、等高線データ点に、rise_i[r][rr]=W のライン番号(根拠 iiはrise_i[i][ii]番目の最急登線データのrise_j[i][ii]番目の点である(ステップ258),rise_j[r][rr]=Wでのポイント番号、という属性を与える。
なお、ステップ248において、wの候補が全く存在しないときは、ステップ266の処理をした上で、ステップ211に戻る。
また、ステップ256において、最急登線データのライン番号が−1であるときは、最急登線データは存在しないのであるから、ステップ217に戻る。
さらに、ステップ255において、最急登線データのポイント番号が−10であるときは、mを最急登線データWの終点として、ステップ259〜264の処理をして、ステップ213に戻る
【0030
該等高線データの最後のデータ点からの最急登線データの生成が終了したら、1ランク上の等高線データの最初のデータ点から最急登線データを生成し、順次この処理を実行し、ライン番号が最大の等高線データに到達したとき最急登線データの生成を終了する。
【0031】
なお、本実施例においては、ステップ203において等高線データの全データ点に、rise_i[等高線データのライン番号][等高線データのポイント番号]=−1と、rise_j[等高線データのライン番号][等高線データのポイント番号]=−1という属性を与えているが、このステップは省略することも可能である。
この場合のプログラムのフローチャートは、図41、42のようになる。
【落水線生成プログラム】
次いで、落水線生成プログラムについて説明する
記最急登線生成プログラムが任意の等高線データのデータ点から、1ランク上の等高線データの最大傾斜で登るデータ点に対して、最急登線を生成するものであるのに対し、このプログラムは反対に、任意の等高線データのデータ点から、1ランク下の等高線データの最大傾斜で下るデータ点に対し、落水線を生成するものである。
そして、このプログラムについては、後述する谷線生成プログラムにおいて実際に使用しているので、その際に詳しく説明する。
【0032】
以上、本発明の基本プログラムについて説明した。
次いで、各種の応用プログラムについて参考として説明する。
用プログラムは、谷頭決定プログラム(段落0033〜0047参照)、谷線生成プログラム(段落0048〜0058参照)、尾根線生成プログラム(段落0059〜0067参照)、谷次数計算プログラム(段落0081〜0090参照)、谷次数と斜面の垂直断面形の組合せプログラム(段落0091〜0111参照)及び属性をもったラインデータをグリッド化するプログラム(段落0112〜0132参照)である。以下、これら応用プログラムについて順に説明する。
【0033】
【谷頭の決定プログラム】
谷線や尾根線は、山地全体の形状を把握するために重要な情報である。特に谷頭は、山地における侵食の起源であり、谷の最上部であり、風化や重力などによって斜面の後退が起きる(谷頭侵食)。この谷頭の時間的経緯に伴う移動の速度、方向は、山地の侵食と地形変化およびその速度を予測する上で重要である。
本発明は、出来る限り伝統的な手作業に近い手順で、数値等高線データのデータ点の中から、谷頭に該当する点を選び出すものである。
ここでいう谷頭とは、山地において最初に谷型斜面が顕れた谷の最上部を意味する。
【0034】
【実施例】
図26を参照して説明する。
このプログラムは、最初に谷型斜面であることを規定する上限角度を決定するために、その角度を入力して定義する。
そして、段落0012〜0019において既にた水平断面形分類プログラムを実行し、水平断面形の分類データを出力する。
次いで、この水平断面形の分類データを読み込んで1単位ラインの属性を解析する。
【0035】
本実施例は、前記水平断面形分類プログラムによって谷型斜面として分類された一単位のラインを用いることにより、谷線の始点となる谷頭の定義を行う。
本実施例では、θ5°であるとき、データ点mにおける水平断面形は直線斜面として取り扱う。
谷頭を定義するための項目としては、本実施例では、谷型斜面の角度sPsを用いて谷頭を定義しているが、谷型斜面の幅(D)や谷型斜面の深さ(L/D)を用いて定義しても良いこと勿論である(図10参照)
【0036】
【1単位ラインの属性解析プログラム】
(図49参照。)
最初に、上述した基本プログラムである水平断面形分類プログラムの出力結果を読み込み、各等高線データを水平断面形によって分類し、分類したラインを一単位として、一単位ライン毎に書き出すラインファイルを作成する。分類したラインのライン番号をsとする(ステップ401)。
【0037】
次いで、読み込んだ等高線データをM(ライン番号i)とし、Mの始点をm、終点をm、j番目の点をmとする。このとき、ライン番号s=1とする。
そして、Mがポリゴンか否かを判断(ステップ403)し、ポリゴンであれば、データ点の始点と終点のフラグが同じであるか否か調べ(ステップ404)、同じでなければmとmn−1の中点を一単位の始点とし(ステップ405)、同じであればmを一単位の始点とする(ステップ406)。
ステップ403においてポリゴンでないと判断されたときは、mを一単位の始点とする(ステップ407)。
【0038】
次いで、次の点mを読み込んで、読み込んだ点が終点のひとつ手前であるか否か判断(ステップ409)し、読み込んだ点が終点のひとつ手前であるときは、n=3であるか判断し、n=3のときは、mを一単位の終点として(ステップ411)、次のステップ412でサブルーチンOption1(図50参照)に進む。
また、n=3でないときは、読み込んだ点とひとつ前の点のフラグが等しいかどうか調べ(ステップ413)、等しいときは読み込んだ点のひとつ先の点を一単位の終点とし(ステップ414)、等しくないときは読み込んだ点とひとつ前の点の中点を一単位の終点とする(ステップ416)して、それぞれ前記サブルーチンOption1に進む。
上述のステップ409において、今回読み込んだ点が終点のひとつ手前でないときは、今回読み込んだ点とひとつ前の点のフラグが等しいかどうか調べ(ステップ420)、等しくないときは読み込んだ点とひとつ前の点の中点を一単位の終点とし(ステップ421)て、サブルーチンOption1に進み、等しいときはさらに先のデータ点を読み込んで(ステップ424,408)、上記処理を繰り返す。
【0039】
サブルーチンOption1の処理内容の概要は、図10、11、50を参照して、上述の処理にて一単位の始点と終点が決定されたので、以後所定の谷の深さや尾根の突出があるか否かを判断し、所定の谷の深さや尾根の突出がある一単位のラインについて谷型または尾根型の属性を与え、それ以外のものには直線の属性を与える処理を実行するものである。
【0040】
先ず、一単位の始点と終点との直線距離Dを演算する(ステップ431)。
次いで、直線Dに対して一単位のライン上の始点と終点を除く各データ点から垂線を下ろし、それぞれの垂線長を求め、最長のものをL、Lの端点であるデータ点(ポイント番号b)を決定する(ステップ432)。このポイント番号bのデータ点を谷型斜面あるいは尾根型斜面の頂点とする。
そして、一単位の始点とポイント番号bのデータ点の長さ(sp)と、一単位の終点とポイント番号bのデータ点の長さ(sp)を計算し、線分sp,線分sp,線分Dを用いて谷型斜面、あるいは、尾根型斜面の角度ωを計算する(ステップ433)。
角度は、次式を用いて計算する。
【0041】
【式1】
始点、終点を除く一単位ライン上の全データ点での水平断面形は同じである。そこで一単位のライン毎に、直線:0、尾根型:1、谷型:−1の属性を付与する(ステップ434)。
一単位のライン毎に、水平断面形(r)という属性と共に、xy座標を書き出す(ステップ435)。
このとき、一単位の始点が連続する二つのデータ点(仮にmj−1とm)の中点であるときは、mから書き出す。同様に、一単位の終点が連続する二つのデータ点(仮にmj−1とm)の中点であるときは、mj−1まで書き出す
書き出されるファイルの内容は下表の通りとなる。このファイルをfile_xyr1とする。
【0042】
file_xyr1の構造
【表
のとき、ω<aである谷型斜面の頂点(ポイント番号b)にあたるデータ点であるときは、r=−10、谷型斜面で頂点以外のデータ点であるときは、r=−1、ω<aである尾根型斜面の頂点(ポイント番号b)にあたるデータ点であるときは、r=10、尾根型斜面で頂点以外のデータ点であるときは、r=1(根拠 図50)、それ以外は、r=0の属性を与える(ステップ435)。
また、ラインの標高ファイルs,Zも書き出す(Zは、番号sの水平断面形の一単位のラインの標高)
次のステップ436において、sを1インクリメントして一単位の属性解析プログラムに戻る。
【0043】
このとき、ステップ417とステップ422にてサブルーチンOption1を実行して復帰してきたときは、今回読み込んだとひとつ前の点のフラグが等しくない、すなわち、mj−1とmの中点が変曲点であることが明らかであるから、次の一単位の始点をmj−1とmの中点とする(ステップ418,423)。
そして、ステップ418−1において、flag[m]=flag[mn−1]であるか調べ、そのいずれかにより、ステップ404において決定した始点を終点として、再度サブルーチンOption1を実行する(ステップ419)。Mがライン番号の最大の等高線データになるまで、以上の処理を繰り返し、Mがライン番号の最大の等高線データになったら、メインルーチンに復帰する。
【0044】
【谷頭決定プログラム】
図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である。
【0045】
そこで、Mより標高が1ランク低い等高線データが存在するとき、さらにMより低い等高線データのデータ点の中で、属性rが−10であるデータ点が、mの半径R以内に存在すれば(ステップ453)、上記の点を谷頭の選択点とする。また、mの半径R以内に存在するデータ点を含む等高線の線分を仮線分として選ぶ(ステップ454)。
ステップ455において、mと前記各選択点とを結ぶ各線分(選択線分)の中で前記仮線分と交差しないものが存在するとき、仮線分と交差しない選択線分の中で、長さが最小となる選択点を、mからの延長点wと決定する(ステップ456)。
そして、を含む等高線データをM、wをmに置き換え(ステップ457)、次のステップ458に進む。ただし、このmをライン番号iiの等高線データのポイント番号jjのデータ点とする。
ここで、fall_i(ii,jj)=−1であれば、ジグザグラインのポイント番号ggを1インクリメントして(ステップ459)、ステップ452へ戻る。
また、fall_i(ii,jj)=−1でないとき、fall_(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に戻る。
【0046】
前記ステップ452、453においてNoと判断されたときは、いずれもfall_i(n,nn)=−10の属性を与えて、mはWの終点であるとして扱い(ステップ471)、ステップ467に進んで、先にステップ445において付与されたポイント番号の最大値に達しているか否か調べ、達していなければポイント番号nnを1インクリメントしてステップ446へ戻る。
ステップ467においてポイント番号が最大値に達したと判断されたときは、先にステップ469において付与されたライン番号が最大値に達しているか否か調べ、達していなければライン番号nを1インクリメントしてステップ445へ戻り、以上の処理を繰り返し実行する。
【0047】
処理が進んで全ての処理が実行され、ステップ469においてYesと判断されたときは、ジグザグラインの作成を終了し、作成されたジグザグラインの始点を谷頭と決定する(ステップ47)。
最終的な処理として、file_xyr1を再び呼び込み、読み込んだ(x,y)座標が、作成されたジグザグラインの始点の(x,y)座標と等しいとき、rの属性を−10とし、それ以外のときはr=0に変更し、file_xyr1と同じ形式で書き出す。これをfile_xyr2とする(ステップ474)。
以上から明らかなように、file_xyr2は、file_xyr1に比べて、属性rの値だけが変化していることとなる。
なお、谷頭のデータ点のみのポイントファイルを作成することも可能である。
【谷線の生成】
谷線や尾根線は、山地全体の形状を把握するために重要な情報である。特に谷線は、水系の分類や水系領域の抽出や谷密度の計算等に不可欠の情報であり、地形の侵食、崩壊した物質の移動経路、地形の変化の過程の解明、更に、地殻運動や岩石構造によるリニアメントの抽出において利用されている。
本発明は、出来る限り伝統的な手作業に近い手順で谷線を生成することを目的とし、数値等高線データのデータ点の中から、谷頭に該当する点を選び出し、これらの点から谷線を発生させるものである。
ここでいう谷線とは、谷頭からのみ発生させた、最も急傾斜で下る落水線を意味する。
したがって、谷の最上部である谷の頂点以外のデータ点からは落水線は発生されない。この点で、等高線データの全てのデータ点から発生される落水線とは異なる。
【0048】
【実施例】
この発明は、図44のフローチャートに示されるように、水平断面形分類プログラムの一部と1単位ラインの解析プログラムを利用する谷頭を決定するプログラムを実行して得た谷頭データを読み込み、次いで落水線生成プログラムの一部を利用する谷線を生成するプログラムを実行し、谷線を生成するものである。(図44)
【0049】
最初に、前述したfile_xyr2とその標高ファイルを読み込み、r=−10であるデータ点、すなわち谷頭からのみ、落水線データを生成するために、図24、25に示す落水線生成プログラムのサブルーチンに入って、ステップ301をスキップしてステップ302から処理を開始する。
【0050】
〈落水線生成プログラム〉
この段階で、谷線の生成をする。
CPUは、ステップ302で最初にライン番号がnである等高線データをM、Mのnn番目のデータ点をmnn、作成する落水線データの落水線番号をs、落水線番号sである落水線データをW、Wのss番目の点をwssとする。
ステップ303では、等高線データの全データ点にrの属性を与える。すなわち、ライン番号n、ポイント番号nnであるデータ点m nn において、fall_i[n][nn]=−1、fall_j[n][nn]=−1とする。
次のステップ304で、任意の点aから落水線の線分を方に向けて引くとき、aを起点mとする。
次いで、n,s,nnに順次1をデータセットして起点m=mnnと定義したうえで、ss=1とデータセットする(ステップ305〜308)。
【0051】
本実施例の特徴的な部分として、ステップ309において、落水線データのデータ点の属性fall_i[n][nn]が正であるか否か、そして、ステップ310において、落水線データを生成しようとして不可能であったか否かを判断する。
このステップ309,310により、既に落水線データが生成されているか否かが判断される。
このとき、当該データ点mを起点とする落水線データが既に生成されていたら、新たに落水線データを生成することなく、ステップ311、313に移り、落水線データのポイント番号が1であるか否か、また、mがMの終点であるか否か判断し、終点でなければ、次のデータ点を選択(nn=nn+1)(ステップ314)してステップ07に戻る。mがMの終点であれば、Mがライン番号最大の等高線データか否か判断し、Mがライン番号最大の等高線データでなければ、次の等高線データを選択(n=n+1)(ステップ316)してステップ306に戻り、Mがライン番号最大の等高線データであれば、落水線データの生成処理を終了する。
【0052
水線データのポイント番号が−10でないときは、mを落水線データW(落水線番号s)の発生点とする。このとき、mはWのss番目の点となる(ステップ308)。
【0053】
次いで、ステップ317において、当該等高線データMより標高が1ランク低い等高線データはあるか否か判断し、なければ、当該落水線データの終点であると判断されるから、ステップ366において、落水線データのポイント番号として−10という属性を付与して、ステップ311に戻る。
次いで、ステップ317〜318において、当該等高線データMより標高が1ランク低い等高線データがあり、かつ、Mより低い等高線データのデータ点が前記起点mの半径R以内にあるとき、標高が1ランク低い等高線データの全てのデータ点のうち、起点mから所定半径R以内に存在するデータ点を全て選択し、選択した全てのデータ点にフラグ1を立てる(ステップ319)。
ステップ317において、当該等高線データMより標高が1ランク低い等高線データがないとき、および、ステップ318において、Mより低い等高線データのデータ点が起点mの半径R以内にないときは、その起点は落水線データの終点であって、mから落水線の線分を下方へ引くことはできないから、そのデータ点にfall_j[n][nn]=−10の属性を与えて、ステップ311に戻る。
上記の所定半径Rは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Rは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、R=150mとした(1:25,000地形図上では6mmとなる)。Rの選択は、計算時間に影響するので重要である。
【0054】
CPUは、選択されたデータ点と前記起点mの距離を演算(ステップ320)し、最も距離が短い選択点をデータ点tとし、該データ点tを含む等高線の等高線データをTとする(ステップ321)とともに、起点mから半径R以内に存在する全てのデータ点を含む等高線のデータ線分(同じ等高線データ上の連続する二つのデータ点をつなぐ線分)を選択する(ステップ322)。
次いで、選択されたこれらの等高線データの線分(以下「仮線分」という。)を用いて、標高が1ランク低い等高線データTが選択された等高線データMの隣りに存在するかどうかを調べる。
がMの隣りの等高線データのデータ点であれば、線分mtはどの仮線分とも交差することはない(図3、A)。
しかし、tがMの隣りの等高線データのデータ点でないならば、線分mtは上記したいずれかの仮線分と交差する。
って、ステップ323において、線分mtが仮線分と交差すると判断されたときは、tを選択点の中から除去(ステップ224)し、他に選択点がある限り(ステップ325)ステップ32に戻ってtの次に起点mに近い点tを選んで、ステップ322、323に進んでこの処理を繰り返す。ステップ325において他に選択点がないときは、前述した手順でステップ311に戻る。
このとき、全ての選択点を用いても標高が1ランク低い等高線データを決定できない場合は、データ点mを落水線データの終点とする。
【0055】
一方、線分mtが仮線分と交差しないと判断されたときは、等高線データTは等高線データMの隣りに存在するものとして、
T=Q、t=qとする(qはQのj番目のデータ点)。
このとき、k=j,kk=jとし、データ点qの前後のデータ点についても、仮線分と交差するか否か調べるために、
min=j−5(但し、j−5<0ならmin=1)とし、
max=j+5(但し、j+5>[Qのポイント番号の最大値]なら、max=[Qのポイント番号の最大値])とする(ステップ326)。
次いで、起点mと1ランク下の隣接する等高線データQのデータ点qの前後(この例では、前後5つずつ)のデータ点との線分(qj+5‥‥qj−5)は仮線分と交差するかについて調べ(ステップ327〜329,331〜333)、起点mと各データ点との線分が仮線分と交差しないものを落水線作成の先端点wの候補とする(ステップ330.334)。
さらに、起点mから、qk+1とqを通る直線とqkk−1とqkkを通る直線に垂線をおろして交点をp、pkkとし(ステップ338.344)、p、pkkは線分qk+1、qkk+1kkの上にあり、かつ、mp、mpkkの線分は仮線分と交差しないものについて、落水線作成の先端点wの候補とする(ステップ341.347)。
そして、すべての先端点wの候補の中から起点mに最も近い点を落水線作成の先端点wとして選び、mとwを結んで落水線を生成し、生成した落水線データは、落水線データファイルに記憶される(ステップ350.351)。
【0056】
ここでさらに、1ランク下に隣接していた等高線データから落水線を生成するために、等高線データQをMに、データ点wをmに置換し(ステップ352)、ssを1インクリメントしてステップ354に進み、mが等高線データのデータ点でないとき、ステップ317に戻って次の落水線データの生成処理に入る。
一方、mが等高線データMのデータ点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]番目の点である(ステップ58)。
【0057】
このときは、この落水線データWに、当該データ点mから既に生成された落水線データのfall_j[i][ii]+1番目の点から終点までを接続する(ステップ358)。
次いでステップ359において、Wの始点からss番目の点([ss+1]番目の点がmである)について調べる。
ライン番号rの等高線データMのrr番目のデータ点mrrと一致する点については、データ点 rr に、fall_i[r][rr]=W のライン番号,fall_j[r][rr]=Wでのポイント番号、という属性を与える。
なお、ステップ348において、wの候補が全く存在しないときは、ステップ366の処理をした上で、ステップ311に戻る。
また、ステップ356において、落水線データのfall_i[i][ii]が−1であるときは、落水線データは存在しないのであるから、ステップ317に戻る。
さらに、ステップ355において、落水線データのポイント番号が−10であるときは、既にmから落水線データを延長させようとして不可能であったので、mを落水線データWの終点として、前述のステップ359の処理をする。
【0058】
ここでさらに、1ランク下に隣接していた等高線データから落水線を生成するために、等高線データQをMに、データ点wをmに置換し(ステップ352)、ステップ317に戻り、ステップ318からステップ353までの処理を繰り返し、落水線の終点に到達するまで落水線を生成し続ける。
そして落水線の終点まで到達したら、再度ステップ311に戻って、次のデータ点から終点に到達するまで落水線データを生成し続ける。
当該等高線データの最後のデータ点からの落水線データの生成が終了したら、1ランク下の等高線データの最初のデータ点から落水線データを生成し、順次この処理を実行し、ライン番号が最大の等高線データに到達したとき落水線データの生成を終了する。
【0059】
【尾根線の生成プログラム】
最急登線は、山地全体の形状を把握するために重要な情報である。特に尾根線は、特に雪崩との関係が深いことが指摘されており、雪崩のハザードマップ作成、それによる、災害防止に不可欠のものとなっている。
本発明は、出来る限り伝統的な手作業に近い手順で尾根線を生成することを目的とし、数値等高線データのデータ点の中から、尾根下端点に該当する点を選び出し、これらの点から尾根線を発生させるものである。
ここでいう尾根線とは、尾根下端点からのみ発生させた、最も急傾斜で登る最急登線を意味する。
したがって、最も突き出した点である尾根の尾根下端点以外のデータ点からは尾根線は発生されない。この点で、等高線データの全てのデータ点から発生される最急登線とは異なる。
【0060】
【実施例】
このプログラム(図40参照)は、最初に尾根型斜面であることを規定する上限角度を決定するために、その角度の数値を入力して定義する。
そして、前述した水平断面形分類プログラム(図19〜21参照)を実行し、水平断面形の分類データを出力する。
ついで、この水平断面形の分類データを読み込んで1単位ラインの属性(図49参照)を解析する。
前記解析によって得られたデータに基づいて尾根下端点を決定するサブプログラム(図27参照)を実行し、次いで尾根線を生成するサブプログラムを実行し、尾根線を生成する。
【0061】
本実施例は、前記水平断面形分類プログラムによって尾根型斜面として分類された一単位のラインを用いることにより、尾根線の始点となる尾根下端点の定義を行う。
本実施例では、θ5°であるとき、データ点mにおける水平断面形は直線斜面として取り扱う。
尾根下端点を定義するための項目としては、本実施例では、尾根型斜面の角度(∠sps)を用いて尾根下端点を定義しているが、尾根型斜面の幅(D)や尾根型斜面の深さ(L/D)を用いて定義しても良いこと勿論である(図10_2)
【0062】
<1単位ラインの属性解析プログラム>
このプログラムについては、既に段落0036から段落0048にて説明した谷線生成プログラムの1単位ラインの属性解析プログラムと同一であるので、詳しい説明を省略する。
【0063】
<尾根下端点決定プログラム>
尾根下端点となるデータ点を見つけるため、前述の一単位ラインの属性解析プログラムで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の延長を試みる
0064】
そこで、Mより標高が1ランク高い等高線データが存在するとき、さらにMより高い等高線データのデータ点の中で、属性rが10であるデータ点が、mの半径R以内に存在すれば(ステップ453−2)、上記の点を尾根下端点の選択点とする。また、mの半径R以内に存在するデータ点を含む等高線の線分を仮線分として選ぶ(ステップ454−2)。
ステップ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)、ステップ45−2へ戻る。
【0065】
前記ステップ452−2、453−2においてNoと判断されたときは、いずれもrise_(n,nn)=−10の属性を与えて、mはWの終点であるとして扱い(ステップ471−2)、ステップ467−2に進んで、先にステップ445−2において付与されたポイント番号の最大値に達しているか否か調べ、達していなければポイント番号nnを1インクリメントしてステップ446−2へ戻る。
ステップ467−2においてポイント番号が最大値に達したと判断されたときは、先にステップ444−2において付与されたライン番号が最大値に達しているか否か調べ、達していなければライン番号nを1インクリメントしてステップ445−2へ戻り、以上の処理を繰り返し実行する。
【0066】
処理が進んで全ての処理が実行され、ステップ469−2においてYesと判断されたときは、ジグザグラインの作成を終了し、作成されたジグザグラインの始点を尾根下端点と決定する(ステップ473−2)。
最終的な処理として、file_xyr1を再び呼び込み、読み込んだx,y座標が、作成されたジグザグラインの始点のx,y座標と等しいとき、rの属性として10を、それ以外ときはr=0に変更し、file_xyr1と同じ形式で書き出す。これをfile_xyr2とする(ステップ474−2)。以上から明らかなように、file_xyr2は、file_xyr1に比べて、属性rの値だけが変化していることとなる。
以上の処理が終了したところで、尾根線生成プログラムのメインルーチンに復帰する。
【0067】
〈最急登線生成プログラム〉
尾根線を生成する。
先ず、file_xyr2とその標高ファイルを読み込み、r=10であるデータ点、すなわち尾根下端点からのみ、尾根線データを生成するために、最急登線生成プログラムのサブルーチン(図22参照)に入って、ステップ201をスキップしてステップ202から処理を開始する。
以後の処理内容については、段落0022から段落0031において説明したことと同じであるので、説明を省略する。
【0068
部等において同じ高さの等高線データを結ぶ線を生成しようとするときは、次の処理をさらに行う。
以下に述べるプログラムは、任意の二つの等高線を結ぶ線分の数は1本とすることを前提としている。
一単位ラインの属性解析プログラムを再度実行する。その際に実行するオプションはOption1(図50参照)である。このときDは計算しない。また、変曲点については書き出さないので、読み込んだデータ点の数と書き出すデータ点の数は等しいこととなる。
一単位ラインの属性解析プログラムを終了したら、メインルーチンに戻って、同高等高線結合線分生成プログラムを実行する。
【0069】
〈同高等高線結合線分生成プログラム〉
図28乃至30を参照して説明する。
最初に、使用者が、等高線の全長max_lngth、結合する線分の最大長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)。
【0070】
次のステップ493で、poly_i[s]とpoly_l[s]をpoly_l[s]が短い順に並べ替える。この処理により、poly_l[1](等高線番号poly_i[1])が、全長が最も短い開始ポリゴンとなるとともに、poly_l[p_sum](等高線番号poly_i[p_sum])が、全長が最も長い開始ポリゴンとなる。
次いで、line_i[i]とline_l[i]をline_l[i]が長い順に並べ替える。
この処理により、line_l[1](等高線番号line_l[1])が、全長が最も長い等高線となり、line_l[sum](等高線番号line_l[sum])が、全長が最も短い等高線となる(ステップ494)。
【0071】
次のステップ495において、開始ポリゴンと等高線を結ぶ線分を書き出す。
書き出される線分の番号を、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のサイクル)。このときの出力データの形式は、次の表とおりである。
【0072】
【表
tの値が書き出す線分番号の最大値まで達したとき、出力ファイルへの書き出しを停止する(ステップ511)。
【0073】
一方、ステップ500〜502において、標高は0である、開始ポリゴンと開始ポリゴンとの線分を結べるかどうかを検討する等高線の標高が等しくない、開始ポリゴンである等高線のライン番号と開始ポリゴン(ライン番号)との線分を結べるかどうかを検討する等高線のライン番号とが等しい、の3条件のいずれをも満たさないとき、ステップ514以降において、開始ポリゴン(ライン番号i)と等高線(ライン番号h)を結ぶラインが存在するかどうかを調べる。そして、二つの等高線を最短距離で結ぶデータ点の組合せを捜す。
【0074】
ステップ514で、tmp_j=−1,tmp_g=−1,ll=100000[m]とおき、次に、j=1とおく。このjは、開始ポリゴンのポイント番号である(ステップ515)。そして、この点jが尾根型斜面(r=1)であるデータ点であるか否か判断し、Yesであれば、g=1とおく。gは開始ポリゴンとの線分を結べるかどうかを検討する等高線hのポイント番号である。
そして、点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に戻る。
【0075】
一方、ステップ527においてtmp_jが−1でないときは、j=tmp_j,g=tmp_gとおき、以下のステップを実行することにより点jに最も近い、h上の点を捜す。
ステップ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へ進む。
【0076】
このステップ548以降の処理により、点jと、h上のstart1からend1までのデータ点との線分について検討する。
先ず、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の座標の演算を行う。
【0077】
【式
【0078】
次のステップ564以降の処理で、(x1,y1)と(x2,y2)を端点とする線分tmp_segmentが、等高線と交差するかどうか調べる。標高がZ[i]、および、Z[i]より1ランク低い標高の等高線についてのみ調べればよい。
(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として、下記の情報を保存する。
【0079】
【表
【0080】
次いで、new_segmentが、これまでに作成した線分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へ戻る。
【0081】
【谷次数の計算】
斜面崩壊の発生場所が、特定の谷次数nの位置に集中していれば、まだ崩壊が起きていない谷次数nの部分は、他と比べ、崩壊の危険が高い。したがって、谷線に沿って得られる谷次数は、侵食の進み具合や、崩壊の傾向や危険度を把握するために重要な情報である。このプログラムは、最初に谷線生成プログラムを実行して谷線を生成し、次いで前記生成した谷線を水系毎に分類する水系分類プログラムを実行して得られた水系分類データを読み込んで、谷次数の計算を行うものである。勿論、落水線を用いてもよい(図45)
【0082】
谷線生成プログラムについては前述したので、水系分類プログラム(図43)について以下詳しく説明する。
前提として、標高が同じ二つの谷線(落水線)データのデータ点(終点)の距離がd[m]以内(デフォルトは0.5[m])であるとき、二つの谷線(落水線)データは合流するとする。
本発明の落水線作成手法は、隣り合う等高線、したがって標高の異なる等高線を直線でつなげることから、屈曲の激しい部分では、落水線は途切れる。
このような部分は、全体からみるとわずかな数なので、現在、途切れた部分については、手作業でつなぐのが最も実用的である。
そこで、作成された落水線の中で、途切れている部分があれば、その部分を手作業でつないで落水線データを補正し、当該補正した落水線データを解析対象とする。
【0083】
【水系分類プログラム】
水系については、本発明で、同一の終点に収束する谷線(落水線)データは、同じ水系であると定義している。
実際には、標高が同一の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で、Wの終点をwとし、sより谷線(落水線)番号が大きい谷線(落水線)データの中から、終点の標高がwと同じであり、水平距離がd(使用者が決定)以内である谷線(落水線)データを選ぶ。これらの谷線(落水線)の総数が、f以上であるとき(ステップ614)、選ばれた谷線(落水線)それぞれに水系番号kを与える(ステップ615)(図12_1_B)。また、総数がfより小さい場合は、選ばれた谷線(落水線)それぞれに水系番号−10という属性を与える(ステップ616)(図12_1_A)。sが最大の谷線(落水線)番号(ステップ617)であればメインルーチンに復帰終了し、でなければ谷線(落水線)番号に+1をする(ステップ618)、Wの属性が−10(ステップ619)であればステップ617へジャンプする。Wの属性が−10でない場合、ステップ620においてWの属性>0のときは同様にステップ617へジャンプする。満たさないものは、水系番号に+1を与えステップ613へジャンプする。
以上の処理にて、谷線(落水線)は水系毎に分類される。
なお、水系番号毎(例えば、1,2,3,…)に、谷線(落水線)の色を変えることにより、谷線(落水線)をベースにして、分類された水系を表示、印刷することができ、視覚的に理解し易い水系図を作成することができる。
【0084】
次いで図46、47を参照して谷次数計算プログラムについて説明する。
先ず、水系分類を行った谷線データを読み込み(ステップ631)、次のステップ632にて、α=等高線の標高間隔(デフォルトは、α=10[m])とする。また、s=1とする。
以後、水系毎に谷次数を計算する。ここでk=1とする。このkは水系毎に付与される水系番号(1,2,3,…,k_end)である。
次のステップ634において、水系番号kである谷線データを始点の標高が高い順に並べ替え、仮番号h(1,2,3,…,h_end)を与える。仮番号1の谷線データWの始点の標高をmax_Z,終点の標高をmin_Zとする(図13)
本実施例では、谷次数の計算の基になるデータを谷線としているが、落水線であってもよい。
仮番号hの谷線データWのg番目のデータ点をwh,gとするとき、Wのデータ点の総数をP[h]個とする。線分のwh,gh,g+1の起点をwh,g、先端点をwh,g+1とする。
このとき、wh,gの標高は、wh,g+1の標高より高い。
先ず、起点が谷線データの始点にあたる線分wh,1h,2の谷次数には、あらかじめ0を与える。
【0085】
ステップ636において、E=max_Zとし、次のステップにおいてh=1とする。その次に、Count=0とする(ステップ638)。
次いで、Wのデータ点の総数P[h]が0であるか否か判断する。
のデータ点の総数が0でないとき、Wのデータ点について、ポイント番号が小さい順にデータ点の標高がEと等しい点を捜す。ここでg=1とおく。
次に、[wh,gの標高]がEであるか否か判断する(ステップ641)。[wh,gの標高]がEであるとき、Countが0であれば、i=h、j=gとするとともに、線分wi,ji,j+1を基準線分とする。このとき、tmp=−1、count=1、order=−1として(ステップ643)、ステップ647へ戻って、仮番号hが最終の番号であるか否か判断し、次のステップに移行する。
【0086】
一方、[wh,gの標高]がEより大きいとき、 h,g+1がWの終点であるか否か判断し(ステップ645)、終点でなければgを1インクリメントして、ステップ641に戻る。
ステップ645においてwh,g+1がWの終点であるとき、ステップ644において[wh,gの標高]がEより小さいとき、及びステップ649において線分wi,ji,j+1と線分wh,gh,g+1がwi,j+1で合流しないと判断されたときは、いずれもステップ647へ進む。
ステップ647において、仮番号hが最終の番号であるか否か判断し、最終の番号でないとき、hを1インクリメントして(ステップ648)、ステップ639に戻る。
【0087】
ステップ649において線分wi,ji,j+1と線分wh,gh,g+1がwi,j+1で合流すると判断されたときは、谷次数の計算を実行するため、ステップ650へ進む。
ステップ650では、hとgを保存し、P[h]=0とする。これは、wi,j+1より下流において、WとWの重複をさけるために行うものである(図17、18)
そして、ステップ651において、tmpが負か否かチェックし(tmpの意味は段落0098参照)、負の数であれば、線分 i,j i,j+1の谷次数が線分wh,gh,g+1の谷次数と等しいとき、ステップ653において、tmp=5、order=(wi,ji,j+1の谷次数)+1の処理を行う。また、線分 i,j i,j+1の谷次数が線分wh,gh,g+1の谷次数より大きいとき、ステップ655において、tmp=1、order=(wi,ji,j+1の谷次数)とする。
さらに、線分 i,j i,j+1の谷次数が線分wh,gh,g+1の谷次数より小さいとき、ステップ656において、tmp=10、order=(線分 h,g h.g+1 の谷次数)とする。
【0088】
以上の処理が終了したら、ステップ647に戻る。
ステップ647において、仮番号hが最終の番号h_endでないとき、hを1インクリメントしてステップ639へ戻る。
仮番号hが最終の番号h_endであるときは、ステップ657へ進み、orderが負の数であれば、線分wi,j+1i,j+2の谷次数を線分wi,ji,j+1の谷次数と同一にし(ステップ658)、orderが0以上の数であれば、wi,j+1i,j+2の谷次数をorderの数とする(ステップ659)。
【0089】
ステップ651において、tmpが0以上であるとき、Option−v1(図47)のサブルーチンに入る。
このサブルーチンは、三本以上の谷線データが、1点で合流する場合に実行されるものである(tmpの意味は
【0098】参照)
ステップ671において、wi,ji,j+1の谷次数がwh,gh,g+1の谷次数と等しく、かつ、tmp=1であるとき、tmp=5とするとともに、order=(wi,ji,j+1の谷次数)+1とする(ステップ672)。
また、ステップ671において、wi,ji,j+1の谷次数がwh,gh,g+1の谷次数と等しくないか、またはtmp=1でないとき、wi,ji,j+1の谷次数がwh,gh,g+1の谷次数より小さいか否か判断する。判断結果がYesであれば、tmpが1か、5か、10か、15かがチェックされ(ステップ674、676、678、683)、ステップ674とステップ676においてYesのとき、tmp=10、order=(wh,gh,g+1の谷次数)の処理がされる。
また、ステップ678においてtmp=10であり、ステップ679においてwh,gh,g+1の谷次数がorderであるときは、tmp=15、order=wh,gh,g+1の谷次数+1の処理を行う(ステップ680)。
そして、ステップ679においてwh,gh,g+1の谷次数がorderでないときは、ステップ681に進んでwh,gh,g+1の谷次数がorderより大きいか否かを判断し、大きければtmp=10、order=wh,gh,g+1の谷次数の処理を行う(ステップ682)。
さらに、ステップ683において、tmp=15であるとき、order=wh,gh,g+1の谷次数が、order(以上あるか否か)の判断をして、Yesのとき、tmp=10、order=wh,gh,g+1の谷次数の処理を行い(ステップ685)、Noのとき、処理を終了してステップ647に戻る。
【0090】
谷次数についての計算が終了したら、計算結果をステップ660において書き出す。
次のステップ66にて、sを1インクリメントして、i=h_endでないとき、h=i+1、conut=0として、再度ステップ639に戻る。
i=h_endのとき、E>min_Z+αであれば、E=E−αの処理をし(ステップ66)て、ステップ638に戻る。
i=h_endのとき、E>min_Z+αでなければ、k=k_endを判断する。
k=k_endでなければ、kを1インクリメントしてステップ634に戻り、次の水系番号のデータについて処理を実行する。
全ての水系番号のデータを処理すれば、k=k_endとなるから、計算を終了する。
【0091】
【谷次数と斜面の垂直断面形の組合せ】
図31〜34を参照して説明する。
落水線データW、W、Wについて、それぞれ、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点から成るラインを一単位とする。一単位のラインの両端の点は、落水線データの線分の中点となる場合が多い(図1B))が、落水線データの始点や終点となる場合もある(図1A))。また、複数の落水線データが同じデータ点に合流する場合、その合流点を中点とする一単位のラインの垂直断面形は、それぞれ異なる場合がある(図15,B1),B2))。したがって、落水線データW、W、Wが、データ点wi,j+1において合流するとき、wi,j+1における斜面の垂直断面形(wi,j+1を中点とするライン)を、下記の手順によって、唯一つに定める
ず、落水線生成プログラムを実行して落水線を生成し(ステップ701)た後、次の702にて水系分類プログラムを実行する。本実施例は、落水線データを基に計算を行ったが、谷線データであってもよい。
そこで、水系分類データを読み込む(ステップ702の2)。続いて、水系番号を持たない、すなわち水系をなさない落水線についての計算を行うかどうか入力して決定する(ステップ703)。
水系番号を持たない落水線についての計算を行うと決定されたときは、Option−cのサブルーチンに進む。このサブルーチンは、付加的なものであるから、このサブルーチンについては後述することとする。
【0092】
このプログラムは、先ず水系毎に谷次数を計算し、さらに垂直断面形の分類を行うものである。そこで、この処理について詳しく説明する。
最初にステップ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の落水線データWの始点の標高をmax_Z、終点の標高をmin_Zとする。
次いで、仮番号hの落水線データWのg番目のデータ点をwh,gとし、Wのデータ点の総数をP[h]個とする。線分wh,gh,g+1の起点をwh,g、先端点をwh,g+1とする。このとき、wh,gの標高>wh,g+1の標高の関係にある。
そして起点が落水線データの始点にあたる線分wh,1h,2の谷次数を0とする。次にE=max_Z、h=1、count=0とおく。
【0093】
のデータ点の総数が0でないとき、Wのデータ点について、ポイント番号が小さい順にデータ点の標高がEと等しい点を捜す。ここでg=1とおく(ステップ714)。
次に、wh,gの標高がEであるか否か判断する(ステップ715)。wh,gの標高がEであるとき、Countが0であれば、i=h、j=gとするとともに、線分wi,ji,j+1を基準線分とする。このとき、tmp=−1、count=1、order=−1として(ステップ723)、ステップ719へ戻って、仮番号hが最終の番号であるか否か判断する。判断結果がNoのとき仮番号hを1繰り上げてステップ713に戻る。
【0094】
一方、wh,gの標高がEより高いとき、wh,g+1がWの終点であるか否か判断し(ステップ717)、終点でなければデータ番号gを+1してステップ715に戻る。
ステップ717においてwh,g+1がWの終点であるとき、ステップ716においてwh,gの標高がEより低いとき、及びステップ724においてwi,ji,j+1とwh,gh,g+1がwi,j+1で合流しないと判断されたときは、ステップ719へ進む。
ステップ719において、仮番号hが最終の番号であるか否か判断し、最終の番号でないとき、仮番号hを1インクリメントして(ステップ720)、ステップ713に戻る。
【0095】
ステップ724において線分wi,ji,j+1と線分wh,gh,g+1がwi,j+1で合流すると判断されたときは、谷次数の計算を実行するため、ステップ725へ進む。ステップ725では、hとgを保存する。
そして、ステップ726において、tmpが負か否かチェックし、負の数であれば、線分wi, i,j+1の谷次数が線分wh,gh,g+1の谷次数と等しいとき、ステップ728において、tmp=5、order=( 線分wi,ji,j+1の谷次数)+1の処理を行う。
また、線分wi,j ,j+1の谷次数が線分wh,gh,g+1の谷次数より大きいとき、ステップ730において、tmp=1、order=( 線分wi,ji,j+1の谷次数)とする。
さらに、線分wi, ,j+1の谷次数が線分wh,gh,g+1の谷次数より小さいとき、ステップ731において、tmp=10、order=(線分 h,g h,g+1 の谷次数)とする。
【0096】
以上の処理が終了したら、ステップ719に戻る。
ステップ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が最終のものであるときは、全ての対象について処理が終了しているので、この処理を終了する。
【0097】
ステップ72において、tmpが0以上である場合、ステップ732において、線分wi,ji,j+1の谷次数が線分wh,gh,g+1の谷次数と等しく、かつ、tmp=1であるとき、tmp=5とするとともに、order=(線分wi,ji,j+1の谷次数)+1とする(ステップ733)。
また、前記ステップ732において、線分wi,ji,j+1の谷次数が線分wh,gh,g+1の谷次数と等しくないか、またはtmp=1でないとき、線分wi,ji,j+1の谷次数が線分wh,gh,g+1の谷次数より小さいか否か判断する。
判断結果がYesであれば、tmpが1か、5か、10か、15かがチェックされ(ステップ735,736,738,743)、ステップ735とステップ736においてtmpが1か5のとき、tmp=10、order=(線分wh,gh,g+1の谷次数)の処理がされる(ステップ737)。
また、ステップ738においてtmp=10であり、ステップ739において線分wh,gh,g+1の谷次数がorderであるときは、tmp=15、order=線分wh,gh,g+1の谷次数+1の処理を行う(ステップ740)。
そして、ステップ739において線分wh,gh,g+1の谷次数がorderでないときは、ステップ741に進んで線分wh,gh,g+1の谷次数がorderより大きいか否かを判断し、大きければorder=線分wh,gh,g+1の谷次数の処理を行う(ステップ742)。
さらに、ステップ743において、tmp=15であるとき、線分wh,gh,g+1の谷次数≧orderの判断をして、Yesのとき、tmp=10、order=線分wh,gh,g+1の谷次数の処理を行い(ステップ745)、ステップ719に戻る。また、ステップ744の線分wh,gh,g+1の谷次数≧orderの判断かNoのとき、処理を終了してステップ719に戻る。
【0098】
ここで、tmpの値の持つ意味について整理しておく。
tmp=1:線分wi,ji,j+1のみが、最大の谷次数をもつ。
tmp=5:線分wi,ji,j+1とそれ以外(複数可)の線分 h,g h,g+1 が、最大の谷次数をもつ。
tmp=10:単一の線分wh,g ,g+1(≠線分wi,ji,j+1)が、最大の谷次数をもつ。
tmp=15:複数の線分wh,g ,g+1(≠線分wi,ji,j+1)が、最大の谷次数をもつ。
【0099】
1つの水系に属する落水線データについての谷次数の計算が終了すると、前記ステップ719においてYesの判断がなされ、ステップ721に進んで、Countが0であるか否か判断する。Countが0と判断されたときはステップ790に進み、0でない場合さらにステップ746に進む。
該ステップ746において、orderが負か否か判断される。
負と判断されたときは、線分wi,j+1i,j+2の谷次数の値を線分wi,ji,j+1の谷次数の値とする。
また、負と判断されなかったときは、orderの値を線分wi,j+1i,j+2の谷次数の値とする
0100】
次いで、ステップ749とステップ750において、orderが負であるか、tmpが1であるときは、ii=i、jj=jとおく。
また、ステップ752においてtmpが10であるときは、データ点wi,j+1で合流する線分wh,gh,g+1(ただしh≠i)の中で最大の谷次数をもつ線分の(h,g)を用いてii=h、jj=gとおく。
上記の3つのステップにおいて、いずれにも該当しないときは、線分wi,ji,j+1と線分wh,gh,g+1が同じ谷次数を持っていて互いに流れとしての経歴は互角であるから、いずれの落水線が直線的に流れて行くことになるかを調べるために、線分wh,gh,g+1と線分wh,g+1h,g+2が水平面上でなす角δh,g+1(≦180°)を計算する(図16B)。ただし、このhにはiが含まれる、また、このgにはjが含まれる。
したがって、線分wi,ji,j+1と線分wi,j+1i,j+2が水平面上でなす上記角δh,g+1(≦180°)についても計算するものである。そして、計算されたδh,g+1の中で、最大であるδh,g+1のhとgについて、ii=h、jj=gとおく。すなわち、直線的に流れていくものを優先して基準線分として利用していくこととしている。
【0101】
ここで、データ構造及びその属性の計算方法及びその属性について説明する。
【0102】
【表
勾配θii,jj:tanθii,jj=α/ ii,jjより計算
谷次数vii,jj−1:wii,jj−1ii,jjの谷次数
垂直断面形を決めるτii,jj=180°+θii,jj−1−θii,jj
水平面上での角δii,jj:lii,jj−1 、l ii,jj 、w ii ,jj−1 ii ,jj+1との水平面距離lから次式の計算により求まる。
【0103】
【式
【0104】
また、上から中点、データ点、中点のデータmii,jj−1ii,jjii,jj+1 ついて属性ファイルに書き出す属性は、つぎのとおりである。
(1)線分番号:s(xyファイルのsに対応させる)
(2)中点の標高:zii,jj
(3)水系番号:k
(4)ii,jjの上流の線分の勾配:θii,jj−1
(5)ii,jjの下流の線分の勾配:θii,jj
(6)ii,jjでの、水平面での角:δii,jj
(7)垂直断面形を分けるための角:τii,jj
(8)谷次数vii,jj−1:線分wii,jj−1ii,jjの谷次数
以上みたように、例えば谷次数は、1つの落水線データの線分、したがって2つのデータ点に対し1つの属性を有するが、例えば垂直断面形を決める角は、連続する2つの落水線データの線分、したがって3つのデータ点に対し1つの属性を有する。
このため、最初の及び最後のものを除く落水線データは、典型的には下表のようなステップ807のデータ点を書き出すこととなる。
【0105】
【式
また、書き出す属性は下表のようになる。
【0106】
【表
【0107】
以下の処理を実行することにより、全ての線分について、xyファイル属性ファイルにデータを書き出す処理を実行する。
ii,jjの(x,y,z)座標をそれぞれ(xii,jjii,jj,zii,jj)、wh,gの(x,y,z)座標をそれぞれ(xh,g,yh,g,zh,g)とする(ステップ755)。
そして、線分wii,jjii,jj+1以外に、wi,j+1を先端点とする線分が存在するか否か判断し(ステップ756)、存在すれば、線分wii,jjii,jj+1を除く、wi,j+1を先端点とする複数の線分をwh,gh,g+1とする(ステップ757)。
【0108】
ステップ758からステップ76の処理により、今までの処理により取得したデータの全てをファイルに書き出す。
先ず、ステップ759とステップ761において、データポイント番号が1か2かそれ以外かを判別する。
そして、データポイント番号が1であれば、ステップ760において書き出しを行い、データポイント番号が2であるときは、ステップ762において書き出しを行う。
また、データポイント番号が1でも2でもないときは、ステップ763において書き出しを行う。
そして、ステップ764では、Wのデータ点の総数P[h]を0とおく。これは、以後の処理において重複する落水線データを排除するために行う処理である。
以上の処理により、全ての落水線データのxy座標データと属性データの書き出しを終了する。
【0109】
次に、線分 ii,jj ii,jj+1 について書き出しを行う。
データポイント番号が1か、2かつW ii のデータ点の総数P[ii]の2つ手前か否かを調べ、それぞれ満足する条件にしたがって、データを書き出し(ステップ768〜77)、データ番号sを+1してステップ789へ進む。
一方ステップ756において、wii,jjii,jj+1以外に、wii,j+1を先端点とする線分が存在しないときは、ステップ780に進んで、データポイント番号が1であるか否か判断し、1であればステップ789に進む。
また、データポイント番号が1以外である場合には、データポイント番号が2、データ点の総数が3データ番号が2、データ番号がデータ点の総数の1つ手前、のいずれか条件を満たするか否かによって、4通りの形式でデータを書き出す(ステップ781〜787)。
しかる後に、データポイント番号sを+1して、ステップ789に進む。
【0110】
ステップ789においては、基準線分のライン番号が仮番号の総数に到達したか否かを判断する。
そして、到達していない場合は、h=i+1、count=0とおいて、ステップ713に戻る。
また、基準線分のライン番号が仮番号の総数に到達したと判断された場合は、E>min_Z+αのとき、標高を1ランク下げて(E=E−α)してステップ713に戻って以後の処理を実行する。
さらに、E>min_Z+αでないときは、水系番号の最終に到達していなければ、次の水系についての処理に移行する(ステップ794)。
ここで、水系番号の最終に到達したときは、全ての水系について処理が終了したので、プログラムの実行を終了する。
【0111】
ここであらためて、サブルーチンOption_c(図48)について説明する
次に、落水線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以降の処理に入るものである。
【0112】
【等高線属性データのグリッド化プログラム1】
本発明は、等高線データを基に算出した各種の属性データ(線分)をグリッド化するときに用いるプログラムに関するものである。
一般に、値数統計解析手法では、規則正しい、格子状の配列を持つグリッドデータを用いる場合が多い。また、植生データ、地質データなどの多くのデータがグリッドデータとして整備されてきている。
一方、各種の情報を保有する線分データや(ランダムな)ポイントデータは、そのままでは、上記グリッドデータと結合して使用することは困難である。
そこで本発明は、取得された、地形属性を持つ線分データなどをグリッド化して、各種のグリッドデータとリンクさせ、活用の範囲を広げようとするものである。
グリッド化に用いる線分データは、線分の始点と終点の平面位置座標の情報を必ず持ち、勾配や斜面方位などの属性を一つ以上持つものとする。
そして例えば、落水線の線分データから、勾配と斜面方位と谷次数を同時に計算し、1)ライン番号,2)線分の始点のx座標,3)線分の始点のy座標,4)線分の終点のx座標,5)線分の終点のy座標,6)水系番号,7)勾配,8)斜面方位,9)谷次数を、各線分毎に書き出したファイルを作っておいて、必要に応じた属性だけを読み込んでもよい。
また、勾配グリッドデータを作りたいときは、上記2)〜5)と7)だけを書き出したファイルを作っても良い。
いずれにしても、グリッドデータ作成に用いる線分データの形成は、いろいろ考えられる。また、落水線だけでなく、最急登線、谷線、尾根線、属性付きのポイントデータを基に、グリッドデータを作成することが可能である。
【0113】
斜面の垂直断面形のように、落水線の2つの線分を単位とする場合は、2つの線分に分けて書き出す。
2つに分けられた線分は、始点と終点の(x,y)座標は異なるが、属性は同じとなる。
【0114
【0115】
等高線に沿って分類された斜面の水平断面形の場合は、等高線の線分毎に書き出す。
(例)
1)ライン番号
2)線分の始点のx座標
3)線分の始点のy座標
4)線分の終点のx座標
5)線分の終点のy座標
6)水平断面形の種類(1:尾根型,−1:谷型,0:それ以外)
【0116】
まず、グリッドデータを作成するための作成範囲を決める。例として以下の2つの方法を挙げる。
方法1)図面等をみて、手作業で(x,y)座標の最大値と最小値(min_x,max_x,min_y,max_y)を決める。
方法2)グリッドデータの基になる線分データを読み込み、これらの線分データの始点と終点の中から(x,y)座標の最大値と最小値(min_x,max_x,min_y,max_y)を決める。ただし、分布するデータの範囲が常に長方形とは限らないので注意する必要がある。
次に、作成するグリッドデータのグリッド間隔dを決める
更に、グリッド点の位置を決める(中心、あるいは、四隅のはずれた点)
なお、グリッドデータは、実際は、点ではなく、広がりを持ったセルとして現される。
【0117】
【表
【0118】
従来多用されている標高グリッドデータを用いて、各種グリッドデータを計算する場合、下図のように行われる。
【0119】
【表
例えば、グリッド点gi,jでの勾配を計算したいとき、gi,jの標高のみを用いて、gi,jの勾配を計算することはできない。
このため、gi,jの周囲のグリッド点の標高も使う必要がある。
したがって、計算範囲が広くなることから、計算結果が緩やかになる傾向にある。
これに対して、本発明においては、属性まで計算した線分データを作り、計算範囲内に存在するデータのみを使う。
まさに当該グリッド内での値が求められるのが特徴である。
従来は、標高グリッドデータから、勾配などの各種グリッドデータを作るのが普通である。
【0120】
【表
【0121】
以下、属性を勾配とする実施例について詳しく説明する。
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)を計算により自動的に求める。ただし、分布するデータの範囲が常に長方形とは限らないので注意を要する。
【0122】
そして、使用者がグリッド間隔dを入力することにより、dを決定する。このことにより、計算範囲rが確定する。なお、この計算範囲rは、本実施例ではグリッドを中心とした半径rで定義されている。rのデフォルトは、d/√2としているが、使用者が変更可能にしてある。rを決める際には、グリッド化の基になるデータの精度を考慮する必要がある。また、上記グリッド間隔dの入力により各グリッドの位置(x,y)、総数(num_x,num_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の線分の始点をp=(x,y),終点をp=(x,y)とする。
【0123】
ステップ820、821、822、824及び825において、線分の始点、終点がともに1つのグリッドの範囲外にある、または、グリッド中心gi,jと、始点pと終点pを通る直線Tにグリッド中心gi,jから下ろした垂線とTとの交点t(以下単に「交点」という。)と、の距離が計算範囲rを越えると判断された場合、ステップ826に進み、線分番号が線分の総数に達していないときは、線分番号sを1インクリメントして再びステップ819からステップ825を実行する。その実行の結果、ステップ820、821、822、824及び825において全てNoと判断されると、ステップ828、830及び832において、
グリッド中心と交点との距離が計算範囲rを越えず、かつ、交点が線分p上の点である(ステップ828)、
グリッド中心と終点との距離がグリッド中心と始点との距離より短いか等しく、かつ、グリッド中心と終点との距離が計算範囲rを越えない(ステップ830)、
グリッド中心と始点との距離がグリッド中心と終点との距離より短かく、かつ、グリッド中心と始点との距離が計算範囲rを越えない(ステップ832)、のいずれかに該当するとき、線分番号sとそれらの距離lを保存し(ステップ833−2)、nを1インクリメントして(ステップ833−3)ステップ826へ戻る。
また、上記a〜cのいずれにも該当しないとき、線分番号sが線分の総数sum_sに達していないとき、sを1インクリメントしてステップ819へ戻る
0124
テップ835において、保存されたデータ番号nがあると判断された場合(n>0)、最近傍の線分データを用いて勾配のグリッドデータを生成するとの入力による指示があれば、ステップ837で保存したn個の線分を、距離lが小さい順に並べ替え、次いで、距離lが最も小さい線分の勾配の値を、グリッド点gi,jでの勾配の値として、書き出す(ステップ838)。
一方、ステップ836において、最近傍の線分データを用いて勾配のグリッドデータを作るとの指示がないときは、n個の線分の勾配の平均値を、グリッド点gi,jでの勾配の値として、書き出す(ステップ840)。
【0125】
一方、当該グリッド点の計算範囲r内に優先順位1のデータが存在しないときは、ステップ835においてYesと判断され、使用者がpattern1かpattern2を選択していた場合は、ステップ841においてYesと判断されるから、ステップ847に進んで優先順位2のデータを用いて、グリッド点gi,jでの値を計算する。
ステップ848以降ステップ870までの処理内容は、既に説明したステップ819からステップ840までの処理と同一であるので説明を省略する。
なお、ステップ841は、優先順位2のデータを処理するための固有のものである。
そして、上記処理を実行して優先順位2のデータについて処理した結果、当該グリッド点の計算範囲内に優先順位2のデータが存在すれば、ステップ865〜869を実行した後、ステップ843に戻って、継続して処理を実行する。
また、上記ステップ835にてn=0であり、かつ、選択したパターンがpattern=1でもpattern=2でもないときは、グリッド点gi,jでの値はないことから、−9999を書き出す(ステップ842)。
【0126】
その後、ステップ843において、グリッド点の列iが未だ総数num_xに達していないとき、次のグリッド点の列に進み(ステップ845)、ステップ818へ戻って、この循環を繰り返し実行する。
その結果、ステップ843において、グリッド点の列iが総数num_xに達したと判断されたとき、グリッド点の次の行に進み(ステップ846)、ステップ818へ戻り、グリッド点の列を1ずつ繰り上げ実行して、最終的に最後のグリッド点の処理が終了したとき、ステップ844においてYesと判断されて、グリッド化についての処理を終了する。
【0127】
【等高線属性データのグリッド化プログラム2】
このプログラムは、以前のグリッド点の処理において使用したデータについては、以後の処理においては使用しないことを特徴としており、その余の点においては、グリッド化プログラム1と同じである。
したがって、前記特徴点についてのみ、図37〜38を参照して説明することとする。
ステップ874において、全ての線分データに、used=−1という属性を与える。
そして、ステップ894において線分番号sと距離lを保存するときに、併せてusedの値を保存する。
このusedの値は、n個の線分が全てused=1である、すなわち当該全ての線分データは既に以前のデータ点においてデータとして使用済みのものである、と判断されたときは、使用可能なデータが皆無となるから、プログラム1と同様の処理を行う(ステップ903,907)。
反対の判断のときは、used=−1である線分のみを用いて、プログラム1と同様の処理を行うが、この時、計算に使用した線分に、used=1を付与することとしている(ステップ905,909)。
【0128】
一方、優先順位2のデータについては、もともとこのデータが使われることが少ないと想定されること、及び優先順位1のデータが皆無であるならば、優先順位2のデータもその数が少ないことが想定されることから、used=−1という属性は与えないこととしている。
【0129】
以上、勾配や斜面方位の計算プログラムについては、説明してこなかったが、ここで改めて説明することとする。
39を参照して、最初にn本のラインデータをライン番号が小さい順に読み込む。ライン番号i(1,2,…,n)のラインデータをWとする。s=1とおく
のj番目のデータ点を i,jとする。Wのデータ点の総数をmとする。そして、j=1とおく。
ステップ955において、wi,jとwi,j+1を端点とする線分wi,ji,j+1について、勾配θと斜面方位δを計算する際に、wi,jの三次元座標を(xi,j,yi,j,zi,j)、 i,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)が、低い方の三次元座標を(x,y,z)、高い方の三次元座標を(x,y,z)とする。
1)x−x≧0かつy−y≧0 → δ=a[°]
2)x−x<0かつy−y≧0 → δ=180−a[°]
3)x−x<0かつy−y<0 → δ=180+a[°]
4)x−x≧0かつy−y<0→ δ=360−a[°]
【0130】
【式A】
【式B】
【0131】
ステップ958において、wi,jとwi,j+1の位置座標と勾配θと斜面方位δなどを、目的に応じた形で書き出す。このとき、線分番号はsである。
次のステップ960にて、データ番号jが総数mに達していなければ、を1インクリメントして、次のデータについて計算し、当該ラインデータの総数を処理したら(ステップ962)、次のラインデータについて処理する(ステップ963)。
全てのデータについて処理が済んだら計算を終了する。
【0132】
本発明においては、属性まで計算した線分データを読み込み、計算範囲内に存在するデータのみを使用してグリッドデータに変換することから、当該グリッド内での値が求められるのが特徴である。
また、使用者が最近傍の線分データを用いて勾配のグリッドデータを生成するか、n個の線分の勾配の平均値を用いて勾配のグリッドデータを生成するかを選択可能としたので、具体的なアウトプットの性質に応じて使い分けすることができる。
さらに、同種の基礎データが複数存在する場合に、各種データを単独でまたは組合せて使用し、目的に応じて柔軟に対応することができる
0133】
【図面の簡単な説明】
【図1】斜面の形状(Dikau(1990)を変更)の分類図である。L,直線;V,凸;C,凹。太線はこれらの形状を三つのグループに分ける。(1)ともに直線;(2)一方が直線で、他方が曲線;(3)ともに曲線
【図2】等高線データ構造と形式を示す。
【図3】点 の決定と点 を見つけるときのエラーの例を示す。(A) は選択点の中で最もmに近く、等高線データTは等高線データMの隣に位置し、仮線分m はどの等高線とも交差しない。 は選択点ではない。B1)仮線分m は等高線データMと交差する。このエラーは等高線データMが屈曲している部分で、しばしば発生する。
【図4】点wの候補を捜す手順を示す。
【図5】等高線データMとMの隣のH(あるいはK)の関係を表す。
【図6】斜面の水平断面形を分類する点を示す。
【図7】連続するベクターの外積によって得られる斜面の水平断面形を示す。
【図8】落水線データ・最急登線データのデータ形式を示す。
【図9】落水線データ・最急登線データを示す。
【図10】谷型斜面の角度と尾根型斜面の角度:ωを示す。
【図11】谷頭・尾根下端の検索を示す。
【図12】水系番号の付与を示す。
【図13】谷次数の計算の順番を示す。
【図14】落水線データに沿った組み合わせを示す。
【図15】垂直断面形の一単位を示す。
【図16】任意のデータ点における斜面の垂直断面形を、唯一つに決める手順を示す。
【図17】重複線分の削除を示す。
【図18】データ点wi,j+1における落水線(最急登線)データの合流を示す。
【図19】水平断面形のプログラム(その1)フローチャート
【図20】水平断面形のプログラム(その2)フローチャート
【図21】各データ点の斜面の水平断面形の判定のフローチャート
【図22】最急登線生成(その1)フローチャート
【図23】最急登線生成(その2)フローチャート
【図24】落水線線生成(その1)フローチャート
【図25】落水線線生成(その2)フローチャート
【図26】谷頭決定のプログラムフローチャート
【図27】尾根下端点の決定プログラムフローチャート
【図28】同高等高線結合線分作成(その1)のフローチャート
【図29】同高等高線結合線分作成(その2)のフローチャート
【図30】同高等高線結合線分作成(その3)のフローチャート
【図31】谷次数と垂直断面形の組み合わせプログラム(その1)フローチャート
【図32】谷次数と垂直断面形の組み合わせプログラム(その2)フローチャート
【図33】谷次数と垂直断面形の組み合わせプログラム(その3)フローチャート
【図34】谷次数と垂直断面形の組み合わせプログラム(その4)フローチャート
【図35】属性グリッドデータ作成1(その1)フローチャート
【図36】属性グリッドデータ作成1(その2)フローチャート
【図37】属性グリッドデータ作成2(その1)フローチャート
【図38】属性グリッドデータ作成2(その2)フローチャート
【図39】勾配と斜面方位の計算フローチャート
【図40】尾根線生成プログラムフローチャート
【図41】最急登線生成(参考)(その1)フローチャート
【図42】最急登線生成(参考)(その2)フローチャート
【図43】水系分類プログラムフローチャート
【図44】谷線生成プログラムフローチャート
【図45】谷次数の計算全体フローチャート
【図46】谷次数の計算フローチャート
【図47】Option_v1フローチャート
【図48】Option_フローチャート
【図49】一単位ラインの属性解析プログラムフローチャート
【図50】Option1フローチャート
[0001]
[Technical field to which the invention belongs]
The present invention extracts various information for terrain classification on a computer by making maximum use of information (elevation and shape of terrain) contained in the contour line using the digitized contour lines. Or it is a program for calculating.
According to the present invention, it is possible to automatically perform operations (for example, extraction of a valley head and creation of a valley diagram) manually performed by an engineer using a contour map.
Information such as the valley head, valley line, and valley degree obtained by the present invention is useful for predicting the occurrence location and damage range of landslide disasters, and is particularly effective for disasters caused by heavy rain. The ridge line obtained by the present invention is important information about avalanche disaster. Furthermore, the slope type obtained by the present invention(Figure 1)The slope, slope direction, and valley order are basic data for understanding the features of topography.
Specifically, terrain classification information can be used to create a hazard map that has been developed by local governments in recent years to raise residents 'awareness of disaster prevention and support residents' evacuation activities during natural disasters. In recent years, environmental issues have been emphasized, and attention has often been paid to the natural environment of the region, and construction of visitor centers for introducing the natural environment has been promoted in various places. Topography is a component of the natural environment and is deeply related to ecosystems (including vegetation). The output map of terrain information obtained by the present invention is a material suitable for display in a facility such as a visitor center. Furthermore, in the field of forestry (forestry), a highly accurate soil map is required, and a highly accurate terrain classification method is required. Also in this field, recently, a method using a computer is being sought. The present invention can meet this demand by using highly accurate numerical contour data.
[0002]
[Prior art]
Topographic classification maps have traditionally been created manually, including photo interpretation, based on topographic maps (contour maps). For this reason, it takes a lot of labor and time to accurately interpret and analyze photographs and the like, and there is a problem that a huge cost is required. In addition, there were individual differences and oversights due to manual work by humans.
As a solution to this problem, a method has been developed in which terrain features, numerical terrain measurement, basin analysis, etc. are performed on a computer using elevation grid data covering the entire country of Japan, such as a numerical map 50 m mesh (elevation). . It is possible to automatically perform objective and wide-area terrain analysis in a short period of time automatically by using the same method using altitude grid data arranged uniformly. The elevation grid data is DEM (Digital Elevation Model) (numerical elevation model) most commonly used in Japan.
As a latest technique for obtaining a DEM, a typical technique is advancing the development of a method for obtaining position information (random point data) on the ground surface using a laser scanner or an artificial satellite. By using a laser scanner, it is possible to obtain high-density point data with an interval of 1 to 2 [m], but there is a problem in terms of cost when acquiring data over a wide area.
In addition, since the method of obtaining ground surface position information in the form of grid data from the beginning has not been put to practical use, various algorithms are used to create elevation grid data from numerical contour data and random point data. (Spline, kriging, idw, trend, TOPOGRID, etc.) have been developed. In order to create altitude grid data that reproduces the original terrain as accurately as possible, it is necessary to fully study the algorithm used and the value of the calculation condition set for each algorithm.
Since elevation grid data has a regular arrangement, once the DEM is converted to elevation grid data, 1) it is easy to calculate the difference between collapse and sedimentation from the difference in elevation grid data before and after the collapse. Yes, 2) There are many methods for calculating gradients and slope orientations from elevation grid dataofMethods have been developed and introduced. 3) Statistical analysis methods of topography using various grid data are also introduced in academic journals and books. That is, the altitude grid data is suitable for computer processing and can significantly improve the processing speed.
[0003]
[Problems to be solved by the invention]
However, the altitude grid data obtained has different altitude values depending on which algorithm or setting value is used from the acquired DEM. Further, the result of the gradient calculated using the obtained elevation grid data varies depending on which calculation method is used. In addition, it is difficult to match terrain features obtained from altitude grid data using various algorithms with features obtained manually using conventional contour maps and the like.
The digitized contour data is rarely used directly for the calculation of topographic features because of its irregular data arrangement, and is often used exclusively as base data for obtaining elevation grid data. .
[0004]
However, the present invention makes it possible to reproduce the means for obtaining the topographic features that have been performed manually by humans using the contour map by using the digitized contour line data.
In the present invention, calculation and determination of information regarding the shape of the slope are performed along contour lines, downfall lines obtained from the contour lines, and the like as in manual operations, and the method is one. Therefore, there are various methods such as calculation of various terrain information using the altitude grid data, and the results obtained by the methods are not different. Also, before the spread of computers, various classification maps (landslides, geology, soil, collapse, active faults, etc.) based on contour lines have been created, which is valuable information. The results (output diagrams) of the present invention output based on contour line data are much easier to compare with these diagrams and photographs than with grid data. In addition, since the present invention includes a method for converting the resulting line data with attributes relating to terrain information into grid data, it can be combined with various types of grid data that are widely used as numerical data. Wide application range.
Until now, elevation grid data has often been created based on contour line data, and in that case, an error occurs due to the grid method. In addition, since the data is divided at regular intervals due to grid formation, it is difficult to perform calculation in consideration of the boundary of slopes such as valley lines and ridge lines, and topographic features such as mountain peaks, depressions, and ridges. However, by using the contour line data as it is, it is possible to classify the slopes faithfully according to the information that the contour line has, and this is done by considering the valleys, ridges, peaks, depressions, ridges, etc. expressed by the contour lines. The classification by work can be reproduced.
[0005]
The present invention has been made in view of the above-described conventional situation, and the object thereof is new terrain data that can be processed by a computer while maintaining the interpretation / analysis accuracy of an expert level that has been realized only by manual work. To provide a processing method and an apparatus thereof, specifically, to generate waterfall line data and steepest climb data from digitized contour line data, and to provide a computer-processable terrain classification program based on these data There is. These programs automate most parts of the topographic classification map creation work process, and dramatically increase the efficiency of the creation work.
[0006]
[Means for Solving the Problems]
  The computer repeats data processing using the arrival point of the most rapid climbing data generated earlier as the starting point of the most rapid climbing data to be generated next, so that any point of all line segment data of the contour line data can be obtained. Starting from an arbitrary point of all the line segment data of the adjacent high level contour line, the individual steepest line segment data is generated from the arbitrary point with the maximum slope from the contour line to the adjacent high level contour line. A terrain data processing program for generating a steepest climb to climb, wherein the terrain data processing program selects an arbitrary data point of line segment data of arbitrary contour line data as a starting point for generating the steepest climb. Of the arbitrary data points of the step and line data of the higher contour line adjacent to the selected contour line data, an arbitrary data point preferentially selected that has a short distance from the starting point is selected. A second step of selecting, calculating a distance between the selected point and the starting point, and selecting a selection point with the shortest distance as a destination candidate, and a contour line segment including any of the data points preferentially selected Contour lines that select a temporary line segment that is a line segment connecting the starting point and the candidate for the arrival point and that do not intersect the temporary line segment and include the arrival point of the selected line segment Is a third step for determining that the selected contour line is a high level contour line adjacent to the selected contour line, and a line drawn to an arbitrary point of each line segment of the contour line data determined to be a high level contour line adjacent to the starting point When the point does not intersect the temporary line segment, a fourth step in which an arbitrary point of each line segment of the contour line data is set as a candidate for an arrival point for creating the steepest climb, and a starting point among all the candidates for the arrival point A fifth step of determining the closest candidate as a destination; And a sixth step of generating a steepest registered line segment data towards the destination point from the starting point, the computer, the Using the determined arrival point as the starting point of the steepest line segment data to be generated next, the second to sixth steps are sequentially repeated, and the end point of the steepest line does not exist at all because there is no candidate for the reaching point Is selected, the next arbitrary data point is selected and then jumped between the first and second steps to repeatedly execute the second to sixth steps, and the selected arbitrary point When it is determined that the data point is the last data point of the arbitrary contour line data, the contour data which has not been used yet as a starting point is selected and jumped between the first and second steps. The second to sixth steps are repeatedly executed, and when it is determined that there is no contour line data that is not used as a starting point, the processing is terminated, thereby maximizing the inclination from the contour line to the adjacent higher contour line. And terrain data processing program for generating the steepest registration lines to climb.
【data structure】
The present invention performs various data processing based on contour line data.
First, the data structure of contour line data will be described.
Figure2 ( A )FIG. 4 is an image diagram of contour line data. In this figure, the numbers in the squares of the contour lines indicate line numbers, and the numbers in the circles also indicate point numbers.
FIG. 2B shows the data structure, and the file is divided into an xy file for storing x-coordinate data and y-coordinate data, and a z-file for storing z-coordinate data. The line number, point number, and END symbol are stored.
[0007]
The present invention is based on contour data.Out of summaryA program for classifying horizontal cross-sections, a program for generating falling water lines, andAccording to claim 1The program that generates the fastest climb is the basic program, and various applied data processing is performed.Out of summaryIt consists of application programs.
[0008]
The horizontal section shape classification program includes a contour position determination subprogram for determining whether the selected contour line data is located on the left or right side of the adjacent contour line data, and the data points of the contour lines are on the ridge-type slope. It consists of a horizontal section shape determination subprogram that determines whether it is located on a valley slope or a straight slope. Details will be described later.
[0009]
Also,According to claim 1The steepest climbGeneratorFrom the bottom of the slope to the top, by repeating the data processing with the arrival point of the most rapid climbing data generated first as the starting point of the next most rapid climbing data, all the contour line data Starting from any point in the line segment data, and generating any steepest line segment data starting from any point in all the line segment data of the adjacent high level contour line, the adjacent high level from the contour line The steepest climb that climbs at the maximum inclination with respect to the contour line is generated. Also about thisDetails in paragraphs 0020-0031Describe.
[0010]
Furthermore, the waterfall line generation program is the reverse of the steepest climbing line generation program, from the upper side of the slope to the lower side, the arrival point of the previously generated waterfall line data, By repeating the data processing as the starting point, each waterfall line starts from an arbitrary point of all the line segment data of the contour line data and starts from an arbitrary point of all the line segment data of the adjacent lower contour lines. Line data is generated to generate a falling water line that descends with a maximum inclination from the contour line to the adjacent lower contour line. Also about thisDetails in paragraphs 0050-0058Describe.
[0011]
Hereinafter, for the classification program of the horizontal cross-sectional shape,With reference to FIGS.This will be described in detail.
In order to classify the horizontal cross-sectional shape of the slope, it is necessary to know whether an arbitrary contour line is bent toward a high contour line or a low contour line.
For this reason, first, it is necessary to determine whether the contour data with a low or high altitude exists on the left or right side of the contour line data M.
Furthermore, since the horizontal cross-sectional shape of the slope is classified according to the shape of the contour line, the inflection point of the curve becomes the point that divides the horizontal cross-sectional shape.
[0012]
[Horizontal sectional shape classification program]
The horizontal sectional shape classification program includes a step of selecting an arbitrary data point of the line data of the selected contour line data as a reference point for generating the shortest distance line, and a high or low contour line adjacent to the selected contour line data. Of the arbitrary data points of the minute data, a step of selecting an arbitrary data point existing within a predetermined radius from the reference point as a selection point, and calculating the distance between the selection point and the reference point, and the shortest distance A temporary line segment is selected using the selected point as a destination point candidate, a line segment that connects the starting point and the destination point candidate is selected, and a line segment that does not intersect the temporary line segment is selected. A step of determining that a contour line including a minute is a high or low contour line adjacent to the selected contour line, and each of contour line data determined to be a high or low contour line adjacent to the reference point. When a line extended to any point of the minute does not intersect the temporary line segment, a step of setting any point of each line segment of the contour line data as a tip point candidate for creating a waterfall line, and Determining a candidate closest to the reference point from among the candidates as a tip point; generating a shortest distance line from the reference point toward the tip point; and the previous data starting from the reference point Cross product of a vector with the same orientation as a vector with a point as an end point and an arbitrary size, and a vector with the same direction as a vector with the reference point as a start point and the end point as an end point and an arbitrary size And a vector having the same orientation as the vector starting from the reference point and ending at the end point, and an arbitrary size, and the same vector as the vector starting from the reference point and ending by the next data point Have direction and size Calculate the sign of the outer product with an arbitrary vector, and when the outer product of both vectors is positive, the tip point is located on the right side of the reference contour data, and when the outer product of both vectors is negative, the tip point Is determined to be located on the left side of the reference contour data, and the angle formed by the vector from the data point immediately before the reference point to the reference point and the vector from the reference point to the data point after the reference point is predetermined. If it is equal to or less than the value, it is determined that the slope is an isotropic slope, and if the angle exceeds a predetermined value, whether the tip point is located on the left or right side of the reference contour data is one of the reference points. The same direction as the vector starting from the previous data point and having the reference point as the end point, and the vector of any size, and the vector starting from the reference point and the next data point as the end point Have a large Depending on whether the sign of the outer product with any vector is positive or negative, the adjacent contour data adjacent to the reference contour data is located on the left or right side of the reference contour data, the left or right side is higher, the slope is linear or valley type Classifying the horizontal cross-sectional shape of the slope according to whether it is a ridge type or the ridge type, and repeatedly executing each of the steps until the reference point reaches one point before the end point of the selected contour line data. When the contour data reaches one point before the end point, the next contour line data is selected and the above steps are repeated to classify the horizontal cross-sectional shape of the slope for all data points except the start point and end point of the contour line data. The classification data is stored, output, or transmitted.
[0013]
This will be specifically described below.
(Contour position determination subprogram)
First, for Check 1, which checks the positional relationship with the contour data one rank lower,Based on FIGS.explain.
In step 101, the contour line data is read, and the jth data point of the contour line data M (line number i) is set to m.j, M before and afterj-1, Mj + 1far. At this time, the counter value, count = 0.
NextInStep 103The reference point m of the reference contour data Mj, Search for contour line data K located next to M and having an altitude lower than M.
First, it is examined whether the contour line data M is located on the left or right side of the contour line data K one rank lower, and then, it is examined whether the contour line data M is located on the left or right side of the contour line data H one rank higher. This will be specifically described below.
[0014]
In step 104, the reference point mjDraw a line with the shortest distance from the contour line data K to this lineKLet k be the intersection with. If the point k does not exist, the position of k cannot be determined, and the process proceeds to step 117 (step 105).
Reference point mjTo mj + 1, Mj-1, K are vectors (α, γ, β, respectively) (FIG. 5), and only the x and y coordinate values of the contour data are used (Z = 0) to calculate the outer products γ × β and β × α. (Step 106). When γ × β> 0 and β × α> 0, the point k is positioned on the right side of the contour line data M (step 108As shown in FIG. 5, the right side of the contour line data M is low. If γ × β <0 and β × α <0, the point k is located on the left side of the contour line data M, and the left side of the contour line data M is low (step 11).2). (Γ × β> 0 and β × α <0), or (γ × β <0 and β × α> 0), or γ × β = 0 or β × α = 0. Since the point k is not suitable for judgment, step 117Jump to.
[0015]
Next, check 2 for checking the positional relationship with the contour data one rank higher will be described.
The same processing as the check of the positional relationship with the contour data that is one rank lower, except that contour data that is located next to M and has an elevation higher than M is used (the contour data is H and the data point is h). I do. That is, step 117In ˜129, it is examined whether the contour line data H is located on the left or right side of M.
Reference point mjThe vectors from to h are set as β ′, and only the x and y coordinate values of the contour data (Z = 0) are used to calculate the outer products γ × β ′ and β ′ × α (FIG. 5).
When γ × β ′ <0 and β ′ × α <0, the point h is located on the left side of the contour line data M, and the left side of the contour line data M is higher as shown in FIG.
If γ × β ′> 0 and β ′ × α> 0, the point h is located on the right side of the contour line data M, and the right side of the contour line data M is higher.
(Γ × β ′> 0 and β ′ × α <0), or (γ × β ′ <0 and β ′ × α> 0), or γ × β ′ = 0 or β ′ When xα = 0, the point h is not suitable for judgment, so the next data point mj + 1Jump to step 130 to use.
In order to confirm the topological relationship between the contour line data M and the adjacent contour line data, the reference point (mj= Mj + 1, Mj + 2,...), Changing the above check 1 and check 2 processing three times. At this time, the number of checks is recorded as the value of the counter.
[0016]
Thereafter, when the values of the contour line position data J [1], J [2], and J [3] obtained as a result of the three checks all match, the position information is stored in the data area of the contour line data. Export as an attribute for. If they do not match, if a certain number of data points can be secured before reaching the end point of the contour data, the above checks 1 and 2 are repeated from the beginning.
[0017]
In this example, if a certain number of data points cannot be secured before reaching the end point of the contour data, the matching data are contour line position data J [1] and J [2] of the first and second counters. Retake the data in [3]. In addition, when the next data point is the end point of the contour line data, the result of the above three checks is obtained.FruitAmong the obtained contour line position data J [1], J [2], and J [3], the matching values are written as attribute information in the contour line data file.
The content of the position information is 1 when the right side of the contour line is low or high on the left side, and 2 when the right side of the contour line is high or the left side is low.
In this specific example, the check is started from the second data point of each contour line data, and when the same positional relationship is recognized three times while changing the reference point, the positional relationship is accepted as positive, The check start data point and the number of executions are not particularly limited to this, and may be performed as appropriate.
[0018]
(Horizontal sectional shape judgment subprogram)
Of FIG.In step 161, the contour line data and the value of the position information J of each contour line data, that is, 1 or 2, created by the contour line position determination subprogram are read.
In the next step 162, γ defining a straight slope is input. In this example, γ is 5 °.
In the next step 164, the data point m of the contour line data MjAt data point mjTo data point mj + 1Alpha vector tojAt all data points of the contour line data M, αj-1And αjThe angle θjAnd the outer product αj-1× αjIs calculated (see FIG. 7). However, calculation is not performed at the start point and end point of M.
If the point mj + 1The sign of the outer product at is the point mjIf it differs from the sign of the outer product atjAnd mj + 1And the inflection point is added to the contour line data M as a new data point.
[0019]
Next, the horizontal cross-sectional shape of the slope is determined at all data points of the original contour line data M.
When the contour line data H and K exist on both sides of the contour line data M, the elevations of the contour line data H, M, and K are respectively set to EH, EM, EK(EH≧ EM≧ EK. However, EH= EM= EKIs excluded. ). At this time, αj-1× αj<0 if line mj-1mjmj + 1Protrudes to the left of the contour line data M (Fig.7A). Αj-1× αjIf> 0, line mj-1mjmj + 1Protrudes to the right of the contour line data M (Fig.7B).
If the outer product αj-1× αj= 0 if mj-1mjmj + 1Is a straight line, vector αj-1And αjAngle θjIs equal to 0 ° (0 ° ≦θ j<180 °).
Point mjThe horizontal cross-sectional shape of the slope at is classified as follows.
Case 1. αj-1× αj= 0 (θj= 0 °): straight slope (step 166)
Case 2. αj-1× αj<0 and the contour line data H (K) is located on the left (right) side of the contour line data M: Catchment (valley type) slope (Figure7A, step 169)
Case 3. αj-1× αj<0 and the contour line data H (K) is located on the right (left) side of the contour line data M: Divergent (ridge type) slope (Figure7A, step 170)
Case 4. αj-1× αj> 0 and the contour line data H (K) is located on the left (right) side of the contour line data M: Divergent (ridge type) slope (Figure7B, Step 173)
Case 5. αj-1× αj> 0 and the contour line data H (K) is located on the right (left) side of the contour line data M: Catchment slope (Figure7B, Step 174)
In calculation, θjSince it is rare that = 0, it is necessary to give a width to γ that defines a straight slope. For this reason, in this example, γ is calculated as ± 5 °.
  This is the end of the explanation of the horizontal sectional shape classification program, and then the steepest climbing program.
[0020]
[The fastest climbGenerationprogram】
This program is a program for generating the steepest climb from the data point of arbitrary contour line data to the nearest data point among the contour line data one rank higher.
This inventionOn the computer,By repeating the data processing with the arrival point of the most rapid climbing data generated earlier as the starting point of the most rapid climbing data to be generated next, any point of the line segment data of the contour line data is set as the starting point, Generates the data of the most steeply climbing line segments using any point of all line segment data of adjacent high contour lines as the arrival pointLetAnd the fastest climb that climbs at the maximum slope from the contour line to the adjacent higher contour line.MakeA terrain data processing program,
  The terrain data program is
  anySelect an arbitrary data point of the line data of the contour line data as the starting point of the steepest climb generationFirstSteps,
  Of the arbitrary data points of the segment data of the higher contour line adjacent to the selected contour line data, an arbitrary data point that is selected with a short distance from the starting point is selected as a selection point.SecondSteps,
  The distance between the selected point and the starting point is calculated, and the selected point with the shortest distance is set as a destination point candidate.Contour line segment including any data point selected preferentiallySelect a temporary line segment, select a line segment that connects the starting point and the candidate for the arrival point, and does not intersect the temporary line segment, and the contour line including the arrival point of the selected line segment is the Judge as a high-level contour adjacent to the selected contourThirdSteps,
When a line drawn to an arbitrary point of each line segment of the contour line data determined to be a high-level contour line adjacent to the starting point does not intersect the temporary line segment, the arbitrary point of each line segment of the contour line data is determined as the maximum. Candidates for reaching the rapid climb4thSteps,
  The candidate closest to the starting point is determined as the reaching point among all the reaching point candidates5thSteps,
  Generate the steepest climb line data from the starting point to the reaching point6thIncluding steps,
  On the computer,
  Next, the determined arrival point is generatedThe fastest lineAs the starting point of line segment data2nd to 6thRepeat steps sequentiallyLet,
  When it is determined that there is no candidate for the above arrival point and the end point of the steepest climb is reached,After selecting any data pointSaidJump between the first and second steps and the second through sixthRepeat stepsLet,
  Any selected data point isAny of the aboveWhen it is determined that it is the last data of the contour data,Select contour data that has not yet been used as a starting pointSaidJump between the first and second steps and the second through sixthRepeat stepsAnd finish processing when it is determined that there is no contour data that is not used for the start point.By doing this, the fastest climb that climbs at the maximum slope from the contour line to the adjacent higher contour line is created.For makingThis is a terrain data processing program.
[0021]
【Example】
In this embodiment, rise_i [line number of contour data] [point number of contour data] =-1 (when there is an existing fastest climb, the fastest climb number for all the data points of the contour data) Rise_j [Contour line data line number] [Contour line data point number] = -1 (-10 if the most rapid line cannot be drawn from that point, or if there is an existing rapid line) The point is characterized in that it is given the attribute of (adding the point number of the established steepest line at that point) (step 203).
As a result, it is possible to determine whether or not the most rapid climbing data has already been generated or whether or not it has been impossible to generate the data.
[0022]
Figure22, 23The present embodiment will be described with reference to the flowchart of FIG.
In step 201, the CPU reads all the contour line data, and in the next step 202, the CPU first reads the contour line data whose line number is n.n, MnNn th data point of mnn, S is the most rapid line number of the most rapid line data to be created, and W is the most rapid line data that is the most rapid line number s.s, WsSth point of wssAnd
In step 203, the above-mentioned attribute is given to all the data points of the contour line data..
NextThen, 1 is sequentially set to n, s, and nn, and the starting point m = mnnThen, data is set as ss = 1 (steps 205 to 208).
[0023]
As a characteristic part of this embodiment, in step 209, whether or not the attribute rise_i [n] [nn] of the data point of the fastest climb data is positive, and in step 210, the fastest climb data It is determined whether or not it was impossible to generate.
By these steps 209 and 210, it is determined whether or not the fastest climb data has already been generated.
At this time, if the fastest climb data starting from the data point m has already been generated, the process proceeds to steps 211 and 213 without newly generating the fastest climb data, and the points of the fastest climb data are generated. Whether the number is 1 and m is MnIf it is not the end point, the next data point is selected (nn = nn + 1) (step 214) and the process returns to step 207. m is MnIf the end point ofnIs the contour data with the largest line number, MnIs not the contour line data with the largest line number, the next contour line data is selected (n = n + 1) (step 216) and the process returns to step 206.nIs the contour line data with the largest line number,Because it is determined that there is no contour data that is not used to set the starting point,The process of generating the most rapid climbing program is completed.
[0024]
In step 210, it is determined whether or not the point number of the fastest climb data is -10. Although this attribute-10 will be described later, it has already been impossible to extend the fastest climb data from m, in other words, the data point is determined to be the end point of the fastest climb. Therefore, the process proceeds to the next step 211 without generating the most rapid climbing line segment data starting from m.
When the point number of the fastest climb data is not −10, m is the generation point of the fastest climb data W (fastest climb number s). At this time, m is the ss-th point of W (initial value ss = 0) (actually,Step 208Where m is the first point of W).
[0025]
Next, in step 217, the contour line data MnIn step 266, it is determined whether there is contour line data whose elevation is one rank higher. If not, it is determined that it is the end point of the steepest climb data.,-With an attribute of 10, SuStep 211Return to.
Next, in steps 217 to 218, the contour line data MnThere is contour data that is one rank higher in elevation, and MnWhen the data points of higher contour line data are within the radius R of the starting point m, all the data points existing within the predetermined radius R from the starting point m are selected from all the data points of the contour line data whose elevation is one rank higher. Then, flag 1 is set for all selected data points (step 219).
In step 217, the contour line data MnWhen there is no contour line data whose elevation is one rank higher, and in step 218, MnWhen the data point of the higher contour line data is not within the radius R of the starting point m, the starting point is the end point of the steepest climbing data, and the line segment of the steepest climbing line cannot be drawn upward from m. And give the data point an attribute of -10, SuStep 211Return to.
In the present embodiment, the predetermined radius R is settable by an analyst using an input device.
The predetermined radius R is selected for the analysis target area, and is selected in consideration of the contour density, the accuracy of the obtained data, and the like. In this embodiment where the mountain area is the target area, R = 150 m (6 mm on the 1: 25,000 topographic map). The choice of R is important because it affects the computation time.
[0026]
The CPU calculates the distance between the selected data point and the starting point m (step 220), and selects the selected point with the shortest distance as the data point t.1And the data point t1Contour data for contours includingT(Step 221) and a data line segment of a contour line including all data points existing within the radius R from the starting point m (a line segment connecting two consecutive data points on the same contour line data) is selected (Step S221). 222).
Then, using the selected contour line data (hereinafter referred to as “provisional line segment”), the elevation is 1 rank.HighContour line data M with the selected contour line data T selectednTo see if it exists next to.
t1Is MnIf it is a data point of contour data adjacent to, line segment mt1Does not cross any temporary line segment (FIG. 3, A).
But t1Is MnIf it is not the data point of the contour data next to, the line segment mt1Intersects with any of the temporary lines aboveThe
Therefore, in step 223, the line segment mt1T is determined to intersect the temporary segment, t1Is removed from the selected points (step 224)Clear the flag toAs long as there are other selection points (step 225), step 221Back toWake upTo point mmostcloseCalculate pointsSelect and proceed to steps 222 and 223 to repeat this process. If there is no other selection point in step 225, step 2 is performed according to the procedure described above.11Return to.
At this time, if the contour line data whose elevation is one rank higher cannot be determined using all the selected points, the data point m is set as the end point of the steepest climb data.
[0027]
On the other hand, line segment mt1If does not cross the temporary lineBy calculationWhen determined, the contour line data T becomes the contour line data M.nAs what exists next to
T = Q, t1= Qj(QjIs the jth data point of Q).
At this time, k = j, kk = j, and data point qjTo check whether the data points before and after intersect with the temporary line segment,
min = j-5 (however, if j-5 <0, min = 1)
max = j + 5 (where j + 5> [maximum value of Q point number], max = [maximum value of Q point number]) (step 226).
Next, starting point m andAltitudeData point q of adjacent contour data Q one rank upjA line segment (qj + 5. . . . qj-5) Examines whether or not it intersects with the temporary line segment (steps 227 to 229 and 231 to 233), and the point w where the line segment between the starting point m and each data point does not intersect with the temporary line segment is the tip point w for creating the steepest climb. (Step 230.234).
Furthermore, from the starting point m, qk + 1And qkA straight line passing through and qkk-1And qkkTake the perpendicular to the straight line passing throughp k,p kk(Step 238.244),p k , P kk Is the line segment qk + 1qk, Qkk + 1qkkMpk, MpkkThe line segment that does not intersect the temporary line segment is determined as a candidate for the tip point w for creating the steepest climb (step 241.247).
And all the tipsPointSelect the point closest to the starting point m from the candidates as the tip point w for creating the steepest climb(See Figure 4), M and w are connected to generate the steepest climb, and the generated steepest climb data is stored in the steepest climb data file (step 250.251).
[0028]
Further, in order to generate the steepest climb to the adjacent contour data on one rank, the contour line data Q is replaced with M, the data point w is replaced with m (step 252), and ss is incremented by one. Proceeding to step 254, when m is not a data point of the contour line data, the process returns to step 217 to enter the process for generating the next steepest climb data.
On the other hand, m is the contour line data MiData point miiWhenrise_j [i] [ii]Is -10 orrise_i [i] [ii] isIf it is -1, m is the end.In terms ofIf it is -1, the process returns to step 217 to enter the process of generating the most rapid climbing data.
In step 256, if rise_i [i] [ii] is not -1, miiThere is already the fastest climb data passing through. And miiIs the rise_j of the rise_i [i] [ii] th fastest climb data[I] [ii]This is the second point (step 258).
[0029]
At this time, this fastest climb data WsThe rise_j of the steepest climb data already generated from the data point m is[I] [ii]Connect the data from the + 1st point to the end point (Step 2)58).
Next, at step 259, the ss-1th point from the start point of W (the ssth point is m) is examined.
Contour data M of line number rrRr th data point mrrFor points that coincide with the contour data points, rise_i [r][Rr] = W s Line number (based onmiiIs the rise_j of the rise_i [i] [ii] -th fastest climb data.[I] [ii]The second point (step 258)), Rise_j [r] [rr] = WsGives the attribute of point number.
If there is no w candidate in step 248, the process returns to step 211 after performing the process in step 266.
In step 256, when the line number of the steepest climbing data is -1, the steepest climbing data does not exist, so the process returns to step 217.
Furthermore, in step 255, the point number of the most rapid climbing data is -10.When there ism as the end point of the fastest climb data W, SuStep 259~ 264ProcessingAnd return to step 213.
0030]
ThisWhen the generation of the steepest climb data from the last data point of the contour line data is completed, the steepest climb data is generated from the first data point of the contour data one rank higher, and this processing is executed in sequence. When the contour data having the largest number is reached, the generation of the steepest climb data is terminated.
[0031]
In this embodiment, in step 203, rise_i [line number of contour data] [point number of contour data] = − 1 and rise_j [line number of contour data] [contour data] are added to all data points of the contour data. Point number] =-1 attribute, but this stepIs the provinceIt can be omitted.
The program flowchart in this case is shown in the figure.41, 42become that way.
[Waterfall line generation program]
Next, the falling water line generation program will be described..
in frontThe program for generating the steepest climb from the data point of any contour line data to the data point that climbs at the maximum slope of the contour line data one rank higher. On the other hand, a waterfall line is generated from a data point of arbitrary contour line data to a data point that falls at the maximum slope of the contour line data one rank below.
This program is actually used in the valley line generation program described later, and will be described in detail at that time.
[0032]
The basic program of the present invention has been described above.
Next, various application programsAs referenceexplain.
MeetFor the program(See paragraphs 0033-0047), Valley line generation program(See paragraphs 0048-0058), Ridge line generator(See paragraphs 0059-0067), Valley degree calculation program(See paragraphs 0081-0090), Combination program of valley degree and vertical cross section of slope(See paragraphs 0091-0111)And grid data for line data with attributes(See paragraphs 0112-0132)It is. Hereinafter, these application programs will be described in order.
[0033]
[Determination program]
The valley line and ridge line are important information for grasping the shape of the entire mountain area. In particular, the valley head is the origin of erosion in the mountains and is the top of the valley, and slope retreat occurs due to weathering and gravity (valley head erosion). The speed and direction of movement along with the time course of this valley is important in predicting the erosion and topographic change of the mountainous area and its speed.
In the present invention, a point corresponding to a valley head is selected from data points of numerical contour data by a procedure as close as possible to a traditional manual operation.
The valley head here means the top of the valley where the valley-shaped slope first appears in the mountainous area.
[0034]
【Example】
This will be described with reference to FIG.
This program first inputs and defines the upper limit angle that defines the valley slope.
AndAlready in paragraphs 0012-0019PredicateAllThe horizontal sectional shape classification program is executed, and horizontal sectional shape classification data is output.
Next, this horizontal section classification data is read and the attribute of one unit line is analyzed.
[0035]
This example,in frontBy using one unit line classified as a valley slope by the horizontal sectional shape classification program, the valley head as the starting point of the valley line is defined.
In this embodiment, θj<At 5 °When there is a data point mjThe horizontal cross section in is treated as a straight slope.
As an item for defining the valley head, in this embodiment, the angle s of the valley slope is shown.1Ps2Is used to define the valley head, but the width of the valley slope (D1) And the depth of the valley slope (L / D1Of course, it may be defined using(See Figure 10).
[0036]
[1 unit line attribute analysis program]
(See FIG. 49.)
First, read the output result of the horizontal section shape classification program, which is the basic program described above, classify each contour line data according to the horizontal section shape, and create a line file to write out for each unit line with the classified line as one unit. . The line number of the classified line is set to s (step 401).
[0037]
Next, the read contour line data is M (line number i), and the starting point of M is m1, End point mn, The jth point is mjAnd At this time, the line number s = 1.
Then, it is determined whether or not M is a polygon (step 403), and if it is a polygon, it is checked whether or not the data point start point and end point flags are the same (step 404).1And mn-1The midpoint of is the starting point of one unit (step 405).1Is the starting point of one unit (step 406).
If it is determined in step 403 that it is not a polygon, m1Is the starting point of one unit (step 407).
[0038]
Then the next point mjAnd determines whether the read point is one point before the end point (step 409). If the read point is one point before the end point, it is determined whether n = 3, and n = 3 When mnAs the end point of one unit (step 411), and in the next step 412 subroutine Option1(See Figure 50)Proceed to
If n = 3 is not satisfied, it is checked whether or not the flag of the read point is the same as that of the previous point (step 413). If equal, the point immediately after the read point is set as an end point (step 414). If they are not equal, the midpoint of the read point and the previous point is set as the end point of one unit (step 416), and the process proceeds to the subroutine Option1.
In the above step 409, when the point read this time is not one point before the end point, it is checked whether the flag of the point read this time is the same as the flag of the point before one (step 420). The midpoint of this point is set as the end point of one unit (step 421), and the process proceeds to subroutine Option1. If equal, further previous data points are read (steps 424 and 408) and the above processing is repeated.
[0039]
The outline of the processing contents of the subroutine Option1 is shown in FIG.10, 11, 50Referring to the above, since the start point and end point of one unit were determined in the above process, it is determined whether or not there is a predetermined valley depth or ridge protrusion, and then a predetermined valley depth or ridge protrusion is determined. A process of giving a valley-type or ridge-type attribute to one unit line and giving a straight line attribute to the others is executed.
[0040]
First, the linear distance D between the start point and end point of one unit1Is calculated (step 431).
Then straight line D1The vertical line is drawn from each data point excluding the start point and end point on one unit line, the length of each normal line is obtained, and the longest one is L, and the data point (point number b) that is the end point of L is determined. (Step 432). The data point with the point number b is defined as the apex of the valley slope or the ridge slope.
And the starting point of one unit andData point with point number bLength (s1p) and the end point of one unitData point with point number bLength (s2p) and calculate the line segment s1p, line segment s2p, line segment D1Is used to calculate the angle ω of the valley slope or ridge slope (step 433).
The angle is calculated using the following formula:
[0041]
[Formula 1]
The horizontal cross-sectional shape is the same at all data points on one unit line excluding the start point and end point. Therefore, the attributes of straight line: 0, ridge type: 1, trough type: −1 are assigned to each unit line (step 434).
For each unit line, the xy coordinates are written together with the attribute of horizontal section (r) (step 435).
At this time, two data points (one mj-1And mj) MjExport from. Similarly, two data points (one mj-1And mj) Mj-1Write out
The contents of the exported file are as shown in the table below. Let this file be file_xyr1.
[0042]
structure of file_xyr1
【table1]
ThisWhen r is a data point corresponding to the peak (point number b) of the valley slope where ω <a, r = −1 when the data point is other than the vertex on the valley slope. When the data point corresponds to the apex (point number b) of the ridge slope where ω <a, r = 10, and when the data point is other than the apex on the ridge slope, r =1 (foundation Fig. 50),Otherwise, the attribute r = 0 is given (step 435).
Also the line elevation fileIns, ZsAlso write (ZsIs the mark of one unit line of the horizontal section number sHigh).
In the next step 436, s is incremented by 1 to return to the attribute analysis program of one unit.
[0043]
At this time, when the subroutine Option1 is executed and returned in step 417 and step 422, the flag of the previous point is not equal when read this time, that is, mj-1And mjSince it is clear that the midpoint is an inflection point, the starting point of the next unit is mj-1And mj(Steps 418 and 423).
In step 418-1, flag [m1] = Flag [mn-1The subroutine Option1 is executed again using the start point determined in step 404 as the end point (step 419). The above processing is repeated until M becomes the contour line data having the largest line number. When M becomes the contour line data having the largest line number, the process returns to the main routine.
[0044]
[Tanigami decision program]
This will be described with reference to the flowchart of FIG.
To determine the trough point, first extract the candidate(FIG. 11_1).
valleyIn order to find the head data point, a process of drawing a line (hereinafter referred to as “zigzag line”) connecting data points with r = −10 written to file_xyr1 by the attribute analysis program of one unit line described above is executed..
First, file_xyr1 and its elevation file are read and rearranged in order from the highest elevation contour (step 441).
Next, the maximum length R of the zigzag line segment is determined (step 443).
All of the data points are given attributes such as fall_i (contour line number, contour data point number) =-1, and fall_j (contour line number, contour data point number) =-1. Line numbers n (1, 2, 3,..., N_end) are given to the contour line data in the order of reading. At this time, g = 0 is set (step 444).
Further, the contour line data of the line number n is M, and a point number nn (1, 2, 3,..., Nn_end) is given to each data point of M (step 445).
Then, the data point of the M point number nn is set to m (step 446).
In the next step 447, it is checked whether or not the attribute r of m is −10. If it is −10, the data point is a candidate for a valley head, and therefore, the process moves to step 448 and falls_i (n, nn)> 0. Judge whether.
Where fall_i (n, nn)If> 0, the zigzag line number has already been set and there is already a zigzag line passing through m, so m is the starting point.WhenThe zigzag line to be generated is not generated. On the other hand, if fall_i (n, nn)> 0, it is determined whether fall_j (n, nn) is −10. If it is −10, an attempt is made to extend the zigzag line from m. Since it was possible, a zigzag line starting from m is not generated. When fall_j (n, nn) is not −10, g = g + 1 and m is the generation point of the zigzag line W (line number g). At this time, m is the gg-th point (gg = 1) of W (step 450).
Here, an attempt is made to extend the zigzag line W from m. At this time,mThe point number at W is gg.
[0045]
Therefore, when there is contour data whose rank is one rank lower than M, among data points of contour data lower than M, if a data point having an attribute r of −10 exists within a radius R of m ( Step 453), the above point is set as a selection point of the valley head. A contour line segment including a data point existing within the radius R of m is selected as a temporary line segment (step 454).
In step 455, when there is a line segment that does not intersect the temporary line segment among the line segments (selected line segments) that connect m and the selected points, the long selected line segment that does not intersect the temporary line segment. The selection point having the smallest value is determined as the extension point w from m (step 456).
AndwIs replaced with M and w is replaced with m (step 457), and the process proceeds to the next step 458. However, m is the contour data of line number iiMThe data point of the point number jj.
If fall_i (ii, jj) = − 1, the zigzag line point number gg is incremented by 1 (step 459), and the process returns to step 452.
Further, when not fall_i (ii, jj) = − 1, fall_ijIt is checked whether (ii, jj) = − 10 (step 460). If it is −10, m is set as the end point of W (step 463).Zigzag lineA connection is made from the [fall_j (ii, jj) +1] -th point of W 'to the end point (step 462).
Next, the gg-1st point from the start point of W (the ggth point is m) is examined. For points that coincide with the data point (assuming t, point number bb) of the contour line data (assuming T, line number aa), fall_i (aa, bb) = g, fall_j (aa, bb) = After giving the attribute of point number in W (step 464), the process returns to step 467.
[0046]
When it is determined No in Steps 452 and 453, the attribute of fall_i (n, nn) = − 10 is given, and m is treated as an end point of W (Step 471), and the process proceeds to Step 467. If the maximum point number assigned in step 445 has been reached, the point number nn is incremented by 1 and the flow returns to step 446.
If it is determined in step 467 that the point number has reached the maximum value, it is checked whether the line number assigned in step 469 has reached the maximum value. If not, the line number n is incremented by one. Then, the process returns to step 445, and the above processing is repeatedly executed.
[0047]
When the process has progressed and all processes have been executed and it is determined Yes in step 469, the creation of the zigzag line is finished.AndThe starting point of the created zigzag line is determined to be a trough (step 47).2).
As a final process, file_xyr1 is called again, and when the read (x, y) coordinates are equal to the (x, y) coordinates of the starting point of the created zigzag line, the attribute of r is set to −10, and the others When r is changed to r = 0, it is written in the same format as file_xyr1. This is designated as file_xyr2 (step 474).
As is clear from the above, file_xyr2 has only the value of attribute r changed compared to file_xyr1.
It is also possible to create a point file of only the data points at the valley head.
[Generation of valley lines]
The valley line and ridge line are important information for grasping the shape of the entire mountain area. In particular, the valley line is indispensable information for classification of water systems, extraction of water system areas, calculation of valley density, etc., elucidation of terrain erosion, movement path of collapsed materials, topographic change process, crustal movement and It is used in the extraction of lineament by rock structure.
The purpose of the present invention is to generate a valley line by a procedure as close to traditional manual work as possible. From the data points of the numerical contour data, a point corresponding to the valley head is selected, and the valley line is determined from these points. Is generated.
What is the valley line here?,valleyThe steepest slope generated only from the headGo downIt means the falling water line.
Accordingly, no falling water line is generated from data points other than the top of the valley which is the top of the valley. In this respect, it differs from the falling water line generated from all the data points of the contour line data.
[0048]
【Example】
This inventionAs shown in the flowchart of FIG. 44, a part of the horizontal sectional shape classification program and the analysis program for one unit line are used.Read the valley data obtained by executing the program that determines the valley, and thenUse part of the falling water line generation programA program for generating a valley line is executed to generate a valley line.(Fig. 44).
[0049]
At first,Mentioned aboveTo read file_xyr2 and its elevation file, and to generate waterfall data only from the data point where r = −10, ie, the valley head,As shown in FIGS.The process enters the waterfall line generation program subroutine, skips step 301 and starts processing from step 302.
[0050]
<Waterfall line generation program>
At this stage, a valley line is generated.
In step 302, the CPU first converts the contour line data whose line number is n to M.n, MnNn th data point of mnn, The sewage line number of the sewage line data to create, s,s, WsSth point of wssAnd
In step 303, the r attribute is given to all data points of the contour line data.That is, data point m having line number n and point number nn nn , Let fall_i [n] [nn] = − 1 and fall_j [n] [nn] = − 1.
In the next step 304, the line of the falling water line from an arbitrary point a isunderWhen drawing toward the direction, a is the starting point m.
Next, 1 is sequentially set to n, s, and nn, and the starting point m = mnnAnd ss = 1 is set (steps 305 to 308).
[0051]
As a characteristic part of the present embodiment, in step 309, the falling water line data is obtained.DeIt is determined whether or not the attribute fall_i [n] [nn] of the data point is positive, and whether or not it was impossible to generate waterfall data in step 310.
By these steps 309 and 310, it is determined whether or not the waterfall line data has already been generated.
At this time, if the waterfall line data starting from the data point m has already been generated, the process proceeds to steps 311 and 313 without newly generating the waterfall line data, and whether the point number of the waterfall line data is 1 or not. No, and m is MnIf it is not the end point, the next data point is selected (nn = nn + 1) (step 314) and step3Return to 07. m is MnIf the end point ofnIs the contour data with the largest line number, MnIs not the contour line data with the largest line number, the next contour line data is selected (n = n + 1) (step 316) and the process returns to step 306.nIs the contour line data with the largest line number, the generation process of the falling water line data is terminated.
0052]
FallWhen the point number of the water line data is not −10, m is the generation point of the water line data W (water line number s). At this time, m is the ssth of WPoint and(Step 308).
[0053]
Next, in step 317, the contour line data MnIt is determined whether or not there is contour line data that is one rank lower in elevation, and if it is not, it is determined that it is the end point of the waterfall line data. Therefore, in step 366, an attribute of -10 is assigned as the point number of the waterfall line data. do it, SuStep 311Return to.
Next, in steps 317 to 318, the contour line data MnThere is contour data that is one rank lower in elevation, and MnWhen the data point of the lower contour line data is within the radius R of the starting point m, all the data points existing within the predetermined radius R from the starting point m are selected from all the data points of the contour line data whose elevation is one rank lower. Then, flag 1 is set for all selected data points (step 319).
In step 317, the contour line data MnWhen there is no contour line data whose elevation is one rank lower, and in step 318, MnIf the data point of the lower contour line data is not within the radius R of the starting point m, the starting point is the end point of the falling water line data, and the data line segment cannot be drawn downward from m. Infall_j [n] [nn] =Give -10 attributes, SuStep 311Return to.
In the present embodiment, the predetermined radius R is settable by an analyst using an input device.
The predetermined radius R is selected for the analysis target area, and is selected in consideration of the contour density, the accuracy of the obtained data, and the like. In this embodiment where the mountain area is the target area, R = 150 m (6 mm on the 1: 25,000 topographic map). The choice of R is important because it affects the computation time.
[0054]
The CPU calculates the distance between the selected data point and the starting point m (step 320), and selects the selected point with the shortest distance as the data point t.1And the data point t1Contour data for contours includingT(Step 321) and a contour data line segment including all data points existing within the radius R from the starting point m (a line segment connecting two consecutive data points on the same contour line data) is selected (step 321). 322).
Next, using the selected line segments of the contour line data (hereinafter referred to as “provisional line segments”), the contour line data M in which the contour line data T whose elevation is one rank lower is selected.nTo see if it exists next to.
t1Is MnIf it is a data point of contour data adjacent to, line segment mt1Does not cross any temporary line segment (FIG. 3, A).
But t1Is MnIf it is not the data point of the contour data next to, the line segment mt1Intersects with any of the temporary lines aboveThe
YoIn step 323, the line segment mt1T is determined to intersect the temporary segment, t1Are removed from the selected points (step 224), and as long as there are other selected points (step 325), step 32 is performed.1Return to t1The point t next to the starting point m2And proceed to steps 322 and 323 to repeat this process. If there is no other selection point in step 325, step 3 is performed according to the procedure described above.11Return to.
At this time, if the contour line data whose elevation is one rank lower cannot be determined even if all the selected points are used, the data point m is set as the end point of the falling water line data.
[0055]
On the other hand, line segment mt1Is determined not to intersect the temporary line segment, the contour line data T is the contour line data M.nAs what exists next to
T = Q, t1= Qj(QjIs the jth data point of Q).
At this time, k = j, kk = j, and data point qjTo check whether the data points before and after intersect with the temporary line segment,
min = j-5 (however, if j-5 <0, min = 1)
max = j + 5 (where j + 5> [maximum value of Q point number], max = [maximum value of Q point number]) (step 326).
Next, the data point q of the contour line data Q adjacent to the starting point m and one rank belowjA line segment (qj + 5Qj-5) Examines whether or not it intersects with the temporary line segment (steps 327 to 329, 331 to 333), and if the line segment between the starting point m and each data point does not intersect with the temporary line segment, it is a candidate for the tip point w for creating the falling water line. (Step 330.334).
Furthermore, from the starting point m, qk + 1And qkA straight line passing through and qkk-1And qkkP perpendicular to the straight line passing throughk, Pkk(Step 338.3344), pk, PkkIs the line segment qk + 1qk, Qkk + 1qkkMpk, MpkkThe line segment that does not intersect with the temporary line segment is set as a candidate for the tip point w for creating the falling water line (step 341.347).
Then, the point closest to the starting point m is selected from all the candidates for the tip point w as the tip point w for creating the falling water line, and a falling water line is generated by connecting m and w. It is stored in the data file (step 350.351).
[0056]
Further, in order to generate a waterfall line from the contour line data adjacent one rank below, the contour line data Q is set to MnThen, the data point w is replaced with m (step 352), ss is incremented by 1 and the process proceeds to step 354. When m is not a data point of contour data, the process returns to step 317 to generate the next waterfall line data. enter.
On the other hand, m is the contour line data MiData point miiWhenfall_j [i] [ii]Is -10 or -1, and if it is -10, m is an end point (step 365), and if it is -1, it returns to step 317 and enters the process of generating falling water line data.
In step 356, if fall_i [i] [ii] is not -1, miiThere is already waterfall data passing through. And miiIs the fall_j of the fall line data of fall_i [i] [ii].[I] [ii]The second point (step358).
[0057]
At this time, the waterfall line data WsFall_j of the waterfall line data already generated from the data point m[I] [ii]Connect from the + 1st point to the end point (Step 3)58).
Next, in step 359, the ssth point from the start point of W (the [ss + 1] th point is m) is examined.
Contour data M of line number rrRr th data point mrrFor points that match, DeData pointsm rr And fall_i [r] [rr]= W s Line number, Fall_j [r] [rr] = WsGives the attribute of point number.
If there is no w candidate at step 348, the process returns to step 311 after performing the process of step 366.
In step 356, when fall_i [i] [ii] of the waterfall line data is -1, there is no waterfall line data., SuReturn to step 317.
Furthermore, in step 355, when the point number of the waterfall line data is −10, it has already been impossible to extend the waterfall data from m. Step 359 is processed.
[0058]
Further, in order to generate a waterfall line from the contour line data adjacent to one rank below, the contour line data Q is replaced with M and the data point w is replaced with m (step 352), and the process returns to step 317, and step 318 is performed. Step 353 is repeated until the end point of the waterfall line is reached.
And when you reach the end of the falling water line, step again311ReturnTo generate waterfall data from the next data point to the end pointKeep doingThe
When the generation of the waterfall line data from the last data point of the contour line data is completed, the waterfall line data is generated from the first data point of the contour data one rank below, and this processing is sequentially executed, and the line number with the largest line number is generated. When the contour data is reached, the generation of the falling water data is terminated.
[0059]
[Ridge line generation program]
The steepest climb is important information for grasping the shape of the entire mountain area. In particular, it has been pointed out that the ridge line is particularly related to avalanches.StopIt has become indispensable.
The object of the present invention is to generate a ridge line by a procedure as close as possible to a traditional manual operation, and from among the data points of numerical contour data, select a point corresponding to the ridge bottom point, and from these points, the ridge line is selected. A line is generated.
What is the ridge line here?,tailIt means the steepest climb that occurs only from the bottom bottom point and climbs with the steepest slope.
Accordingly, no ridge line is generated from data points other than the ridge bottom end point of the ridge which is the most protruding point. In this respect, it differs from the steepest climb generated from all the data points of the contour line data.
[0060]
【Example】
This program(See Figure 40)First, in order to determine the upper limit angle that defines the ridge type slope, the numerical value of the angle is input and defined.
And the horizontal sectional shape classification program mentioned above(See FIGS. 19-21)To output classification data of horizontal cross section.
Next, read the classification data of this horizontal section shape, and the attribute of one unit line(See Figure 49)Is analyzed.
Subprogram for determining the ridge bottom point based on the data obtained by the analysis(See Figure 27)Then, a subprogram for generating a ridge line is executed to generate a ridge line.
[0061]
This example,in frontBy using one unit line classified as a ridge-type slope by the horizontal section shape classification program, the ridge bottom point that is the starting point of the ridge line is defined.
In this embodiment, θj<At 5 °When there is a data point mjThe horizontal cross section in is treated as a straight slope.
As an item for defining the ridge bottom point, in this embodiment, the angle of the ridge-type slope (∠s1ps2) Is used to define the ridge bottom point, but the width of the ridge-type slope (D1) And ridge-type slope depth (L / D1Of course, it may be defined using(Fig. 10_2).
[0062]
<1 unit line attribute analysis program>
This program is already in paragraph 0036To paragraph 0048Since this is the same as the attribute analysis program for one unit line of the valley line generation program described in (1), detailed description is omitted.
[0063]
<Ridge bottom point determination program>
In order to find the data point that becomes the lower end point of the ridge, a line (hereinafter referred to as “zigzag line”) connecting the data points with r = 10 written to file_xyr1 by the attribute analysis program of one unit line described above is drawn.
This will be described with reference to FIG.
Ridge bottomDotFirst, the candidate is extracted to determine(Fig. 11_2).
First, file_xyr1 and its elevation file are read and rearranged in order from the lowest contour line (step 441-2)..
Next, the maximum length R of the zigzag line segment is determined (step 443-2).
All data points are given attributes of rise_i (line number of contour line data, point number of contour line data) = − 1 and rise_j (line number of contour line data, point number of contour line data) = − 1. Line numbers n (1, 2, 3,..., N_end) are given to the contour line data in the order of reading. At this time, g = 0 is set (step 444-2).
Further, the contour line data of the line number n is M, and the point number nn (1, 2, 3,.
Then, the data point of the M point number nn is set to m (step 446-2). In the next step 447-2, it is checked whether or not the attribute r of m is 10, and if it is 10, the data point is a candidate for the bottom edge of the ridge, so the process proceeds to step 448-2 and rise_i (n, nn). )> 0 is judged.
Here, if rise_i (n, nn)> 0, the zigzag line number has already been set, and there is already a zigzag line passing through m.WhenThe zigzag line to be generated is not generated. Conversely, if rise_i (n, nn)> 0 is not satisfied, it is determined whether rise_j (n, nn) is −10. If it is −10, an attempt is made to extend the zigzag line from m. Since it was possible, a zigzag line starting from m is not generated. When rise_j (n, nn) is not −10, g = g + 1WhenThen, m is a generation point of the zigzag line W (line number g). At this time, m is the gg-th point (gg = 1) of W (step 450-2). Here, try to extend zigzag line W from m.
[0064
Therefore, when there is contour data whose elevation is one rank higher than M, among data points of contour data higher than M, if a data point having attribute r is within radius R of m (step 453-2), and select the above point as a selected point of the ridge bottom point. Further, a contour line segment including a data point existing within the radius R of m is selected as a temporary line segment (step 454-2).
In step 455-2, when there is a line segment (selection line segment) connecting m and each selected point that does not intersect with the temporary line segment, among the selected line segments that do not intersect with the temporary line segment. The selection point having the minimum length is determined as the extension point w from m (step 456-2).
The contour data including w is replaced with M and w is replaced with m (step 457-2), and the process proceeds to the next step 458-2. However, m is a data point of point number jj of contour line data M of line number ii.
If rise_i (ii, jj) = − 1, the zigzag line point number gg is incremented by 1 (step 459-2), and step 45 is performed.2Return to -2.
[0065]
When it is determined No in Steps 452-2 and 453-2, rise_jThe attribute of (n, nn) = − 10 is given, m is treated as an end point of W (step 471-2), the process proceeds to step 467-2, and the point number previously assigned in step 445-2 If it has not reached the maximum value, the point number nn is incremented by 1, and the flow returns to Step 446-2.
When it is determined in step 467-2 that the point number has reached the maximum value, it is checked whether or not the line number assigned in step 444-2 has reached the maximum value. Is incremented by 1, and the process returns to step 445-2 to repeat the above processing.
[0066]
If the process proceeds and all processes are executed and it is determined Yes in step 469-2, the creation of the zigzag line ends.AndThe starting point of the created zigzag line is determined as the ridge lower end point (step 473-2).
As a final process, file_xyr1 was called again and read(x, y)The coordinates of the starting point of the created zigzag line(x, y)When it is equal to the coordinate, the attribute of r is changed to 10, otherwise it is changed to r = 0, and written in the same format as file_xyr1. This is set as file_xyr2 (step 474-2). As is clear from the above, file_xyr2 has only the value of attribute r changed compared to file_xyr1.
When the above processing is completed, the process returns to the main routine of the ridge line generation program.
[0067]
<Early Climbing Line Generation Program>
Generate a ridge line.
First, the file_xyr2 and its elevation file are read, and the subroutine of the steepest climb generation program is used to generate ridge line data only from the data point where r = 10, that is, the ridge bottom point.(See Figure 22)Step 201 is skipped, and processing is started from step 202 with step 201 skipped.
For subsequent processing, paragraph 0022To paragraph 0031Since this is the same as that described in FIG.
0068]
When a line connecting contour line data having the same height is to be generated in a part or the like, the following processing is further performed.
The program described below assumes that the number of line segments connecting any two contour lines is one.
Execute the unit line attribute analysis program again. The option to be executed at that time is Option1 (FIG. 50Reference). At this time D2Is not calculated. Further, since the inflection points are not written out, the number of read data points is equal to the number of data points to be written.
When the attribute analysis program for one unit line is finished, the process returns to the main routine and the same contour line generation program is executed.
[0069]
<Same Contour Line Segment Generation Program>
This will be described with reference to FIGS.
First, the user determines that the total contour length max_length and the maximum length limit_length of the line segment to be combined are input and determined.
Contour data whose total length is shorter than max_length and whose start point = end point is set as the start polygon, and a line segment connecting the contour lines having the same height as the start polygon is drawn. This line segment does not exceed the maximum length limit_length determined by the user.
Next, file_xyr is read and line numbers i (1, 2, 3,...) Are given in the reading order. Let sum be the total number of contour lines. Further, the total number of contour line data points of line number i is set to P [i] (step 482).
Also, file_Z is read, and the elevation of each contour line is set to Z [i] (step 483).
In the next step 484, for each contour line, when the line number is i,(1)An attribute poly [i] = 1 is given to the contour line data where the start point = the end point,
Otherwise, give the attribute poly [i] = 0,
(2)The total length is calculated, and the line number line_i [i] and the total length line_l [i] are saved and temporarily stored. Next, s = 1 and i = 1 are set (steps 485 to 486). In the next step 487, if poly [i] = 1, the total length is less than or equal to max_length, and the altitude is higher than 0, the line number (poly_i [s] = i) and the total length (poly_l [ s] = line_l [i]) is temporarily stored, s is incremented by 1, and the process proceeds to step 490 (steps 487 to 489).
On the other hand, if any of the conditions that poly [i] = 1 total length <max_length and elevation is above 0 is not satisfied in step 487, the process proceeds to step 490.
In step 490, it is determined whether or not the line number i is equal to the total number of contour line data sum. If not, the line number i is incremented by 1, and the process returns to step 487 to repeat the process.
On the other hand, when it is determined that the line number i is equal to the total number sum of contour line data, the total number p_num of start polygons is set to s, and the start polygon selection process is ended (step 492).
[0070]
In the next step 493, poly_i [s] and poly_l [s] are rearranged in order of decreasing poly_l [s]. By this processing, poly_l [1] (contour line number poly_i [1]) becomes the start polygon with the shortest overall length, and poly_l [p_sum] (contour line number poly_i [p_sum]) becomes the start polygon with the longest overall length. .
Next, line_i [i] and line_l [i] are rearranged in order of increasing line_l [i].
By this processing, line_l [1] (the contour line number line_l [1]) becomes the contour line with the longest overall length, and line_l [sum] (the contour line number line_l [sum]) becomes the contour line with the shortest overall length (step 494). .
[0071]
In the next step 495, a line segment connecting the starting polygon and the contour line is written.
The number of the line segment to be written is number = 0. Also, ii = 1 is set (step 496).
Next, the line number i of the contour line, which is the starting polygon for examining whether or not the line segment can be connected, is set to poly_i [ii] (step 497).
Further, after setting hh = 1, the line number h of the contour line for examining whether or not the line segment with the starting polygon (line number i) can be connected is set to line_i [hh] (steps 498 to 499).
Then, the altitude is 0, and it is examined whether or not the line segments of the start polygon and the start polygon can be connected. The contour lines are not equal in elevation, and the line between the start polygon contour line number and the start polygon (line number i) If any one of the three conditions of the contour line number h for examining whether or not the minute line is equal is satisfied, if the contour number hh is not equal to the total number sum of contour lines, hh is incremented by 1 (step 504), If equal, if the total number of start polygons has not been reached, the next start polygon is selected (step 506). When the total number of start polygons has been reached, the creation of the line segment is terminated (step 507) and the line segment is written out (step 507). Step 508).
At this time, writing to the output file is repeatedly executed from t = 1 to t = maximum line segment number to be written (cycle of steps 509 to 511). The format of the output data at this time is as shown in the following table.
[0072]
【table2]
When the value of t reaches the maximum line segment number to be written, writing to the output file is stopped (step 511).
[0073]
On the other hand, in steps 500 to 502, the elevation is 0, and it is examined whether or not the line segments of the start polygon and the start polygon can be connected. When the line number of the contour line for which it is considered whether or not the line segment can be connected to the line number is equal, if none of the three conditions is satisfied, the starting polygon (line number i) and the contour line (line number h) are ) To see if there is a line connecting. Then, a combination of data points connecting the two contour lines with the shortest distance is searched.
[0074]
In step 514, tmp_j = -1, tmp_g = -1, ll = 100000 [m], and then j = 1. This j is the point number of the starting polygon (step 515). Then, it is determined whether or not the point j is a data point that is a ridge-type slope (r = 1). If Yes, g = 1 is set. g is the point number of the contour line h for examining whether or not the line segment with the starting polygon can be connected.
If the point g is a data point having a ridge slope (r = 1) (step 518), if poly [h] = 1 and g = p [h], the distance l between the point j and the point g is set. Calculate (step 520), and when ll is larger than l, tmp_j = j, tmp_g = g, and ll = l, and the process proceeds to step 523. On the other hand, when ll is smaller than 1, the process proceeds directly to step 523.
In step 523, if it is not the total number of point numbers of the contour line h for examining whether or not the line segment can be connected to the start polygon, g is incremented by 1, and the process returns to step 518 to determine whether or not the line segment can be connected to the start polygon. When the total number of point numbers of the contour line h to be examined is reached, the process proceeds to step 525. If the value of j has not reached the total number of points of the starting polygon, j is incremented by 1 (step 526), and the process returns to step 516.
In step 525, if the value of j has reached the total number of points of the starting polygon, the process proceeds to step 527, where it is checked whether tmp_j is -1, and if it is -1, the process returns to step 503 again.
[0075]
On the other hand, when tmp_j is not −1 in step 527, j = tmp_j and g = tmp_g are set, and the point on h closest to point j is searched by executing the following steps.
In step 530, time = 1, tt = 0, x1 = x [i] [j], and y1 = y [i] [j]. Here, (x [i] [j], y [i] [j]) is the (x, y) coordinates of the data point of the point number j of the contour line of the line number i.
Next, at step 531, if the total number of point numbers of the contour line h for examining whether or not the line segment with the starting polygon can be connected is 5 or less, the process proceeds to step 532 and start1 = 1 and end1 = P [h]. .
Further, when the total number of point numbers of h exceeds 5, when the point number is 1, start1 = 1, end1 = 3, and in the case of a polygon, further, times = 2, start2 = p [h] − 2, end2 = p [h] (step 536).
Further, when the point number is 2, start1 = 1, end1 = 4, and in the case of a polygon, further, times = 2, start2 = p [h] -1, end2 = p [h] (step 540). ).
When the point number is equal to the total number of point numbers, start1 = p [h] −3 and end1 = p [h] are set (step 542).
When the point number is equal to (total number of point numbers −1), start1 = p [h] −3, end1 = p [h], and in the case of a polygon, further, times = 2, start2 = 1, end2 = 2 (Step 546).
When the determinations in steps 531, 533, 537, 541, and 543 are all No, start1 = g−2 and end1 = g + 2 are set (step 547), and the process proceeds to step 548.
If the determinations in steps 531, 533, 537, 541, and 543 are Yes, the process proceeds to step 548 even after the next process is executed.
[0076]
By the processing after step 548, the line segment between the point j and the data point from start1 to end1 on h is examined.
First, k = start1 is set (step 549).
In the next step 550, x2 = x [h] [k] and y2 = y [h] [k] are set.
By executing the following steps, it is checked whether or not the line segment tmp_segment having the end points at (x1, y1) and (x2, y2) intersects the contour line. At this time, it is only necessary to examine only the contour lines whose elevation is one rank lower than Z [i] and Z [i].
In step 552, it is determined whether or not the line segment tmp_segment having (x1, y1) and (x2, y2) as endpoints intersects the contour line.
In the next step 553, for the length l of tmp_segment, whether limit_length is 1 or more is checked, and if it is 1, x2, y2, 1 are stored. Also, tt = tt + 1 tmp_x [tt] = x2, tmp_y [tt] = y2, tmp_l [tt] = l (step 554), the process proceeds to the next step 555, and it is determined whether k = end1. When it is determined No, k is incremented by 1, and the process returns to Step 550 to repeat the above processing.
If it is determined in step 552 that the line segment tmp_segment having (x1, y1) and (x2, y2) as the end points intersects the contour line, the process proceeds to step 555 without saving the data.
In step 555, when the value of k reaches end1, with respect to each line segment from the contour line data points start1 to end1 by a process after step 557, an intermediate point on the line segment (line segment is Also check n equal points (points where n is an integer).
At this time, the length of each of the n equally divided line segments is longer than min_length. This min_length is determined by input by the user.
In step 559, the value of k is set to start1.
The length 12 of the contour line segment whose end points are (x [h] [k], y [h] [k]) and (x [h] [k + 1], y [h] [k + 1]) is min_length. When x2 or more, _n is determined as a quotient of 12 / min_length.
In the next step 562, Sign = 1 is set.
560, the length 12 of the contour line segment whose end points are x [h] [k], y [h] [k] and x [h] [k + 1], y [h] [k + 1] is min_length. When it is less than x2, it is checked whether or not the value of k is end1-1. If it is No, k is incremented by 1 (step 569), the process returns to step 560, and if it is Yes, the process jumps to step 572.
Proceeding to step 563, the coordinates of x2 and y2 are calculated.
[0077]
【formula2]
[0078]
In the processing after the next step 564, it is checked whether or not the line segment tmp_segment having the end points at (x1, y1) and (x2, y2) intersects the contour line. It suffices to examine only the contour lines whose elevation is one rank lower than Z [i] and Z [i].
When the line segment tmp_segment with (x1, y1) and (x2, y2) as the end points intersects the contour line, it is checked whether sign = n−1, and when sign = n−1, the sign is set to 1. Increment and return to step 563 to repeat the above processing. When sign = n−1, the process proceeds to step 571 to determine whether or not the value of k is larger than endi−1. If the value of k is not equal to endi-1, k is incremented by 1, and the process jumps to S563.
When the value of k is equal to endi-1, it is determined whether or not times is 2. If it is 2, then start1 = start2, end1 = end2, and times = 1 are set (step 573), and then to step 548. Return. When times is not 2, it is determined whether or not tt is 0. When tt is 0, the process returns to step 503, and when tt is not 0, it is determined whether or not tt is 2 or more. If it is 2 or more, the tmp_x [tt] = x2 and the tmp_y [tt] = y2 are rearranged in order of increasing tmp_1 [tt] (step 576), and the number is incremented by 1 in the next step 577 (step 577). .
In the next step 578, the following information is stored as a new line segment new_segment connecting the two contour lines.
[0079]
【table3]
[0080]
Next, it is checked whether or not new_segment intersects with the segment segment created so far.
In step 581, it is checked whether or not number is 1. If 1, the process returns to step 503, and if not 1, t is set to 1 (step 582), and (one_x [t], one_y [t]) and ( It is checked whether or not a line segment pre_segment [t] and new_segment intersecting with two_x [t], two_y [t]) as endpoints.
When these intersect, when final_l [t] is smaller than final [number], information of pre_segment [t] and new_segment is replaced (step 586), and the process proceeds to step 587 where number = number-1 and step 503 is set. Return to.
If final_l [t] is not smaller than final [number], the process jumps to step 587 to set number = number-1 and returns to step 503.
Furthermore, if the line segments pre_segment [t] and new_segment do not intersect with each other (one_x [t], one-y [t]) and (two-x [t], two-y [t]), t When t is not equal to number-1, t is incremented by 1. When t is equal to number-1, the relationship between pre_segment [t] and new_segment is examined.
In step 591, t is set to 1. In the next step 592, it is determined whether or not pre_segment [t] has already been connected for two contour lines connected by new_segment.
If the result of the determination is No, it is further determined whether one point of one of the contour lines (line numbers i and h) connected by new_segment is the end point of pre_segment [t]. (Step 593), the distance 13 between the two end points on M of new_segment and pre_segment [t] is calculated (step 594). As a result, when l3 does not exceed 1000, new_segment and pre_segment [t] are considered to be vectors starting from one point on M, respectively, and an angle θ formed by the two vectors is calculated (step 596). After determining whether <45 ° and l3 <500, it is further determined whether final_l [t] <final_l [number] (steps 597 to 598). If both are Yes, pre_segment [t] and new_segment Put informationReplacementThen, after processing number = number-1 (step 599), the process returns to step 503. If the determination result in step 598 is No, the process of step 600 is performed and the process returns to step 503.
If the determination result in step 592 is Yes, if final_l [t] <final_l [number], the information of pre_segment [t] and new_segment is replaced, and then the process of number = number-1 is performed. Return to 503 (steps 601 to 603).
Further, when the determination result of step 593 is No and the determination result of step 595 is Yes, the process returns to step 503.
[0081]
[Calculation of valley order]
If the occurrence sites of the slope collapse are concentrated at a specific valley order n, the portion of the valley order n where the collapse has not yet occurred has a higher risk of collapse than others. Therefore, the valley order obtained along the valley line is important information for grasping the progress of erosion, the tendency of collapse, and the degree of danger. This program first executes a valley line generation program to generate a valley line, and then reads water system classification data obtained by executing a water system classification program for classifying the generated valley line for each water system. The order is calculated. Of course, a falling water line may be used.(Fig. 45).
[0082]
Since the valley line generation program was described above, the water system classification program(Fig. 43)Will be described in detail below.
As a premise, data points of two valley line (falling water) data with the same altitude(end point)When the distance is within d [m] (default is 0.5 [m]), it is assumed that the two valley line (falling line) data merge.
The falling water line creation method of the present invention connects adjacent contour lines, and therefore, contour lines having different elevations with straight lines., BendIn the intense part of the song, the falling water line is interrupted.
Since there are only a few such parts as a whole, it is currently most practical to connect the disconnected parts manually.
Therefore, if there is an interrupted portion in the created waterfall line, the portion is manually connected to correct the waterfall data, and the corrected waterfall data is set as an analysis target.
[0083]
[Water system classification program]
Regarding the water system, in the present invention, valley line (falling line) data that converge to the same end point is defined as the same water system.
Actually, when the plane distance between the end points of two valley lines (falling line) with the same altitude is within d [m], the two valley lines (falling line) converge to the same end point. Is processed.
In this embodiment, the default is d = 0.0 [m]. For example, if the original data isScaleWhen it is desired to make the end points which are contour lines of 1: 25,000 and are only 0.1 [mm] apart in the figure, d = 2.5 [m]. In the present invention, this d is input according to the purpose by an analyst.
In addition, when at least f or more valley lines (falling lines) have the same end point, these valley lines (falling lines) form a water system. This f is input according to the purpose by a person who analyzes using the present invention.
43In step 611, the corrected valley line (falling line) data is read, and the attribute of water system number -1 is given to all valley line (falling line) data.
In the next step 612, k = 1 and s = 1 are set. In the next step 613, WsThe end point of is the same as w in the valley line (falling line) data where the valley line (falling line) number is larger than s, and the horizontal distance is within d (determined by the user) from w Select a certain valley line (falling water line) data. When the total number of these valley lines (falling lines) is greater than or equal to f (step 614), a water system number k is given to each selected valley line (falling line) (step 615).(Fig. 12_1_B). When the total number is smaller than f, the attribute of the water system number −10 is given to each selected valley line (falling line).(Step 616)(Fig. 12_1_A). If s is the largest valley line (falling line) number (step 617), the process returns to the main routine, and if not, the valley line (falling line) numberTo issue+1 (step 618), WsIf the attribute is -10 (step 619), the process jumps to step 617. WsIf the attribute is not -10, SuW at step 620sIn the same way, the process jumps to step 617 when the attribute of the image> 0. If not satisfied, +1 is given to the water system number, and the process jumps to step 613.
Through the above processing, the valley line (falling line) is classified for each water system.
In addition, by changing the color of the valley line (falling line) for each water system number (for example, 1, 2, 3,...), The classified water system is displayed and printed based on the valley line (falling line). It is possible to create a water map that is easy to understand visually.
[0084]
Next, the valley order calculation program will be described with reference to FIGS.
First, valley data subjected to water system classification is read (step 631), and in the next step 632, α = altitude interval between contour lines (default is α = 10 [m]). Further, s = 1.
Thereafter, the valley order is calculated for each water system. Here, k = 1. This k is a water system number (1, 2, 3,..., K_end) assigned to each water system.
In the next step 634, the valley data having the water system number k is rearranged in descending order of the elevation of the starting point, and provisional numbers h (1, 2, 3,..., H_end) are given. Valley line data W of temporary number 11Let al_Z be the elevation of the start point and min_Z be the elevation of the end point(Fig. 13).
In this embodiment, the data used as the basis for calculating the valley order is a valley line, but it may be a falling water line.
Valley line data W of temporary number hhThe g th data point of wh, gWhen WhThe total number of data points is P [h]. Line segment wh, gwh, g + 1The starting point of wh, g, W the tip pointh, g + 1And
At this time, wh, gThe altitude of wh, g + 1Higher than the altitude.
First, the line segment w whose starting point is the starting point of the valley line datah, 1wh, 20 is given in advance to the valley order.
[0085]
In step 636, E = max_Z, and in the next step, h = 1. Next, Count = 0 is set (step 638).
Then WhIt is determined whether or not the total number P [h] of the data points is zero.
WhWhen the total number of data points is not 0, WhFor the data points, search for a point where the elevation of the data point is equal to E in ascending order of the point number. Here, g = 1 is set.
Next, [wh, gIs determined to be E (step 641). [Wh, gIf Elevation] is E, and Count is 0, i = h, j = g, and line segment wi, j  wi, j + 1Is the reference line segment. At this time, tmp = −1, count = 1, order = −1 (step 643), the process returns to step 647, it is determined whether or not the temporary number h is the final number, and the process proceeds to the next step.
[0086]
On the other hand, [wh, gWhen Elevation] is greater than E,w h, g + 1Is Wh(Step 645). If it is not the end point, g is incremented by 1, and the process returns to step 641.
In step 645, wh, g + 1Is WhIn step 644, [wh, g) Is less than E, and in step 649 the line segment wi, j  wi, j + 1And line segment wh, gwh, g + 1Is wi, j + 1If it is determined that they will not join,BothProceed to step 647.
In step 647, it is determined whether or not the temporary number h is the final number. If it is not the final number, h is incremented by 1 (step 648), and the process returns to step 639.
[0087]
In step 649, the line segment wi, jwi, j + 1And line segment wh, gwh, g + 1Is wi, j + 1If it is determined that they will merge at step 650, the process proceeds to step 650 to calculate the valley order.
In step 650, h and g are stored, and P [h] = 0 is set. This is wi, j + 1Downstream, WiAnd WhTo avoid duplication(Figs. 17 and 18).
In step 651, it is checked whether tmp is negative ((See paragraph 0098 for the meaning of tmp)If negative, line segmentw i, j wi, j + 1No valley degree is line segment wh, gwh, g + 1In step 653, tmp = 5, order = (wi, jwi, j + 1(Valley order) +1. Line segmentw i, j wi, j + 1No valley degree is line segment wh, gwh, g + 1Is greater than the valley order of tmp = 1, order = (wi, jwi, j + 1Of the valley).
In addition, the line segmentw i, j wi, j + 1No valley degree is line segment wh, gwh, g + 1Is smaller than the valley order of, in step 656, tmp = 10, order = (line segmentw h, g w h. g + 1 Of the valley).
[0088]
When the above processing is completed, the process returns to step 647.
In step 647, when the temporary number h is not the final number h_end, h is incremented by 1, and the process returns to step 639.
If the temporary number h is the final number h_end, the process proceeds to step 657. If order is a negative number, the line segment wi, j + 1wi, j + 2No valley order line segment wi, jwi, j + 1If the order is equal to or greater than 0 (step 658), wi, j + 1wi, j + 2The order of the valley is set to the order number (step 659).
[0089]
In step 651, when tmp is 0 or more, Option-v1(Fig. 47)Enter the subroutine.
This subroutine is executed when three or more valley line data merge at one point.(The meaning of tmp is
Reference).
In step 671, wi, jwi, j + 1No valley degree is wh, gwh, g + 1And tmp = 1, tmp = 5 and order = (wi, jwi, j + 1Of the valley) +1 (step 672).
In step 671, wi, jwi, j + 1No valley degree is wh, gwh, g + 1W is not equal to the valley order of or tmp = 1i, jwi, j + 1No valley degree is wh, gwh, g + 1It is judged whether it is smaller than the valley order of. If the determination result is Yes, it is checked whether tmp is 1, 5, 10, 10 or 15 (steps 674, 676, 678, 683). When Yes in steps 674 and 676, tmp = 10, order = (Wh, gwh, g + 1Of the valley order).
In step 678, tmp = 10, and in step 679 wh, gwh, g + 1When the valley degree of order is order, tmp = 15, order = wh, gwh, g + 1The process of the valley order of +1 is performed (step 680).
In step 679, wh, gwh, g + 1If the valley order of is not order, go to step 681 and go to wh, gwh, g + 1It is determined whether or not the valley order of is larger than order. If it is larger, tmp = 10, order = wh, gwh, g + 1The trough degree is processed (step 682).
Further, in step 683, when tmp = 15, order = wh, gwh, g + 1If the valley degree of the order is “order” (whether or not there is), when “Yes”, tmp = 10, order = wh, gwh, g + 1Is processed (step 685). When the result is No, the process ends and the process returns to step 647.
[0090]
When the calculation for the valley number is completed, the calculation result is written in step 660.
Next step 661Then, s is incremented by 1 and when i = h_end is not satisfied, h = i + 1 and count = 0 are set, and the process returns to step 639 again.
When i = h_end, if E> min_Z + α, E = E−α is processed (step 66).4Then, the process returns to step 638.
When i = h_end, if E> min_Z + α, k = k_end is determined.
If k = k_end is not satisfied, k is incremented by 1 and the process returns to step 634 to execute processing for the data of the next water system number.
If the data of all water system numbers is processed, k = k_end, so the calculation is terminated.
[0091]
[Combination of valley order and vertical section of slope]
This will be described with reference to FIGS.
Falling water line data Wi, Wh, WpFor each jth data point wi, j, The g th data point is wh, g, The qth data point is wp, qAnd Wi, jAnd wi, j + 1, Wh, gAnd wh, g + 1, Wp, qAnd wp, q + 1The midpoints of ti, j, Th, g, Tp, qAnd The vertical cross-sectional shape of the slope according to the present invention has two line segments with the data point of the falling water line data as the middle point, that is, a line composed of three points as one unit. In many cases, the points at both ends of a unit line are the midpoints of the line segment of the falling water line data (FIG. 1).5B)) may be the start point and end point of the falling water line data (FIG. 1).5A)). Further, when a plurality of waterfall line data merge at the same data point, the vertical sectional shape of one unit line having the merge point as the midpoint may be different (FIG. 15, B1) and B2)). Therefore, waterfall data Wi, Wh, WpIs the data point wi, j + 1When joining ati, j + 1Vertical cross-sectional shape of the slope (wi, j + 1The line with the middle point is determined by the following procedure..
AheadFirst, the waterfall line generation program is executed to generate a waterfall line (step 701), and then the water system classification program is executed in the next step 702. Although the present Example calculated based on the falling water line data, valley line data may be sufficient.
Therefore, the water system classification data is read (step 702-2). Subsequently, it is determined by inputting whether or not to calculate a waterfall line that does not have a water system number, that is, does not form a water system (step 703).
When it is decided to calculate a waterfall line that does not have a water system number, Option-cProceed to subroutine. Since this subroutine is additional, this subroutine will be described later.
[0092]
This program first calculates the valley order for each water system, and further classifies the vertical cross section. Therefore, this process will be described in detail.
First, in step 706, an altitude interval α between contour lines is defined. The default is α = 10 [m]. Here, s = 1 (since s comes out in step 765), k = 1. s is a data number, and k is a water system number (1, 2, 3,..., k_end) assigned to each water system.
In step 708, the waterfall line data of the water system number k is rearranged in descending order of the elevation of the starting point, and the temporary number h (1, 2, 3,…,h_end). Moreover, the waterfall line data W of the temporary number 11Let al_Z be the elevation of the start point and min_Z be the elevation of the end point.
Next, the waterfall line data W of the temporary number hhThe g th data point of wh, gAnd WhThe total number of data points is P [h]. Line segment wh, gwh, g + 1The starting point of wh, g, W the tip pointh, g + 1And At this time, wh, gAltitude> wh, g + 1There is a relationship of altitude.
And the line segment w whose starting point is the starting point of the falling water line datah, 1wh, 2The valley order of is assumed to be 0. Next, E = max_Z, h = 1, and count = 0.
[0093]
WhWhen the total number of data points is not 0, WhFor the data points, search for a point where the elevation of the data point is equal to E in ascending order of the point number. Here, g = 1 is set (step 714).
Then wh, gIt is determined whether or not the altitude of E is E (step 715). wh, gIf the elevation of E is E and Count is 0, i = h, j = g, and line segment wi, jwi, j + 1Is the reference line segment. At this time, tmp = −1, count = 1, order = −1 (step 723), the process returns to step 719, and it is determined whether or not the temporary number h is the final number. When the determination result is No, the temporary number h is incremented by 1 and the process returns to step 713.
[0094]
On the other hand, wh, gWhen the elevation of is higher than E, wh, g + 1Is Wh(Step 717), if it is not the end point, the data number g is incremented by 1 and the process returns to step 715.
In step 717, wh, g + 1Is WhIn step 716 when it is the end point ofh, gWhen the altitude of E is lower than E and in step 724 wi, jwi, j + 1And wh, gwh, g + 1Is wi, j + 1If it is determined that they will not merge at step 719, the process proceeds to step 719.
In step 719, it is determined whether or not the temporary number h is the final number. If the temporary number h is not the final number, the temporary number h is incremented by 1 (step 720), and the process returns to step 713.
[0095]
Line segment w in step 724i, jwi, j + 1And line segment wh, gwh, g + 1Is wi, j + 1If it is determined that the two will join, the process proceeds to step 725 to calculate the valley order. In step 725, h and g are stored.
In step 726, it is checked whether tmp is negative.i, j w i, j + 1No valley degree is line segment wh, gwh, g + 1In step 728, tmp = 5, order = (line segment wi, jwi, j + 1(Valley order) +1.
The line segment wi, j w i , J + 1No valley degree is line segment wh, gwh, g + 1Is greater than the valley order of tmp = 1, order = (line segment wi, jwi, j + 1Of the valley).
Furthermore, line segment wi, j w i , J + 1No valley degree is line segment wh, gwh, g + 1Is smaller than the valley order of tmp = 10, order = (line segment) in step 731.w h, g w h, g + 1 Of the valley).
[0096]
When the above processing ends, the process returns to step 719.
In step 719, if the temporary number h is not the final number h_end, h is incremented by 1 and the process returns to step 713, and the above processing is repeated until the temporary number h reaches the final number.
When the temporary number h reaches the final number h_end, it is determined whether Count is 0 or not. If it is determined in step 721 that Count is 0, the process proceeds to step 790. If the altitude is the altitude just before the end point, the altitude at the start point of the falling water line data is lowered by 1, and the process returns to step 713.
On the other hand, in step 790, if the altitude is not the one immediately before the end point, and the water system number k is not the final one, the water system number is incremented by 1 and the process returns to step 708 to start data processing for the next water system number. Further, when the water system number k is the final one, the processing is finished for all the objects, so this processing is finished.
[0097]
Step 726If tmp is greater than or equal to 0, in step 732, the line segment wi, jwi, j + 1No valley degree is line segment wh, gwh, g + 1And tmp = 1, tmp = 5 and order = (line segment wi, jwi, j + 1Of the valley) +1 (step 733).
In step 732, the line segment wi, jwi, j + 1No valley degree is line segment wh, gwh, g + 1If it is not equal to the valley order of or tmp = 1, the line segment wi, jwi, j + 1No valley degree is line segment wh, gwh, g + 1It is judged whether it is smaller than the valley order of.
If the determination result is Yes, it is checked whether tmp is 1, 5, 10, 10 or 15 (steps 735, 736, 738, 743). = 10, order = (line segment wh, gwh, g + 1) (Step 737).
In step 738, tmp = 10, and in step 739, the line segment wh, gwh, g + 1If the valley order of is order, tmp = 15, order = line segment wh, gwh, g + 1The process of the valley order of +1 is performed (step 740).
In step 739, the line segment wh, gwh, g + 1If the valley order of is not order, go to step 741 and go to line wh, gwh, g + 1It is determined whether or not the valley order of the order is greater than order.h, gwh, g + 1The trough degree is processed (step 742).
In step 743, when tmp = 15, the line segment wh, gwh, g + 1If the determination is “valley order of order ≧ order”, when Yes, tmp = 10, order = line segment wh, gwh, g + 1Is performed (step 745), and the process returns to step 719. Also, the line segment w in step 744h, gwh, g + 1If the determination is “No” or “No”, the process is terminated and the process returns to step 719.
[0098]
Here, the meaning of the value of tmp is summarized.
tmp = 1: line segment wi, jwi, j + 1Only has the largest valley order.
tmp = 5: line segment wi, jwi, j + 1And other line segment (s)w h, g w h, g + 1 Has the highest valley order.
tmp = 10: single line segment wh, g w h , G + 1(≠ line segment wi, jwi, j + 1) Has the largest valley order.
tmp = 15: multiple line segments wh, g w h , G + 1(≠ line segment wi, jwi, j + 1) Has the largest valley order.
[0099]
When the calculation of the valley order for the falling water line data belonging to one water system is completed, a determination of Yes is made in step 719, and the process proceeds to step 721 to determine whether Count is 0 or not. Step when the Count is determined to be 079If it is not 0, the process further proceeds to step 746.
In step 746, it is determined whether order is negative.
When it is determined to be negative, the line segment wi, j + 1wi, j + 2The value of the valley order of the line segment wi, jwi, j + 1The value of the valley order.
If it was not negative,, OrderThe value of theLine segment wi, j + 1wi, j + 2The value of the valley order of.
[0100
Next, in step 749 and step 750, when order is negative or tmp is 1, ii = i and jj = j are set.
When tmp is 10 in step 752, the data point wi, j + 1Line segment wh, gwh, g + 1Here, ii = h and jj = g are set using (h, g) of the line segment having the maximum valley degree in h ≠ i.
If none of the above three steps apply, line segment wi, jwi, j + 1And line segment wh, gwh, g + 1Since they have the same valley degree and the flow histories of each other are equal, in order to find out which drainage line will flow linearly, the line segment wh, gwh, g + 1And line segment wh, g + 1wh, g + 2Is the angle δ on the horizontal planeh, g + 1(≤180 °) is calculated(FIG. 16B). However, this h includes i, and this g includes j.
Therefore, the line segment wi, jwi, j + 1And line segment wi, j + 1wi, j + 2Is the above angle δ on the horizontal planeh, g + 1(≦ 180 °) is also calculated. And the calculated δh, g + 1Of which is the largest δh, g + 1Ii = h and jj = g for h and g. That is, priority is given to the one that flows linearly as the reference line segment.
[0101]
Here, the data structure and the calculation method of the attribute and the attribute will be described.
[0102]
【table4]
Gradient θii, jj: Tanθii, jj= Α /l ii, jjMore calculated
Valley degree vii, jj-1: Wii, jj-1wii, jjValley order
Τ which determines the vertical cross sectionii, jj= 180 ° + θii, jj-1−θii, jj
Angle δ on the horizontal planeii, jj: Lii, jj-1 , L ii, jj , W ii , Jj-1Whenw ii , Jj + 1Horizontal plane distance tolIs obtained by the following calculation.
[0103]
【formula3]
[0104]
In addition, the middle point, data point, middle point data m from aboveii, jj-1wii, jjmii, jj + 1 InThe attributes to be written to the attribute file are as follows.
(1)Line number: s (corresponds to s in the xy file)
(2)Midpoint elevation: zii, jj
(3)Water system number: k
(4)wii, jjThe slope of the line segment upstream: θii, jj-1
(5)wii, jjThe slope of the line segment downstream: θii, jj
(6)wii, jjAngle in the horizontal plane at δ:ii, jj
(7)Angle for separating vertical section: τii, jj
(8)Valley degree vii, jj-1: Line segment wii, jj-1wii, jjValley order
As described above, for example, the valley degree has one attribute with respect to one line segment of the waterfall line data, and thus two data points. For example, the angle that determines the vertical cross-sectional shape is the value of two continuous waterfall line data. It has one attribute for the line segment and thus for the three data points.
For this reason, the waterfall line data excluding the first and last ones typically writes out the data points in step 807 as shown in the table below.
[0105]
【formula4]
The attributes to be written are as shown in the table below.
[0106]
【table5]
[0107]
By executing the following processing, processing for writing data to the xy file attribute file is executed for all line segments.
wii, jj(X, y, z) coordinates of (xii, jjyii, jj, Zii, jj), Wh, g(X, y, z) coordinates of (xh, g, Yh, g, Zh, g(Step 755).
And the line segment wii, jjwii, jj + 1Besides, wi, j + 1It is determined whether or not there is a line segment with the tip point at (step 756).ii, jjwii, jj + 1Excluding wi, j + 1A plurality of line segments with the tip as wh, gwh, g + 1(Step 757).
[0108]
Step 758 to Step 766By this process, all the data acquired by the process so far is written to the file.
First, in step 759 and step 761, it is determined whether the data point number is 1 or 2 or other.
If the data point number is 1, writing is performed in step 760. If the data point number is 2, writing is performed in step 762.
If the data point number is neither 1 nor 2, writing is performed in step 763.
In step 764, WhThe total number of data points P [h] is set to 0. This is a process that is performed in order to eliminate overlapping waterfall line data in subsequent processes.
With the above processing, writing of the xy coordinate data and attribute data of all the falling water line data is completed.
[0109]
Next, the line segmentw ii, jj w ii, jj + 1 Export about.
Data point number is 1Or 2 and W ii It is checked whether or not it is two before the total number of data points P [ii], and data is written according to conditions that satisfy each of them (steps 768 to 77).8), The data number s is incremented by 1, and the process proceeds to step 789.
On the other hand, in step 756, wii, jjwii, jj + 1Besides, wii, j + 1If there is no line segment with the tip point, the process proceeds to step 780, where it is determined whether the data point number is 1, and if it is 1, the process proceeds to step 789.
If the data point number is other than 1, the data point number is 2 and the total number of data points is 3.,Data number is2. Data number isData is written in four formats depending on whether one of the conditions before the total number of data points is satisfied (steps 781 to 787).
Thereafter, the data point number s is incremented by 1, and the process proceeds to Step 789.
[0110]
In step 789, it is determined whether or not the line number of the reference line has reached the total number of temporary numbers.
If not reached, h = i + 1 and count = 0, and the process returns to step 713.
If it is determined that the line number of the reference line has reached the total number of temporary numbers, when E> min_Z + α, the altitude is lowered by one rank (E = E−α) and the process returns to step 713 and thereafter. Execute the process.
Further, when E> min_Z + α is not satisfied, if the end of the water system number has not been reached, the process proceeds to the process for the next water system (step 794).
Here, when the end of the water system number is reached, since the processing has been completed for all the water systems, the execution of the program is terminated.
[0111]
Here again, the subroutine Option_c (Fig. 48)To explain
Next, an attribute of valley degree 0 is given to all the lines of the falling water line G (step 796).
G waterfall data W not writteniiWhen there is (1 in Step 797), wiiJj-th (jj = 1, 2, 3,...)ii, jjAnd At this time, jj = 1 is set (step 797-2).
In the next step 798, when the data number jj is not 1, jj = 2And P [ii] = 3Orjj = 2,If either condition of jj = P [ii] -1 is satisfied, Steps 801, 804, and 808 are executed to write data.
This is also the most common, but step 807TheExecute.
After step 801 and step 808 are executed, s is incremented by 1 in step 802, and the process returns to 1 in step 797 to repeat the subsequent processing.
Further, after executing Steps 804 and 807, s is incremented by 1 at Step 805, jj is incremented by 1 at Step 799, and the routine returns to Step 798 to repeat the subsequent processing.
As a result of the repetition of the above processing, all G waterfall data w in step 797-1iiIs determined to have been written, the process is terminated, and the process returns to the main routine to enter the processes in and after step 706.
[0112]
[Contour grid attribute data gridding program 1]
The present invention provides various attribute data calculated based on contour line data.(line segment)This is related to a program used when grid is formed.
In general, the number-of-values statistical analysis method often uses grid data having a regular, grid-like arrangement. Many data such as vegetation data and geological data have been prepared as grid data.
On the other hand, line data and various (random) point data holding various information are combined with the grid data as they are.useIt is difficult to do.
Therefore, the present invention intends to expand the range of utilization by making the obtained line segment data having terrain attributes into a grid and linking with various grid data.
The line segment data used for grid formation always has information on the plane position coordinates of the start point and end point of the line segment, and has one or more attributes such as gradient and slope direction.
And, for example, the slope, slope direction and valley degree are calculated simultaneously from the line data of the falling water line, 1) the line number, 2) the x coordinate of the starting point of the line segment, 3) the y coordinate of the starting point of the line segment, 4) Create a file in which the x coordinate of the end point of the line segment, 5) the y coordinate of the end point of the line segment, 6) water system number, 7) gradient, 8) slope direction, and 9) valley degree are written for each line segment. , You may read only the attributes as needed.
When creating gradient grid data, a file in which only the above 2) to 5) and 7) are written may be created.
In any case, formation of line segment data used for creating grid data can be variously considered. In addition to the falling water line, it is possible to create grid data based on the steepest climb, valley line, ridge line, and point data with attributes.
[0113]
If the unit is two line segments of the falling water line, such as the vertical cross section of the slope, it is divided into two line segments.
The line segment divided into two has the same attribute, although the start point and end point (x, y) coordinates are different.
[0114]]
[0115]
In the case of a horizontal cross section of a slope classified along a contour line, it is written for each contour line segment.
(Example)
1) Line number
2) The x coordinate of the start point of the line segment
3) The y coordinate of the start point of the line segment
4) The x coordinate of the end point of the line segment
5) The y coordinate of the end point of the line segment
6) Types of horizontal cross section (1: ridge type, -1: valley type, 0: other than that)
[0116]
First, the creation range for creating grid data is determined. The following two methods are given as examples.
Method 1) The maximum value and minimum value (min_x, max_x, min_y, max_y) of (x, y) coordinates are determined manually by looking at the drawings and the like.
Method 2) The line segment data that is the basis of the grid data is read, and the maximum value and minimum value (min_x, max_x, min_y, max_y) of the (x, y) coordinates are determined from the start point and end point of these line segment data. . However, it should be noted that the range of distributed data is not always rectangular.
Next, the grid interval d of the grid data to be created is determined..
In addition, determine the position of the grid points (center or points off the four corners).
Note that the grid data is actually expressed not as dots but as spread cells.
[0117]
【table6]
[0118]
When various types of grid data are calculated using altitude grid data that has been frequently used in the past, the calculation is performed as shown in the figure below.
[0119]
【table7]
For example, grid point gi, jWhen you want to calculate the slope ati, jUsing only the elevation ofi, jThe slope of cannot be calculated.
For this reason, gi, jIt is also necessary to use the elevations of grid points around.
Therefore, since the calculation range is widened, the calculation result tends to be gentle.
On the other hand, in the present invention, line segment data calculated up to the attribute is created, and only data existing within the calculation range is used.
The feature is that the value in the grid is obtained.
Conventionally, various types of grid data such as gradients are usually created from elevation grid data.
[0120]
【table8]
[0121]
Less than, AttributeAn example of the gradient will be described in detail.
Figure35-36In reference toexplain.
FirstDetermine the line segment data and priority to use.
This priority is patterned, and the pattern is
pattern1 [Priority 1: Falling Line Data, Priority 2: Fastest Climbing Data]
pattern2 [Priority 1: Most rapid climbing data, Priority 2: Falling water data]
pattern3 [Priority 1: Downstream data, Priority 2: None]
pattern4 [Priority 1: Most rapid climbing data, Priority 2: None]
There are four types.
Next, a range for creating grid data is determined.
At this time, min_x, max_x, min_y, and max_y are input. In addition to the manual input method, line segment data that is the basis of the grid data is read, and (min_x, max_x) is selected from the start point and end point of these line segment data. , Min_y, max_y) is automatically obtained by calculation. However, it should be noted that the range of distributed data is not always rectangular.
[0122]
Then, the user determines d by inputting the grid interval d. As a result, the calculation range r is determined. The calculation range r is defined by a radius r centered on the grid in this embodiment. The default of r is d / √2, but can be changed by the user. When determining r, it is necessary to consider the accuracy of the data on which the grid is formed. Further, the position (x, y) and the total number (num_x, num_y) of each grid are determined by inputting the grid interval d.
Subsequently, the data of the priority order 1 is read, the line segment number is s, and the total number of line segments is sum_s (step 814).
In the next step 815, the pattern input and determined by the user is pattern = 1 or If it is determined that pattern = 2, the data of the priority order 2 is continuously read, the line segment number is ss, and the total number of line segments is sum_ss.
Then, the row value j = 1 of the grid point, the column value i = 1, and the line segment number s = 1 are set (step 817).
In the subsequent processing, the grid point gi, jCalculate the value at. At this time, the stored data number n = 0.
And the starting point of the line segment with the line number s is p1= (X1, Y1), P is the end point2= (X2, Y2).
[0123]
In steps 820, 821, 822, 824, and 825, the start point and end point of the line segment are both outside the range of one grid, or the grid center gi, jAnd the starting point p1And end point p2Grid center g on straight line T passing throughi, jIf it is determined that the distance between the intersection point T (hereinafter simply referred to as “intersection point”) of T and the perpendicular line dropped from T exceeds the calculation range r, the process proceeds to step 826 and the line segment number reaches the total number of line segments. If not, the line segment number s is incremented by 1 and steps 819 to 825 are executed again. As a result of the execution, if it is determined No in steps 820, 821, 822, 824 and 825, in steps 828, 830 and 832,
a)The distance between the grid center and the intersection does not exceed the calculation range r, and the intersection is a line segment p1p2The top point (step 828),
b)The distance between the grid center and the end point is shorter than or equal to the distance between the grid center and the start point, and the distance between the grid center and the end point does not exceed the calculation range r (step 830).
c)When the distance between the grid center and the start point is shorter than the distance between the grid center and the end point, and the distance between the grid center and the start point does not exceed the calculation range r (step 832), the line segment The number s and their distance l are stored (step 833-2), n is incremented by 1 (step 833-3), and the process returns to step 826.
In addition, a)~ C)If the line segment number s does not reach the total number sum_s of the line segments, s is incremented by 1 and the process returns to step 819..
[0124]
TheIn step 835, saveDeData numbern isWhen it is judged that there is(N> 0)If there is an instruction by an input to generate gradient grid data using the nearest line segment data, the n line segments stored in step 837 are rearranged in order of increasing distance l, and then the distance l is The slope value of the smallest line segment is the grid point gi, jThe value is written as the gradient value at (Step 838).
On the other hand, in step 836, when there is no instruction to create gradient grid data using the nearest line segment data, the average value of the gradients of n line segments is set to the grid point g.i, jThe value is written as the gradient value at (step 840).
[0125]
On the other hand, when the priority level 1 data does not exist within the calculation range r of the grid point, “Yes” is determined in Step 835. If the user has selected “pattern 1” or “pattern 2”, “Yes” is determined in Step 841. Therefore, the process proceeds to step 847 and the grid point gi, jCalculate the value at.
Since the processing content from step 848 to step 870 is the same as the processing from step 819 to step 840 already described, description thereof will be omitted.
Note that step 841 is unique for processing data of priority 2.
If the priority level 2 data exists within the calculation range of the grid point as a result of executing the above processing and the priority level 2 data is processed, the process returns to step 843 after executing steps 865 to 869. , Continue processing.
If n = 0 in step 835 and the selected pattern is neither pattern = 1 nor pattern = 2, the grid point gi, jSince there is no value at-, -9999 is written (step 842).
[0126]
Thereafter, in step 843, when the grid point row i has not yet reached the total number num_x, the process proceeds to the next grid point row (step 845), and returns to step 818 to repeat this cycle.
As a result, when it is determined in step 843 that the grid point column i has reached the total number num_x, the process advances to the next row of grid points (step 846), and returns to step 818 to increment the grid point column by one. When it is executed and the processing of the last grid point is finally finished, it is determined Yes in step 844, and the processing for grid formation is finished.
[0127]
[Contour attribute data gridding program 2]
This program is characterized in that the data used in the previous grid point processing is not used in the subsequent processing, and the other points are the same as in the grid program 1.
Therefore, only for the feature points, With reference to FIGS.I will explain.
In step 874, the attribute used = -1 is given to all line segment data.
In step 894, when the line segment number s and the distance l are saved, the value of used is also saved.
This used value is used when it is determined that all n line segments are used = 1, that is, all the line segment data has already been used as data at the previous data point. Because there ’s no data available.,The same processing as program 1 is performed (steps 903 and 907).
In the opposite determination, the same processing as in program 1 is performed using only the line segment where used = −1, but at this time, used = 1 is assigned to the line segment used for the calculation. (Steps 905, 909).
[0128]
On the other hand, for priority level 2 data, it is assumed that this data is rarely used, and if there is no priority level 1 data, the number of priority level 2 data is also low. Since it is assumed, the attribute used = −1 is not given.
[0129]
As mentioned above, although the calculation program of the gradient and the slope direction has not been described, it will be described again here.
Figure39First, n line data are read in ascending order of line numbers. Line data of line number i (1, 2,..., N) is WiAnd s = 1.
W i Jth data point ofw i, jAnd WiLet m be the total number of data points. Then, j = 1 is set.
In step 955, wi, jAnd wi, j + 1Line segment wi, jwi, j + 1When calculating the gradient θ and the slope orientation δ,i, jThe three-dimensional coordinates of (xi, j, Yi, j, Zi, j),w i, j + 1 The three-dimensional coordinates of (xi, j + 1, Yi, j + 1, Zi, j + 1).
The slope gradient θ and the slope direction δ are calculated by the following [formula A] and [formula B], respectively (steps 956 to 957).
The slope direction δ is counterclockwise and east is 0 [°].i, jAnd wi, j + 1To the altitude (zi, jAnd zi, j + 1) Is the lower three-dimensional coordinate (x1, Y1, Z1), The higher 3D coordinates (x2, Y2, Z2).
1) x1-X2≧ 0 and y1-Y2≧ 0 → δ = a [°]
2) x1-X2<0 and y1-Y2≧ 0 → δ = 180−a [°]
3) x1-X2<0 and y1-Y2<0 → δ = 180 + a [°]
4) x1-X2≧ 0 and y1-Y2<0 → δ = 360−a [°]
[0130]
[Formula A]
[Formula B]
[0131]
In step 958, wi, jAnd wi, j + 1The position coordinates, gradient θ, slope orientation δ, etc. are written out according to the purpose. At this time, the line segment number is s.
Next step 960If the data number j has not reached the total number m,jIs incremented by 1, the next data is calculated, and when the total number of the line data is processed (step 962), the next line data is processed (step 963).
When all the data has been processed, the calculation is terminated.
[0132]
In the present inventionGenusCharacteristically, since the line segment data calculated up to the characteristic is read and converted into grid data using only the data existing within the calculation range, the value in the grid can be obtained.
In addition, the user can select whether to generate gradient grid data using the nearest line segment data or to generate gradient grid data using the average value of the gradients of n line segments. Depending on the nature of the specific output, it can be used properly.
Furthermore, when there are multiple basic data of the same type, various data can be used alone or in combination, and can be flexibly handled according to the purpose..
[[0133]
[Brief description of the drawings]
FIG. 1 is a classification diagram of the shape of a slope (change of Dikau (1990)). L, straight line; V, convex; C, concave. The thick lines divide these shapes into three groups. (1) Both straight lines; (2) One is straight and the other is curved; (3) Both are curved
FIG. 2 shows a contour data structure and format.
[Figure 3] Pointsq j Decisions and pointsq j An example of an error when finding (A)t 1 Is closest to m among the selected points, and the contour line data T is located next to the contour line data M, and the temporary line segment mt 1 Does not intersect any contour lines.t 4 Whent 5 Is not a selection point. B1) Temporary line segment mt 1 Intersects the contour line data M. This error often occurs where the contour data M is bent.
FIG. 4 shows a procedure for searching for a candidate for a point w.
FIG. 5 represents the relationship between contour line data M and H (or K) next to M.
FIG. 6 shows points for classifying horizontal cross-sectional shapes of slopes.
FIG. 7 shows the horizontal cross-sectional shape of the slope obtained by the outer product of successive vectors.
FIG. 8 shows a data format of falling water line data / rapidest line data.
FIG. 9 shows the falling water line data and the steepest line data.
FIG. 10 shows the angle of valley slope and the angle of ridge slope: ω.
FIG. 11 shows a search for a valley head / ridge bottom.
FIG. 12 shows the assignment of a water system number.
FIG. 13 shows the order of calculating the valley order.
FIG. 14 shows combinations along waterfall data.
FIG. 15 shows a unit of vertical cross section.
FIG. 16 shows a procedure for determining a single vertical cross-sectional shape of a slope at an arbitrary data point.
FIG. 17 shows deletion of overlapping line segments.
FIG. 18 Data point wi, j + 1The merging of the falling water (fastest climbing) data is shown.
FIG. 19 is a flowchart of a horizontal section type program (part 1).
FIG. 20 is a flowchart of a horizontal section program (part 2).
FIG. 21 is a flowchart for determining the horizontal sectional shape of the slope of each data point.
FIG. 22 is a flowchart for generating the steepest climb (part 1).
FIG. 23 is a flowchart of the most rapid climb generation (part 2).
FIG. 24 is a flow chart of falling water line generation (part 1).
FIG. 25 is a flowchart for generating a falling water line (part 2).
FIG. 26 is a program flowchart for determining a valley head.
FIG. 27 is a flowchart for determining a ridge bottom point.
FIG. 28 is a flowchart of creating the same contour line connecting line segment (part 1);
FIG. 29 is a flowchart of the same contour line connecting line segment creation (part 2).
FIG. 30 is a flowchart of the same contour line connecting line segment creation (part 3).
FIG. 31 is a flowchart (part 1) of a combination program of a valley order and a vertical cross section.
FIG. 32 is a flowchart of a combination program of valley order and vertical section (part 2).
FIG. 33 is a flowchart (part 3) of a combination program of valley order and vertical section.
FIG. 34 is a flowchart (part 4) of the combination program of the valley order and the vertical cross section.
FIG. 35 is a flowchart of attribute grid data creation 1 (part 1).
FIG. 36 is a flowchart of attribute grid data creation 1 (part 2);
FIG. 37 is a flowchart of attribute grid data creation 2 (part 1).
FIG. 38 is a flowchart of attribute grid data creation 2 (part 2).
FIG. 39 is a flowchart for calculating a slope and a slope direction.
FIG. 40 is a flowchart of a ridge line generation program.
FIG. 41: Rapidest climb generation (reference) (part 1) flow chart
FIG. 42: Rapidest climb generation (reference) (part 2) flow chart
FIG. 43: Water system classification program flowchart
FIG. 44 is a valley line generation program flowchart;
FIG. 45 is an overall flowchart for calculating the valley order.
FIG. 46 is a flowchart for calculating the valley order.
FIG. 47 is a flowchart of Option_v1.
FIG. 48: Option_cflowchart
FIG. 49 is a flowchart of an attribute analysis program for one unit line.
FIG. 50 is a flowchart of Option 1

Claims (1)

コンピュータに、先に生成された最急登線データの到達点を次に生成する最急登線データの起点とするデータ処理を繰り返すことにより、等高線データの全ての線分データの任意の点を起点とし、隣接する高位の等高線の全ての線分データの任意の点を到達点として、個々の最急登線線分データを生成させて、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させる地形データ処理プログラムであって、
該地形データ処理プログラムは、
任意の等高線データの線分データの任意のデータ点を最急登線生成の起点として選定する第1のステップと、
上記選択した等高線データに隣接する高位の等高線の線分データの任意のデータ点のうち、前記起点からの距離が短いものが優先的に選ばれた任意のデータ点を選択点として選定する第2のステップと、
前記選択点と前記起点の距離を演算し、最も距離が短い選択点を到達点の候補として、前記優先的に選ばれた任意のデータ点を含む等高線の線分である仮線分を選定し、前記起点と前記到達点の候補を結ぶ線分であり、かつ、前記仮線分と交差しない線分を選定し、該選定した線分の到達点を含む等高線は前記選択した等高線に隣接する高位の等高線であると判断する第3のステップと、
前記起点から隣接する高位の等高線であると判断された等高線データの各線分の任意の点に引かれた線が前記仮線分と交差しないとき、前記等高線データの各線分の任意の点を最急登線作成の到達点の候補とする第4のステップと、
全ての到達点の候補の中から起点に最も近い候補を到達点として決定する第5のステップと、
前記起点から前記到達点に向かって最急登線線分データを生成する第6のステップとを含み、
コンピュータに、
前記決定した到達点を次に生成する最急登線線分データの起点として、前記第2乃至第6のステップを順次繰り返し実行させ
上記到達点の候補が全く存在せず最急登線の終点に到達したと判断されたとき、次の任意のデータ点を選択した後前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ
前記選択した任意のデータ点が前記任意の等高線データの最後のデータであると判断されたとき、まだ始点とするために用いていない等高線データを選択して前記第1と第2のステップの間にジャンプして前記第2乃至第6のステップを繰り返し実行させ、始点とするために用いていない等高線データがないと判断されたとき処理を終了することにより、等高線から隣接する高位の等高線に対して最大傾斜で登る最急登線を生成させるための地形データ処理プログラム。
The computer repeats data processing using the arrival point of the most rapid climbing data generated earlier as the starting point of the most rapid climbing data to be generated next, so that any point of all line segment data of the contour line data can be obtained. Starting from an arbitrary point of all the line segment data of the adjacent high level contour line, the individual steepest line segment data is generated from the arbitrary point with the maximum slope from the contour line to the adjacent high level contour line. the steepest climbing line to climb a terrain data processing program that Ru was made raw,
The terrain data processing program is
A first step of selecting an arbitrary data point of line segment data of arbitrary contour line data as a starting point for generating the steepest climb;
A second data point selected as a selection point is an arbitrary data point preferentially selected from the arbitrary data points of the line data of the higher contour line adjacent to the selected contour line data . And the steps
The distance between the selected point and the starting point is calculated, and the selected point having the shortest distance is selected as a candidate for the destination , and a temporary line segment that is a contour line segment including any of the preferentially selected data points is selected. A line segment connecting the origin and the candidate for the arrival point is selected and does not intersect the temporary line segment, and the contour line including the arrival point of the selected line segment is adjacent to the selected contour line A third step of determining a high contour line;
When a line drawn to an arbitrary point of each line segment of the contour line data determined to be an adjacent high-level contour line from the starting point does not intersect with the temporary line segment, the arbitrary point of each line segment of the contour line data is maximized. A fourth step that is a candidate for a destination for rapid climbing;
A fifth step of determining the candidate closest to the starting point among all the candidate reaching points as a reaching point;
And a sixth step of generating steepest climb line segment data from the starting point toward the reaching point,
On the computer,
Starting the steepest registered line segment data to be next generated an arrival point with the determined sequentially repeated to execute the second to sixth steps,
When it is determined that there is no candidate for the arrival point and the end point of the steepest climb is reached , after selecting the next arbitrary data point , jump between the first and second steps and repeating is performed second to sixth step of,
When it is determined that the selected arbitrary data point is the last data point of the arbitrary contour line data, the contour line data not yet used to be used as the starting point is selected, and the first and second steps are performed. By jumping between the above steps, the second to sixth steps are repeatedly executed , and when it is determined that there is no contour data that is not used for the start point, the processing is terminated, so that the contour line is changed to the adjacent higher contour line. terrain data processing program for causing made live steepest registration lines to climb up to the inclined against.
JP2002320548A 2002-09-27 2002-09-27 Topographic data processing program Expired - Lifetime JP3755002B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2002320548A JP3755002B2 (en) 2002-09-27 2002-09-27 Topographic data processing program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2002320548A JP3755002B2 (en) 2002-09-27 2002-09-27 Topographic data processing program

Related Child Applications (5)

Application Number Title Priority Date Filing Date
JP2005310577A Division JP2006092567A (en) 2005-10-25 2005-10-25 Topographic data processing program
JP2005310573A Division JP4314371B2 (en) 2005-10-25 2005-10-25 Topographic data processing program
JP2005310575A Division JP4203600B2 (en) 2005-10-25 2005-10-25 Topographic data processing program
JP2005310574A Division JP4203599B2 (en) 2005-10-25 2005-10-25 Topographic data processing program
JP2005310576A Division JP4203601B2 (en) 2005-10-25 2005-10-25 Topographic data processing program

Publications (2)

Publication Number Publication Date
JP2004118820A JP2004118820A (en) 2004-04-15
JP3755002B2 true JP3755002B2 (en) 2006-03-15

Family

ID=32289728

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2002320548A Expired - Lifetime JP3755002B2 (en) 2002-09-27 2002-09-27 Topographic data processing program

Country Status (1)

Country Link
JP (1) JP3755002B2 (en)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007011582A (en) * 2005-06-29 2007-01-18 Information & Science Techno-System Co Ltd Flood forecasting system
JP5026992B2 (en) * 2008-01-09 2012-09-19 株式会社日立エンジニアリング・アンド・サービス Basin estimation program
JP5698047B2 (en) * 2011-03-24 2015-04-08 学校法人慶應義塾 Load transmission path search device
CN110410070B (en) * 2019-08-15 2022-08-23 武汉时代地智科技股份有限公司 Method for determining water flooding reservoir flooding rule
CN115902526B (en) * 2023-01-03 2025-07-08 深圳供电局有限公司 Transmission cable fault location method and system based on differential iteration method

Also Published As

Publication number Publication date
JP2004118820A (en) 2004-04-15

Similar Documents

Publication Publication Date Title
CN109035364B (en) A method for quickly drawing cross-sections based on CAD topographic maps
CN110135351B (en) Built-up area boundary identification method and equipment based on urban building space data
CN112052503B (en) Artificial intelligence-based commercial block building generation method
Burns et al. Protocol for inventory mapping of landslide deposits from light detection and ranging (LiDAR) imagery
JP6179913B2 (en) Columnar object extraction method, columnar object extraction program, and columnar object extraction device
WO2021051346A1 (en) Three-dimensional vehicle lane line determination method, device, and electronic apparatus
CN108286976A (en) The fusion method and device and hybrid navigation system of a kind of point cloud data
CN113850822A (en) An automatic division method of slope elements based on confluence division
JP2008170611A (en) Road data generation method, apparatus and program
CN108388723A (en) The component automatic testing method and system of slab bridge bridge point cloud
JP3755002B2 (en) Topographic data processing program
CN107102339A (en) A kind of automatic generation method of above-ground route data
JP4203599B2 (en) Topographic data processing program
CN112182125A (en) A Boundary Recognition System for Business Agglomeration Areas
JP4314371B2 (en) Topographic data processing program
JP4203601B2 (en) Topographic data processing program
CN119106485B (en) High-speed railway base cross section design information datamation method based on graphic primitive characteristics
JP4203600B2 (en) Topographic data processing program
KR100657870B1 (en) Ground Level Extraction Method Using Aerial Laser Survey Data
JPH09305643A (en) Method and device for designing plant layout
JP4389029B2 (en) Topographic data processing method
JP2006092567A (en) Topographic data processing program
JP3873121B2 (en) Topographic data processing method
JP6746851B2 (en) Terrain classification system and terrain classification method
JP3572253B2 (en) Three-dimensional model generation method and apparatus, and recording medium recording execution program of this method

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20050815

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050826

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051025

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: 20051121

R150 Certificate of patent or registration of utility model

Ref document number: 3755002

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