地形データ処理方法
【課題】手作業で実現していた専門家レベルの解析精度を維持しつつ、コンピュータ処理可能な斜面の水平断面形を分類する地形データ処理方法を提供する。
【解決手段】ある等高線データのあるデータ点から標高が1ランク低いか高い等高線データへ最短距離の線を引いて交点を求め、前記あるデータ点を始点としそれより一つ小さいデータ点を終点とするベクターγと、前記あるデータ点を始点とし前記交点を終点とするベクターβ、β´との外積、及び前記ベクターβ、β´と、前記あるデータ点を始点としそれより一つ大きいデータ点を終点とするベクターαとの外積を演算し、前記ベクターの両外積がともに正又は負であるとき、前記交点が等高線データの右側左側に位置すると判断し、前記参照点より前記ポイント番号が一つ小さいデータ点を始点とし、参照点を終点とするベクターと前記ベクターγにより、参照点が等高線データの左右どちらに突き出ているかを判定する。
【解決手段】ある等高線データのあるデータ点から標高が1ランク低いか高い等高線データへ最短距離の線を引いて交点を求め、前記あるデータ点を始点としそれより一つ小さいデータ点を終点とするベクターγと、前記あるデータ点を始点とし前記交点を終点とするベクターβ、β´との外積、及び前記ベクターβ、β´と、前記あるデータ点を始点としそれより一つ大きいデータ点を終点とするベクターαとの外積を演算し、前記ベクターの両外積がともに正又は負であるとき、前記交点が等高線データの右側左側に位置すると判断し、前記参照点より前記ポイント番号が一つ小さいデータ点を始点とし、参照点を終点とするベクターと前記ベクターγにより、参照点が等高線データの左右どちらに突き出ているかを判定する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、標高や勾配や斜面方位や斜面型などを指標として、コンピュータ上にて、地形分類を行うための地形データ処理方法及びその装置に関するものである。
本発明により取得される山地地域の地形分類図は、地すべり、岩屑なだれ、雪崩などの深刻な被害をもたらす現象を解析し、予測する上で、基礎資料となる。具体的には、近年、地方自治体等が行っている、災害時に住民の避難活動を支援するハザードマップの作成に活用できる。
【背景技術】
【0002】
地形分類図は、伝統的に、地形図(等高線図)をベースにして、写真判読などをはじめとする手作業で作成されてきた。このため、データを正確に解析するためには多大の労力を要し、膨大なコストがかかるという問題があった。また、人間による手作業のため、個人差や見落としなどが存在した。この解決策として、日本全国をカバーする数値地図50mメッシュ(標高)などを用いて、地形特徴の把握、数値地形計測及び流域解析等をコンピュータ上で行う手法が開発されている。均一に配置された標高グリッドデータを使用し、同一の手法を用いて計算を行うことにより、客観的、かつ、広範囲の地形解析を、自動的に短時間に行うことが可能である。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記標高グリッドデータは、コンピュータ処理に適していて処理速度を格段に向上できる反面、等高線データなどを基に作成されることが多く、グリッド化された時点でデータが等間隔に分断されてしまうことから、データや情報量が落ちる。したがって、谷線や尾根線のような斜面の境界を考慮した計算を行うことが難しい。
【0004】
しかし、標高グリッドデータの基データとして使われることが多い等高線データをそのまま使用することにより、等高線が持つ情報にしたがって忠実に斜面を分類することが可能であり、その際、使用する等高線で表現された谷や尾根を考慮した、手作業による分類を再現することができる。
本発明は、上記従来の実情に鑑みてなされたもので、その目的とするところは、従来手作業で実現していた専門家レベルの解析精度を維持しつつ、コンピュータ処理可能な新規の地形データ処理方法及びその装置を提供すること、及び、デジタル化した等高線データから落水線データを生成し、生成した落水線データを利用してコンピュータ処理可能な地形データ処理方法を提供することにある。
これらの処理方法により、地形分類図作業の一部工程が自動化され、作成作業の効率化が図られるものである。
【課題を解決するための手段】
【0005】
本発明は上記目的を達成するために、請求項1に係る発明は、 コンピュータのCPUが、等高線データに対し、その左右どちら側の標高が高いか、前記等高線データが左右どちら側に突き出すかを判定し、等高線データに沿って、斜面の水平断面形を分類する地形データ処理方法であって、該地形データ処理方法は、任意の等高線データのデータ点である参照点において、前記等高線データの隣に位置し、かつ、該等高線データより標高が1ランク低いか1ランク高い等高線の線分が存在するとき、前記参照点から前記標高が1ランク低いか1ランク高い等高線データへの最短距離の線を引いて交点を求める第1のステップと、前記参照点を含む前記任意の等高線データにおいて、前記参照点を始点としそれより等高線データのデータ点の番号を示すポイント番号が一つ小さいデータ点を終点とするベクターと同じ向きを持つベクターγと、前記参照点を始点とし前記交点を終点とするベクターと同じ向きを持つベクターβ、β´との外積、及び前記ベクターβ、β´と、前記参照点を始点としそれより前記ポイント番号が一つ大きいデータ点を終点とするベクターと同じ向きを持つベクターαとの外積を演算し、前記ベクターの両外積がともに正であるとき、前記交点は等高線データの右側に位置し、前記ベクターの両外積がともに負であるとき、前記交点は等高線データの左側に位置すると判断する第2のステップと、前記参照点より前記ポイント番号が一つ小さいデータ点から参照点までのベクターと前記参照点より前記ポイント番号が一つ大きいデータ点までのベクターとが成す角度が所定値以下である場合、直線状であると判定させ、該角度が所定値を超過する場合においては、前記参照点より前記ポイント番号が一つ小さいデータ点を始点とし、参照点を終点とするベクターと同じ向きを持つベクターδと、前記ベクターγとの外積が正負いずれかによって、参照点が等高線データの左右どちらに突き出ているかを判定する第3のステップとを含み、前記コンピュータのCPUは、前記参照点が前記任意の等高線データの最後のデータ点の1つ前に達するまで前記第1乃至第3のステップを繰り返し実行し、前記参照点が選択した等高線データの最後のデータ点の1つ前に達したとき、次順の等高線データを選択させて前記第1乃至第3のステップを繰り返し実行させることにより、前記第1乃至第2のステップによる、隣りに位置する等高線データは前記選択した等高線データの左右どちら側に位置し、いずれの標高が高いかの判定結果と、前記第3のステップによる、等高線データが等高線データの左右どちら側に突き出るか直線状かの判定結果とにより、等高線データの最初と最後のデータ点を除く全データ点について、斜面が直線状か谷型か尾根型かについての斜面の水平断面形を分類する地形データ処理方法とした。
【実施例】
【0006】
以下、本発明の具体例として、主として段落0018乃至段落0023において実施例を述べるが本発明はこの実施例に限定されるものではない。
《データ構造》
本発明は、等高線データに基づいて落水線データを生成するものである。
そこで先ず、等高線データのデータ構造について説明する。
図2は、等高線データのイメージ図である。この図において、等高線の四角内の数字はライン番号を、同じく円内の数字はポイント番号を示している。
図2(B)は、等高線データのデータ構造を示すもので、記憶装置のデータ領域であるデータファイルは、x座標とy座標(平面位置)のデータを格納するxyファイルと、z座標(標高)のデータを格納するzファイルに分けられており、各ファイルには、前記ライン番号、ポイント番号、END記号が格納されている。
【0007】
《落水線データ生成処理(その1)》
落水線は等高線と直交しながら、最大傾斜方向へ下る線である。このため、落水線は決して尾根や谷を横切ることはない。したがって、落水線の作成は、地形特徴を得るために行う最初に行う最も基本的な処理である。
【0008】
以下、請求項1に係る発明の1実施例について詳細に説明する。
CPUは、記憶装置に記憶された解析対象地域における等高線データの全てを読み込み、該等高線データのうち、ライン番号が最も小さいものを選択し、その等高線データの最初のデータ点から落水線データの作成を開始する。
【0009】
以下、落水線データ生成プログラムのフローチャートを図11を参照して説明する。
CPUは、ステップ101において等高線データ全てを記憶装置から読み込み、次のステップ102で最初にライン番号がnである等高線データをMn、Mnのnn番目のデータ点をmnn、作成する落水線データの落水線番号をs、落水線番号sである落水線データをWs、Wsのss番目の点をwssとし、次のステップで点aから落水線の線分を下方に向けて引くとき、aを起点mとする。
n,s,nnに1をデータセットしてm=mnnと定義したうえで、ssに1をデータセットする(ステップ104〜107)。
次いで、ステップ108〜109において、当該等高線データMnより標高が1ランク低い等高線データがあり、かつ、Mnより低い等高線データのデータ点が前記起点mの半径R以内にあるとき、標高が1ランク低い等高線データの全てのデータ点のうち、起点mから所定半径R以内に存在するデータ点を全て選択し、選択した全てのデータ点(以下「選択点」という。)にフラグ1を立てる(ステップ110)。
ステップ108において、当該等高線データMnより標高が1ランク低い等高線データがないとき、および、ステップ109において、Mnより低い等高線データのデータ点が起点mの半径R以内にないときは、その起点は落水線データの終点であって、mから落水線の線分を下方へ引くことはできないから、次のデータ点を選択(nn=nn+1)(ステップ150)して、ステップ106に戻る。
上記の所定半径Rは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Rは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、R=150mとした(1:25,000地形図上では6mmとなる)。Rの選択は、計算時間に影響するので重要である。
【0010】
CPUは、前記選択点と前記起点mの距離を演算(ステップ111)し、最も距離が短い選択点をデータ点t1とし、該データ点t1を含む等高線データをデータ線分Tとする(ステップ112)とともに、起点mから半径R以内に存在する全てのデータ点を含む、同じ等高線データ上の連続する二つのデータ点をつなぐ線分(以下「等高線の線分」という。)」を選択する(ステップ113)。
以下、データ点t1において、等高線データMnの隣りに位置し、かつ、Mnのより標高が1ランク低い等高線データを捜す。
すなわち、選択されたこれらの等高線の線分(以下「仮線分」という。)を用いて、標高が1ランク低い等高線データTが選択された等高線データMnの隣りに存在するかどうかを調べる。
t1がMnの隣りの等高線データのデータ点であれば、線分mt1はどの仮線分とも交差することはない(図3、A)。
しかし、t1がMnの隣りの等高線データのデータ点でないならば、線分mt1は上記したいずれかの仮線分と交差する(図3、B1)。
よって、ステップ114において、線分mt1が仮線分と交差すると判断されたときは、t1を選択点の中から除去して(ステップ116)、他に選択点がある限り(ステップ117)ステップ112に戻ってt1の次に起点mに近い点t2を選んで、ステップ113、114に進んでこの処理を繰り返す。ステップ117において他に選択点がないときは、前述した手順でステップ106に戻る。
このとき、全ての選択点を用いても標高が1ランク低い等高線データを決定できない場合は、データ点mを落水線データの終点とする。
【0011】
一方、線分mt1が仮線分と交差しないと判断されたときは、等高線データTは等高線データMnの隣りに存在するものとして、
T=Q、t1=qjとする(qjはQのj番目のデータ点)。
このとき、k=j.kk=jとし、データ点qjの前後のデータ点についても、仮線分と交差するか否か調べるために、
min=j−5(但し、j−5<0ならmin=1)とし、
max=j+5(但し、j+5>[Qのポイント番号の最大値]なら、max=[Qのポイント番号の最大値])とする(ステップ115)。
次いで、起点mと1ランク下の隣に位置する等高線データQのデータ点qjの前後(この例では、前後5つずつ)のデータ点との線分(qj+5....qj-5)は仮線分と交差するかについて調べ(ステップ123〜125,127〜129)、起点mと各データ点との線分が仮線分と交差しないものを落水線作成の先端点wの候補とする(ステップ126.130)。
さらに、起点mから、qk+1とqkを通る直線とqkk-1とqkkを通る直線に垂線をおろして交点をpk、pkkとし(ステップ134.140)、pk、pkkは線分qk+1qk、qkk+1qkkの上にあり、かつ、mpk、mpkkの線分は仮線分と交差しないものについて、落水線作成の先端点wの候補とする(ステップ137.143)。
そして、すべての先端点wの候補の中から起点mに最も近い点を落水線作成の先端点wとして選び、mとwを結んで落水線を生成し、生成した落水線データは、落水線データファイルに記憶される(ステップ146.147)。
【0012】
ここでさらに、1ランク下の隣に位置していた等高線データから落水線を生成するために、等高線データQをMnに、データ点wをmに置換し(ステップ148)、ssを1インクリメントしてステップ108に戻り、ステップ109からステップ149までの処理を繰り返し、落水線の終点に到達するまで落水線を生成し続ける。
そして落水線の終点まで到達したら、再度ステップ150において、nnを1インクリメントして、次のデータ点から落水線の終点に到達するまで落水線データを生成する。
当該等高線データの最後のデータ点からの落水線データの生成が終了した(ステップ121)ら、nを1インクリメントして、Mnの最初のデータ点から落水線データを生成し、順次この処理を実行し、ライン番号が最大のデータに到達したとき落水線データの生成を終了する。
本実施例では、落水線データの発生源である起点を等高線線分データのデータ点としているが、これに限ることなく、等高線線分データの点、例えば中間点であってもよいこと勿論である。
また、落水線データの先端点を選定するに際し、起点mから所定半径R以内に存在するデータ点としたが、mからの距離が短い順に所定数としてもよく、要するに、起点からの距離が短いものが優先的に選ばれたデータ点を選択点として選定すればよい。
【0013】
《落水線データ生成(その2)》
本発明は、上記した落水線データ生成(その1)のように落水線データを重複して生成することなく、落水線データの生成時間を短縮することを目的として創作されたものである。
このため本発明は、等高線データの全データ点に、fall_i[等高線データのライン番号][等高線データのポイント番号]=−1(既成の落水線が存在するときに、その落水線番号を入れる)と、fall_
j[等高線データのライン番号][等高線データのポイント番号]=−1(その点から落水線を引けないときは−10,既成の落水線が存在するときは、その点での落水線のポイント番号を入れる)という属性を与える(ステップ203)点に特徴がある。
このことにより、既に落水線データを生成したか否か、又は、生成しようとして不可能であったか否かを判別できるようにする。
【0014】
図13のフローチャートを参照して、本実施例について説明する。
CPUは、ステップ201において等高線データ全てを読み込み、次のステップ202で最初にライン番号がnである等高線データをMn、Mnのnn番目のデータ点をmnn、作成する落水線データの落水線番号をs、落水線番号sである落水線データをWs、Wsのss番目の点をwssとする。
ステップ203では、等高線データの全データ点に上述の属性を与える。
次のステップ204で、点aから落水線の線分を下方に向けて引くとき、aを起点mとする。
次いで、n,s,nnに順次1をデータセットしてm=mnnと定義したうえで、ss=1とデータセットする(ステップ205〜208)。
【0015】
本実施例の特徴的な部分として、ステップ209において、落水線データのライン番号が正であるか否か、そして、ステップ210において、落水線データ生成手段が落水線データを生成しようとして不可能であったか否かを判断する。
このステップ209,210により、既に落水線データが生成されているか否かが判断される。
このとき、当該データ点mを起点とする落水線データが既に生成されていたら、新たに落水線データを生成することなく、ステップ211に移り、落水線データのポイント番号が1であるか否か判断し、1でなければ落水線データのライン番号を1繰り上げ(ステップ212)、次にステップ213において、mがMnの終点であるか否か判断し、終点でなければ、次のデータ点を選択(nn=nn+1)(ステップ214)してステップ207に戻る。mがMnの終点であれば、Mnがライン番号最大の等高線データか否か判断し、Mnがライン番号最大の等高線データでなければ、次の等高線データを選択(n=n+1)(ステップ216)してステップ206に戻り、Mnがライン番号最大の等高線データであれば、落水線データの生成処理を終了する。
【0016】
前記ステップ210において、落水線データのポイント番号が−10であるか否かを判断する。この属性−10については後述するが、既に、mから落水線データを延長させようとして不可能であった、換言すれば、当該データ点は落水線の終点であると判断されるので、mを始点とする落水線線分データは発生させないで、次のステップ211に移る。
落水線データのポイント番号が−10でないときは、mを落水線データW(落水線番号s)の発生点とする。このとき、mはWのss番目の点(初期値ss=1)となる(ステップ208)。
【0017】
次いで、ステップ217において、当該等高線データMnより標高が1ランク低い等高線データはあるか否か判断し、なければ、当該落水線データの終点であると判断されるから、ステップ266において、落水線データのポイント番号として−10という属性を付与して、次のデータ点を選択(nn=nn+1)(ステップ214)してステップ207に戻る。
ステップ217以降、等高線QをMに、wをmに置き換えるステップ252までの処理は、前記第1の実施例と同一であるので、説明を省略する。ステップ251において、見つかった落水線の端点wを書き出し、wが既成の等高線のデータ点であるか否かを判定し(ステップ254)、否であれば、ステップ217に戻って次の落水線データの生成処理に入る。否でなければ、現在作成中の落水線が既成の落水線に合流したか否かを判定するため、ステップ255の処理へ進み、落水線データのポイント番号が−10か、また落水線データのライン番号が−1か否か判断し、−10であれば、mは終点(ステップ265)であり、−1であれば、ステップ217に戻り落水線データの生成処理に入る。
前記ステップ256において、fall_i[i][ii]が−1でないときは、miiを通る落水線データが既に存在する。そして、miiはfall_i[
i ] [ ii ]番目の落水線データのfall_j[i][ii]番目の点である(ステップ258)。
このときは、この落水線データ点にWsに、当該データ点mから既に生成された落水線データのfall_j[i][ii]+1番目の点から終点までを接続する(ステップ258)。
次いでステップ259において、Wの始点からss−1番目の点について調べる(図14)。
ライン番号rの等高線データMrのrr番目のデータ点mrrと一致する(ステップ260)点については、等高線データのデータ点に、fall_i[r][rr]=Wsでのライン番号s、fall_j[r][rr]=Wsでのポイント番号、という属性を与える。すなわち、ステップ203においてfall_i[n][nn],fall_j[n][nn]に付与した属性−1を、落水線データWsでのライン番号とポイント番号に書き換える。
なお、ステップ248において、wの候補が全く存在しないときは、ステップ266の処理をした上で、ステップ211に戻る。
また、ステップ256において、落水線データのライン番号が−1であるときは、落水線データは存在しないのであるから、ステップ217に進む。
さらに、ステップ255において、落水線データのポイント番号が−10であるときは、既にmから落水線データを延長させようとして不可能であったので、mを落水線データWの終点として、前述のステップ259、及びステップ260〜264の処理をし、ステップ213へ戻る。
当該等高線データの最後のデータ点からの落水線データの生成が終了したら、次のライン番号の等高線データの最初のデータ点から落水線データを生成し、順次この処理を実行し、ライン番号が最大の等高線データに到達したときコンピュータによる落水線データの生成を終了する。
段落0007において前述したとおり、落水線の作成は、地形特徴を得るために行う最初に行う最も基本的な処理であり、本発明はこの処理に引き続き各種の処理を実行するものである。
【0018】
《水平断面形の分類》
請求項1に係る発明の斜面の水平断面形の分類を行うためには、等高線が、標高の高い等高線と低い等高線のどちらに向かって突き出ているのかを知る必要がある。
このため先ず、等高線データMの左右どちらの側に、標高の低いあるいは高い隣に位置する等高線データが存在するのかを判別しなければならない。
さらに、斜面の水平断面形は、等高線の形状によって分類されることから、曲線の変曲点が、水平断面形を分ける点になる。従来、変曲点を捜すためにデータ点を通る曲線を近似し、この曲線に沿って変曲点を求めていたが、これでは解析に要する時間が膨大になるため、本発明者らは、等高線データを用いた、より簡単な解析手法を開発した。
したがって本発明は、等高線がそれよりも1ランク低いあるいは高い等高線の左右どちらの側に位置するかについての位置関係を特定する手法と、前記変曲点間にある等高線の線分が直線状か、尾根型か、谷型かを判別する手法と、から構成されている。
【0019】
そこで以下、請求項1に係る発明の1実施例について詳細に説明する。
まず、本発明では、等高線データMの向きは、データ番号が大きくなる向きと定める(図2)ことから、例えば図2において、ライン番号1の等高線データを基準とするとき、ライン番号4の等高線データは左側に存在する。
また、本発明では、等高線データMを基準とするとき、その左右の等高線データのいずれが高いか(あるいは、低いか)を表すための属性としてJを用いる。J=1であるときは、等高線データMの左側の標高が高い(または、右側の標高が低い)。J=2であるときは、等高線データMの左側の標高が低い(または、右側の標高が高い)。
図8により、等高線データMにおいて、連続する二つの線分αj-1、αjの外積が負であるとき、その中点mjは左側に突き出し、正であるときは、その中点mjは右側に突き出す。
このとき、等高線データMの等高線の右隣(あるいは左隣)の等高線が等高線データMに対して低いか(あるいは高いか)が判かれば、中点mjにおける水平断面形が決定される。
【0020】
(1ランク低い等高線データとの位置関係…チェック1)
図15、16を参照して、ステップ301において、等高線データを読み込み、等高線データM(ライン番号i)のj番目のデータ点をmj、j−1番目のデータ点をmj-1、j+1番目のデータ点をmj+1とおく。このとき、カウンタの値、count=0とする。
次のステップ302で、等高線データMの参照点mjにおいて、Mの隣に位置し、かつ、Mより標高が1ランク低い等高線データKを、段落0010〜0011の手法を用いて捜す。
先ず、等高線データKが等高線データMの左右どちらの側に位置するかを調べ、次いで、1ランク高い等高線データHが等高線データMの左右どちらの側に位置するかを調べる。
以下、具体的に説明する。
ステップ304において、参照点mjから等高線データKへの最短距離の線を引き、この線とKとの交点をkとする。もし、点kが存在しない場合は、Kの位置を判断できないため、ステップ316へジャンプし、参照等高線データMの参照点において、隣に位置し、かつ、より標高が高い等高線データHを捜し(ステップ317)、参照点mjから等高線データHへの最短距離の線を引き、この線とHとの交点をhとする(ステップ318)。
参照点mjからmj+1、mj-1、kまでのベクターをそれぞれα、γ、βとし(図5)、等高線データのx座標とy座標の値のみを用いて(Z=0とし)、外積γ×βとβ×αを計算する(ステップ306)。ステップ307において、γ×β>0、かつ、β×α>0であると判断されたとき、点kは等高線データMの右側に位置し、図5のように、等高線データMの右側が低いことになるから、Jのカウンタを+1して(ステップ309)J[1]=1とする(ステップ310)。
また、もし、ステップ311においてγ×β<0、かつ、β×α<0であると判断されたとき、点kは等高線データMの左側に位置し、等高線データMの左側が低いことになる(ステップ311)から、Jのカウンタを+1して(ステップ313)J[1]=2とする(ステップ314)。
(γ×β>0、かつ、β×α<0)、あるいは、(γ×β<0、かつ、β×α>0)、あるいは、γ×β=0あるいは、β×α=0であるとき、点kは判断には適さない点であるので、ステップ316へジャンプして、次のチェック2に移る。
【0021】
(1ランク高い等高線データとの位置関係…チェック2)
Mの隣に位置し、かつ、Mより標高が高い等高線データHとHへの最短距離の線との交点hを使用することを除き、1ランク低い等高線データとの位置関係のチェックと同じ処理を行う。すなわち、ステップ316〜329において、等高線データHがMの左右どちらの側に位置するかを調べる。
参照点mjからhまでのベクターをβ'とし、等高線データx座標とy座標の値のみを用いて(Z=0とし)、外積γ×β'とβ'×αを計算する(図5)。
ステップ321においてγ×β'>0、かつ、β'×α>0であるとき、点hは等高線データMの右側に位置し、等高線データMの右側が高いことになる。このときは、J[1]=2とする(ステップ324)。
また、もし、γ×β'<0、かつ、β'×α<0である(ステップ325)とき、点hは等高線データMの左側に位置し、図5のように、等高線データMの左側が高いことになる。このときは、J[1]=1とする(ステップ328)。
(γ×β'>0、かつ、β'×α<0)、あるいは、(γ×β'<0、かつ、β'×α>0)、あるいは、γ×β'=0あるいは、β'×α=0であるとき、点hは判断には適さない点であるので、ステップ330へジャンプする。
図15と16では、等高線データMとその隣に位置する等高線データとの相対的な位置関係を確認するために、参照点( mj=mj+1,mj+2,・・
)を変えながら、上記チェック1と上記チェック2の処理を3回繰り返す。このとき、チェック回数は前記カウンタの値として記録される。
その後、前記3回のチェックの結果得られた等高線位置データJ[1]、J[2]、J[3]の値が、全て一致しているとき、これを等高線データのデータ領域に位置情報についての属性として書き出す。一致しないときは、データ点が等高線データの終点に到達するまでに一定数確保できる場合は、前記チェック1、2を最初からやり直す。チェック1(またはチェック2)における判定を1回行えば、二つの等高線データの相対位置関係が決まる。チェック1またはチェック2の判定の回数が増えれば判定結果の正確さが増す。
【0022】
なおこの実施例では、データ点が等高線データの終点に到達するまでに一定数確保できない場合は、一致するデータを1、2番目のカウンタの等高線位置データJ[1]、J[2]とし、J[3]のデータを取り直す。また、次のデータ点が等高線データの終点である場合は、前記3回のチェックの結果得られた等高線位置データJ[1]、J[2]、J[3]の値のうち一致するものを、等高線データファイルに、属性として位置情報を書き出すこととしている。
なお、前記位置情報の内容は、等高線の右側が低いか、左側が高いとき、1、等高線の右側が高いか、左側が低いとき、2としている。
この実施例では、各等高線データの二番目のデータ点からチェックが開始され、参照点を変えながら、3回同じ位置関係が認められたとき、その位置関係を正として受け入れるようにしているが、チェック開始データ点、実施回数は特にこれに限定されない。
【0023】
《水平断面形の判定》
図17のステップ361において、記憶装置に記憶された等高線データ及び各等高線データの位置情報Jの値、すなわち、1か2を読み込む。
次のステップ362で、直線斜面を作業者が目的に応じて定義するγ°を入力する。この実施例ではγ°を5°としている。
次のステップ364で、等高線データMのデータ点mjにおいて、データ点mjからデータ点mj+1へ向かうベクターをαjとおくとき、等高線データMの全てのデータ点において、αj-1とαjの成す角θjと、外積αj-1×αjを計算する(図7参照。ステップ364)。但し、Mの始点と終点では計算しない。
もし、点mj+1での外積の符号が、点mjでの外積の符号と異なる場合は、点mjとmj+1との中点を変曲点とし、等高線データMに新たなデータ点として加える。
次いで、元の等高線データMの全てのデータ点において、斜面の水平断面形を判定する。
等高線データMの両側に、等高線データHとKが存在するとき、等高線データH、M、Kの標高をそれぞれ、EH、EM、EKとする(EH≧EM≧EK。ただし、EH=EM=EKである場合は除く。)。このとき、αj-1×αj<0であれば、ラインmj-1
mj mj+1は等高線データMの左側に突き出る(図8A)。また、αj-1×αj>0であれば、ラインmj-1
mj mj+1は等高線データMの右側に突き出る(図8B)。
もし、外積αj-1×αj=0である場合は、mj-1 mj mj+1は直線であり、ベクターαj-1とαjの角θjは0°に等しい(0°≦θ<180°)。
点mjにおける斜面の水平断面形は、下記の要領で分類される。
ケース1.αj-1×αj =0(θ=0°):直線(等斉)斜面
ケース2.αj-1×αj<0(左側に突き出る) かつ 等高線データH(K)が等高線データMの左(右)側に位置する(J=1):集水(谷型)斜面(図8A)
ケース3.αj-1×αj <0(左側に突き出る) かつ 等高線データH(K)が等高線データMの右(左)側に位置する(J=2):発散(尾根型)斜面(図8A)
ケース4.αj-1×αj >0(右側に突き出る) かつ 等高線データH(K)が等高線データMの左(右)側に位置する(J=1):発散斜面(図8B)
ケース5.αj-1×αj>0(右側に突き出る) かつ 等高線データH(K)が等高線データMの右(左)側に位置する(J=2):集水斜面(図8B)
計算上、θj = 0°となることはまれであるから、直線斜面を定義するγに対して、幅を持たせる必要があるため、本実施例では、±5°で計算している。
【0024】
《勾配と斜面方位の計算》
図6のように、勾配と斜面方位を得るための単位は、落水線の線分wjwj+1あるいはwj-1wjである。勾配εjは線分wjwj+1と水平面が成す角であり(図6A)、斜面方位ωjは、北と線分wjwj+1が成す角である(図6B)。
角εjとωjは、属性として、落水線の線分wjwj+1に付与される。
【0025】
《斜面の垂直断面形の分類》
斜面の垂直断面形は連続する、演算によって得られる二つの落水線の線分wj-1wjとwjwj+1との勾配の変化によって、分類することが出来る(図6A)。角δj(0°<δj≦180°)は、落水線の線分wj-1wjとwjwj+1が水平面上で成す角である(図6B)。δj<90°である場合は、斜面の垂直断面形を計測するラインとしては不適当であるので、このラインは使用しない。点vj+1は点wjとwj+1との中点であり、線分vj-1wjvjは斜面の垂直断面形の一単位である。角τj、δj、εj、εj-1は、属性として、ラインvj-1wjvjに付与される。斜面の垂直断面形は、三つの基本的な型−τj=180°(等斉斜面)、τj>180°(凹型斜面)、τj<180°(凸型斜面)−に分類することが出来る。しかし、実際は、厳密にτj=180°となる斜面はほとんど存在しないことから、等斉斜面を決めるτjに対して、幅を持たせる必要がある。また、等高線の精度を考慮した場合、幅を持たせることは合理的である。
前提:標高が同じ二つの落水線データのデータ点の距離がd[m]以内(デフォルトは0.5[m])であるとき、二つの落水線データは合流するとする。
【0026】
《落水線データ用いた水系分類の方法》
本発明の落水線作成手法は、隣に位置する等高線、したがって標高の異なる等高線を直線でつなげることから、図3(B1)に示すように、屈曲の激しい部分では、落水線は途切れる。
このような部分は、全体からみるとわずかな数なので、現在、途切れた部分については、手作業でつなぐのが最も実用的である。
そこで、作成された落水線の中で、途切れている部分があれば、その部分を手作業でつないで落水線データを補正し、当該補正した落水線データを解析対象とする。
【0027】
水系については、本発明で、同一の終点に収束する落水線データは、同じ水系であると定義している。
実際には、標高が同一の2つの落水線の終点の平面距離がd [ m ] 以内であるとき、この2つの落水線は同一の終点に収束する、というように処理している。この実施例では、デフォルトはd=0.0
[ m ] としている。例えば、元データが1:25,000の等高線であり、図上0.1[ mm ]しか離れていない終点を同一としたいときは、d=2.5 [ m
]となる。このdは、本発明では解析者が目的に応じて入力するようにしてある。
また、最低f本以上の落水線が同一の終点を持つとき、これらの落水線が水系を形成する、としている。このfは、本発明を使って解析する人が目的に応じて入力するようにしてある。
ステップ501において、上記補正済みの落水線データを読み込み、全ての落水線データに−1という水系番号の属性を与える。
次のステップ502でkとsの初期値設定を行い、次のステップ503で、Wsの終点をwとし、sより落水線番号が大きい落水線データの中から、終点の標高がwと同じであり、wとの水平距離がd(使用者が決定)以内である落水線データを選ぶ。これらの落水線の総数が、f以上であるとき(ステップ504)、選ばれた落水線それぞれに同じ水系番号kを与える(ステップ505)。また、総数がfより小さい場合は、選ばれた落水線それぞれに−10という水系番号の属性を与える(ステップ506)。
sが最大の落水線番号(ステップ507)であれば終了、でなければ落水線番号に+1をする(ステップ508)。Wsの属性 が −10(ステップ509)であればステップ507へジャンプする。それ以外の場合、ステップ510においてWsの属性>
0の場合は同様にステップ507へジャンプする。満たさないものは、水系番号kに+1を与えステップ503へジャンプする。
以上の処理にて、落水線は水系毎に分類される。
水系番号毎(例えば、1,2,3,…)に、落水線の色を変えることにより、落水線をベースにして、分類された水系を表示、印刷することができ、視覚的に理解し易い水系図を作成することができる。
【図面の簡単な説明】
【0028】
【図1】斜面の形状(Dikau(1990)を変更)の分類図である。L,直線;V,凸;C,凹。太線はこれらの形状を三つのグループに分ける。(1)ともに直線;(2)一方が直線で、他方が曲線;(3)ともに曲線
【図2】等高線データ構造と形式を示す。
【図3】点qjの決定と点qjを見つけるときのエラーの例を示す。(A)t1は選択点の中で最もmに近く、等高線データTは等高線データMの隣に位置し、仮線分mt1はどの等高線とも交差しない。t4とt5は選択点ではない。B1)仮線分mt1は等高線データMと交差する。このエラーは等高線データMが屈曲している部分で、しばしば発生する。
【図4】点wの候補を捜す手順を示す。
【図5】等高線データMとMの隣のH(あるいはK)の関係を表す。
【図6】勾配と斜面方位の計算と斜面の垂直断面形の分類を示す。
【図7】斜面の水平断面形を分類する点を示す。
【図8】連続するベクターの外積によって得られる斜面の水平断面形を示す。
【図9】斜面の水平断面形の一単位を示す。
【図10】水平断面形の出力例。太線は尾根型、細線は谷型を示す。
【図11】落水線生成(その1)フローチャート
【図12】落水線生成(その1)フローチャートの続き
【図13】落水線生成(その2)フローチャート
【図14】落水線生成(その2)フローチャートの続き
【図15】水平断面形プログラムフローチャート
【図16】水平断面形プログラムフローチャートの続き
【図17】斜面の水平断面形の判定プログラムフローチャート
【図18】一単位ラインの属性解析プログラムフローチャート
【図19】垂直断面形のプログラムフローチャート
【図20】水系分類プログラムフローチャート
【技術分野】
【0001】
本発明は、標高や勾配や斜面方位や斜面型などを指標として、コンピュータ上にて、地形分類を行うための地形データ処理方法及びその装置に関するものである。
本発明により取得される山地地域の地形分類図は、地すべり、岩屑なだれ、雪崩などの深刻な被害をもたらす現象を解析し、予測する上で、基礎資料となる。具体的には、近年、地方自治体等が行っている、災害時に住民の避難活動を支援するハザードマップの作成に活用できる。
【背景技術】
【0002】
地形分類図は、伝統的に、地形図(等高線図)をベースにして、写真判読などをはじめとする手作業で作成されてきた。このため、データを正確に解析するためには多大の労力を要し、膨大なコストがかかるという問題があった。また、人間による手作業のため、個人差や見落としなどが存在した。この解決策として、日本全国をカバーする数値地図50mメッシュ(標高)などを用いて、地形特徴の把握、数値地形計測及び流域解析等をコンピュータ上で行う手法が開発されている。均一に配置された標高グリッドデータを使用し、同一の手法を用いて計算を行うことにより、客観的、かつ、広範囲の地形解析を、自動的に短時間に行うことが可能である。
【発明の開示】
【発明が解決しようとする課題】
【0003】
しかしながら、上記標高グリッドデータは、コンピュータ処理に適していて処理速度を格段に向上できる反面、等高線データなどを基に作成されることが多く、グリッド化された時点でデータが等間隔に分断されてしまうことから、データや情報量が落ちる。したがって、谷線や尾根線のような斜面の境界を考慮した計算を行うことが難しい。
【0004】
しかし、標高グリッドデータの基データとして使われることが多い等高線データをそのまま使用することにより、等高線が持つ情報にしたがって忠実に斜面を分類することが可能であり、その際、使用する等高線で表現された谷や尾根を考慮した、手作業による分類を再現することができる。
本発明は、上記従来の実情に鑑みてなされたもので、その目的とするところは、従来手作業で実現していた専門家レベルの解析精度を維持しつつ、コンピュータ処理可能な新規の地形データ処理方法及びその装置を提供すること、及び、デジタル化した等高線データから落水線データを生成し、生成した落水線データを利用してコンピュータ処理可能な地形データ処理方法を提供することにある。
これらの処理方法により、地形分類図作業の一部工程が自動化され、作成作業の効率化が図られるものである。
【課題を解決するための手段】
【0005】
本発明は上記目的を達成するために、請求項1に係る発明は、 コンピュータのCPUが、等高線データに対し、その左右どちら側の標高が高いか、前記等高線データが左右どちら側に突き出すかを判定し、等高線データに沿って、斜面の水平断面形を分類する地形データ処理方法であって、該地形データ処理方法は、任意の等高線データのデータ点である参照点において、前記等高線データの隣に位置し、かつ、該等高線データより標高が1ランク低いか1ランク高い等高線の線分が存在するとき、前記参照点から前記標高が1ランク低いか1ランク高い等高線データへの最短距離の線を引いて交点を求める第1のステップと、前記参照点を含む前記任意の等高線データにおいて、前記参照点を始点としそれより等高線データのデータ点の番号を示すポイント番号が一つ小さいデータ点を終点とするベクターと同じ向きを持つベクターγと、前記参照点を始点とし前記交点を終点とするベクターと同じ向きを持つベクターβ、β´との外積、及び前記ベクターβ、β´と、前記参照点を始点としそれより前記ポイント番号が一つ大きいデータ点を終点とするベクターと同じ向きを持つベクターαとの外積を演算し、前記ベクターの両外積がともに正であるとき、前記交点は等高線データの右側に位置し、前記ベクターの両外積がともに負であるとき、前記交点は等高線データの左側に位置すると判断する第2のステップと、前記参照点より前記ポイント番号が一つ小さいデータ点から参照点までのベクターと前記参照点より前記ポイント番号が一つ大きいデータ点までのベクターとが成す角度が所定値以下である場合、直線状であると判定させ、該角度が所定値を超過する場合においては、前記参照点より前記ポイント番号が一つ小さいデータ点を始点とし、参照点を終点とするベクターと同じ向きを持つベクターδと、前記ベクターγとの外積が正負いずれかによって、参照点が等高線データの左右どちらに突き出ているかを判定する第3のステップとを含み、前記コンピュータのCPUは、前記参照点が前記任意の等高線データの最後のデータ点の1つ前に達するまで前記第1乃至第3のステップを繰り返し実行し、前記参照点が選択した等高線データの最後のデータ点の1つ前に達したとき、次順の等高線データを選択させて前記第1乃至第3のステップを繰り返し実行させることにより、前記第1乃至第2のステップによる、隣りに位置する等高線データは前記選択した等高線データの左右どちら側に位置し、いずれの標高が高いかの判定結果と、前記第3のステップによる、等高線データが等高線データの左右どちら側に突き出るか直線状かの判定結果とにより、等高線データの最初と最後のデータ点を除く全データ点について、斜面が直線状か谷型か尾根型かについての斜面の水平断面形を分類する地形データ処理方法とした。
【実施例】
【0006】
以下、本発明の具体例として、主として段落0018乃至段落0023において実施例を述べるが本発明はこの実施例に限定されるものではない。
《データ構造》
本発明は、等高線データに基づいて落水線データを生成するものである。
そこで先ず、等高線データのデータ構造について説明する。
図2は、等高線データのイメージ図である。この図において、等高線の四角内の数字はライン番号を、同じく円内の数字はポイント番号を示している。
図2(B)は、等高線データのデータ構造を示すもので、記憶装置のデータ領域であるデータファイルは、x座標とy座標(平面位置)のデータを格納するxyファイルと、z座標(標高)のデータを格納するzファイルに分けられており、各ファイルには、前記ライン番号、ポイント番号、END記号が格納されている。
【0007】
《落水線データ生成処理(その1)》
落水線は等高線と直交しながら、最大傾斜方向へ下る線である。このため、落水線は決して尾根や谷を横切ることはない。したがって、落水線の作成は、地形特徴を得るために行う最初に行う最も基本的な処理である。
【0008】
以下、請求項1に係る発明の1実施例について詳細に説明する。
CPUは、記憶装置に記憶された解析対象地域における等高線データの全てを読み込み、該等高線データのうち、ライン番号が最も小さいものを選択し、その等高線データの最初のデータ点から落水線データの作成を開始する。
【0009】
以下、落水線データ生成プログラムのフローチャートを図11を参照して説明する。
CPUは、ステップ101において等高線データ全てを記憶装置から読み込み、次のステップ102で最初にライン番号がnである等高線データをMn、Mnのnn番目のデータ点をmnn、作成する落水線データの落水線番号をs、落水線番号sである落水線データをWs、Wsのss番目の点をwssとし、次のステップで点aから落水線の線分を下方に向けて引くとき、aを起点mとする。
n,s,nnに1をデータセットしてm=mnnと定義したうえで、ssに1をデータセットする(ステップ104〜107)。
次いで、ステップ108〜109において、当該等高線データMnより標高が1ランク低い等高線データがあり、かつ、Mnより低い等高線データのデータ点が前記起点mの半径R以内にあるとき、標高が1ランク低い等高線データの全てのデータ点のうち、起点mから所定半径R以内に存在するデータ点を全て選択し、選択した全てのデータ点(以下「選択点」という。)にフラグ1を立てる(ステップ110)。
ステップ108において、当該等高線データMnより標高が1ランク低い等高線データがないとき、および、ステップ109において、Mnより低い等高線データのデータ点が起点mの半径R以内にないときは、その起点は落水線データの終点であって、mから落水線の線分を下方へ引くことはできないから、次のデータ点を選択(nn=nn+1)(ステップ150)して、ステップ106に戻る。
上記の所定半径Rは、本実施例では、解析者が入力装置より設定可能とされている。
この所定半径Rは、解析対象地域に対して選定するものであり、等高線密度、得られたデータの精度等を考慮して選ぶ。山地地域を対象地域とする本実施例では、R=150mとした(1:25,000地形図上では6mmとなる)。Rの選択は、計算時間に影響するので重要である。
【0010】
CPUは、前記選択点と前記起点mの距離を演算(ステップ111)し、最も距離が短い選択点をデータ点t1とし、該データ点t1を含む等高線データをデータ線分Tとする(ステップ112)とともに、起点mから半径R以内に存在する全てのデータ点を含む、同じ等高線データ上の連続する二つのデータ点をつなぐ線分(以下「等高線の線分」という。)」を選択する(ステップ113)。
以下、データ点t1において、等高線データMnの隣りに位置し、かつ、Mnのより標高が1ランク低い等高線データを捜す。
すなわち、選択されたこれらの等高線の線分(以下「仮線分」という。)を用いて、標高が1ランク低い等高線データTが選択された等高線データMnの隣りに存在するかどうかを調べる。
t1がMnの隣りの等高線データのデータ点であれば、線分mt1はどの仮線分とも交差することはない(図3、A)。
しかし、t1がMnの隣りの等高線データのデータ点でないならば、線分mt1は上記したいずれかの仮線分と交差する(図3、B1)。
よって、ステップ114において、線分mt1が仮線分と交差すると判断されたときは、t1を選択点の中から除去して(ステップ116)、他に選択点がある限り(ステップ117)ステップ112に戻ってt1の次に起点mに近い点t2を選んで、ステップ113、114に進んでこの処理を繰り返す。ステップ117において他に選択点がないときは、前述した手順でステップ106に戻る。
このとき、全ての選択点を用いても標高が1ランク低い等高線データを決定できない場合は、データ点mを落水線データの終点とする。
【0011】
一方、線分mt1が仮線分と交差しないと判断されたときは、等高線データTは等高線データMnの隣りに存在するものとして、
T=Q、t1=qjとする(qjはQのj番目のデータ点)。
このとき、k=j.kk=jとし、データ点qjの前後のデータ点についても、仮線分と交差するか否か調べるために、
min=j−5(但し、j−5<0ならmin=1)とし、
max=j+5(但し、j+5>[Qのポイント番号の最大値]なら、max=[Qのポイント番号の最大値])とする(ステップ115)。
次いで、起点mと1ランク下の隣に位置する等高線データQのデータ点qjの前後(この例では、前後5つずつ)のデータ点との線分(qj+5....qj-5)は仮線分と交差するかについて調べ(ステップ123〜125,127〜129)、起点mと各データ点との線分が仮線分と交差しないものを落水線作成の先端点wの候補とする(ステップ126.130)。
さらに、起点mから、qk+1とqkを通る直線とqkk-1とqkkを通る直線に垂線をおろして交点をpk、pkkとし(ステップ134.140)、pk、pkkは線分qk+1qk、qkk+1qkkの上にあり、かつ、mpk、mpkkの線分は仮線分と交差しないものについて、落水線作成の先端点wの候補とする(ステップ137.143)。
そして、すべての先端点wの候補の中から起点mに最も近い点を落水線作成の先端点wとして選び、mとwを結んで落水線を生成し、生成した落水線データは、落水線データファイルに記憶される(ステップ146.147)。
【0012】
ここでさらに、1ランク下の隣に位置していた等高線データから落水線を生成するために、等高線データQをMnに、データ点wをmに置換し(ステップ148)、ssを1インクリメントしてステップ108に戻り、ステップ109からステップ149までの処理を繰り返し、落水線の終点に到達するまで落水線を生成し続ける。
そして落水線の終点まで到達したら、再度ステップ150において、nnを1インクリメントして、次のデータ点から落水線の終点に到達するまで落水線データを生成する。
当該等高線データの最後のデータ点からの落水線データの生成が終了した(ステップ121)ら、nを1インクリメントして、Mnの最初のデータ点から落水線データを生成し、順次この処理を実行し、ライン番号が最大のデータに到達したとき落水線データの生成を終了する。
本実施例では、落水線データの発生源である起点を等高線線分データのデータ点としているが、これに限ることなく、等高線線分データの点、例えば中間点であってもよいこと勿論である。
また、落水線データの先端点を選定するに際し、起点mから所定半径R以内に存在するデータ点としたが、mからの距離が短い順に所定数としてもよく、要するに、起点からの距離が短いものが優先的に選ばれたデータ点を選択点として選定すればよい。
【0013】
《落水線データ生成(その2)》
本発明は、上記した落水線データ生成(その1)のように落水線データを重複して生成することなく、落水線データの生成時間を短縮することを目的として創作されたものである。
このため本発明は、等高線データの全データ点に、fall_i[等高線データのライン番号][等高線データのポイント番号]=−1(既成の落水線が存在するときに、その落水線番号を入れる)と、fall_
j[等高線データのライン番号][等高線データのポイント番号]=−1(その点から落水線を引けないときは−10,既成の落水線が存在するときは、その点での落水線のポイント番号を入れる)という属性を与える(ステップ203)点に特徴がある。
このことにより、既に落水線データを生成したか否か、又は、生成しようとして不可能であったか否かを判別できるようにする。
【0014】
図13のフローチャートを参照して、本実施例について説明する。
CPUは、ステップ201において等高線データ全てを読み込み、次のステップ202で最初にライン番号がnである等高線データをMn、Mnのnn番目のデータ点をmnn、作成する落水線データの落水線番号をs、落水線番号sである落水線データをWs、Wsのss番目の点をwssとする。
ステップ203では、等高線データの全データ点に上述の属性を与える。
次のステップ204で、点aから落水線の線分を下方に向けて引くとき、aを起点mとする。
次いで、n,s,nnに順次1をデータセットしてm=mnnと定義したうえで、ss=1とデータセットする(ステップ205〜208)。
【0015】
本実施例の特徴的な部分として、ステップ209において、落水線データのライン番号が正であるか否か、そして、ステップ210において、落水線データ生成手段が落水線データを生成しようとして不可能であったか否かを判断する。
このステップ209,210により、既に落水線データが生成されているか否かが判断される。
このとき、当該データ点mを起点とする落水線データが既に生成されていたら、新たに落水線データを生成することなく、ステップ211に移り、落水線データのポイント番号が1であるか否か判断し、1でなければ落水線データのライン番号を1繰り上げ(ステップ212)、次にステップ213において、mがMnの終点であるか否か判断し、終点でなければ、次のデータ点を選択(nn=nn+1)(ステップ214)してステップ207に戻る。mがMnの終点であれば、Mnがライン番号最大の等高線データか否か判断し、Mnがライン番号最大の等高線データでなければ、次の等高線データを選択(n=n+1)(ステップ216)してステップ206に戻り、Mnがライン番号最大の等高線データであれば、落水線データの生成処理を終了する。
【0016】
前記ステップ210において、落水線データのポイント番号が−10であるか否かを判断する。この属性−10については後述するが、既に、mから落水線データを延長させようとして不可能であった、換言すれば、当該データ点は落水線の終点であると判断されるので、mを始点とする落水線線分データは発生させないで、次のステップ211に移る。
落水線データのポイント番号が−10でないときは、mを落水線データW(落水線番号s)の発生点とする。このとき、mはWのss番目の点(初期値ss=1)となる(ステップ208)。
【0017】
次いで、ステップ217において、当該等高線データMnより標高が1ランク低い等高線データはあるか否か判断し、なければ、当該落水線データの終点であると判断されるから、ステップ266において、落水線データのポイント番号として−10という属性を付与して、次のデータ点を選択(nn=nn+1)(ステップ214)してステップ207に戻る。
ステップ217以降、等高線QをMに、wをmに置き換えるステップ252までの処理は、前記第1の実施例と同一であるので、説明を省略する。ステップ251において、見つかった落水線の端点wを書き出し、wが既成の等高線のデータ点であるか否かを判定し(ステップ254)、否であれば、ステップ217に戻って次の落水線データの生成処理に入る。否でなければ、現在作成中の落水線が既成の落水線に合流したか否かを判定するため、ステップ255の処理へ進み、落水線データのポイント番号が−10か、また落水線データのライン番号が−1か否か判断し、−10であれば、mは終点(ステップ265)であり、−1であれば、ステップ217に戻り落水線データの生成処理に入る。
前記ステップ256において、fall_i[i][ii]が−1でないときは、miiを通る落水線データが既に存在する。そして、miiはfall_i[
i ] [ ii ]番目の落水線データのfall_j[i][ii]番目の点である(ステップ258)。
このときは、この落水線データ点にWsに、当該データ点mから既に生成された落水線データのfall_j[i][ii]+1番目の点から終点までを接続する(ステップ258)。
次いでステップ259において、Wの始点からss−1番目の点について調べる(図14)。
ライン番号rの等高線データMrのrr番目のデータ点mrrと一致する(ステップ260)点については、等高線データのデータ点に、fall_i[r][rr]=Wsでのライン番号s、fall_j[r][rr]=Wsでのポイント番号、という属性を与える。すなわち、ステップ203においてfall_i[n][nn],fall_j[n][nn]に付与した属性−1を、落水線データWsでのライン番号とポイント番号に書き換える。
なお、ステップ248において、wの候補が全く存在しないときは、ステップ266の処理をした上で、ステップ211に戻る。
また、ステップ256において、落水線データのライン番号が−1であるときは、落水線データは存在しないのであるから、ステップ217に進む。
さらに、ステップ255において、落水線データのポイント番号が−10であるときは、既にmから落水線データを延長させようとして不可能であったので、mを落水線データWの終点として、前述のステップ259、及びステップ260〜264の処理をし、ステップ213へ戻る。
当該等高線データの最後のデータ点からの落水線データの生成が終了したら、次のライン番号の等高線データの最初のデータ点から落水線データを生成し、順次この処理を実行し、ライン番号が最大の等高線データに到達したときコンピュータによる落水線データの生成を終了する。
段落0007において前述したとおり、落水線の作成は、地形特徴を得るために行う最初に行う最も基本的な処理であり、本発明はこの処理に引き続き各種の処理を実行するものである。
【0018】
《水平断面形の分類》
請求項1に係る発明の斜面の水平断面形の分類を行うためには、等高線が、標高の高い等高線と低い等高線のどちらに向かって突き出ているのかを知る必要がある。
このため先ず、等高線データMの左右どちらの側に、標高の低いあるいは高い隣に位置する等高線データが存在するのかを判別しなければならない。
さらに、斜面の水平断面形は、等高線の形状によって分類されることから、曲線の変曲点が、水平断面形を分ける点になる。従来、変曲点を捜すためにデータ点を通る曲線を近似し、この曲線に沿って変曲点を求めていたが、これでは解析に要する時間が膨大になるため、本発明者らは、等高線データを用いた、より簡単な解析手法を開発した。
したがって本発明は、等高線がそれよりも1ランク低いあるいは高い等高線の左右どちらの側に位置するかについての位置関係を特定する手法と、前記変曲点間にある等高線の線分が直線状か、尾根型か、谷型かを判別する手法と、から構成されている。
【0019】
そこで以下、請求項1に係る発明の1実施例について詳細に説明する。
まず、本発明では、等高線データMの向きは、データ番号が大きくなる向きと定める(図2)ことから、例えば図2において、ライン番号1の等高線データを基準とするとき、ライン番号4の等高線データは左側に存在する。
また、本発明では、等高線データMを基準とするとき、その左右の等高線データのいずれが高いか(あるいは、低いか)を表すための属性としてJを用いる。J=1であるときは、等高線データMの左側の標高が高い(または、右側の標高が低い)。J=2であるときは、等高線データMの左側の標高が低い(または、右側の標高が高い)。
図8により、等高線データMにおいて、連続する二つの線分αj-1、αjの外積が負であるとき、その中点mjは左側に突き出し、正であるときは、その中点mjは右側に突き出す。
このとき、等高線データMの等高線の右隣(あるいは左隣)の等高線が等高線データMに対して低いか(あるいは高いか)が判かれば、中点mjにおける水平断面形が決定される。
【0020】
(1ランク低い等高線データとの位置関係…チェック1)
図15、16を参照して、ステップ301において、等高線データを読み込み、等高線データM(ライン番号i)のj番目のデータ点をmj、j−1番目のデータ点をmj-1、j+1番目のデータ点をmj+1とおく。このとき、カウンタの値、count=0とする。
次のステップ302で、等高線データMの参照点mjにおいて、Mの隣に位置し、かつ、Mより標高が1ランク低い等高線データKを、段落0010〜0011の手法を用いて捜す。
先ず、等高線データKが等高線データMの左右どちらの側に位置するかを調べ、次いで、1ランク高い等高線データHが等高線データMの左右どちらの側に位置するかを調べる。
以下、具体的に説明する。
ステップ304において、参照点mjから等高線データKへの最短距離の線を引き、この線とKとの交点をkとする。もし、点kが存在しない場合は、Kの位置を判断できないため、ステップ316へジャンプし、参照等高線データMの参照点において、隣に位置し、かつ、より標高が高い等高線データHを捜し(ステップ317)、参照点mjから等高線データHへの最短距離の線を引き、この線とHとの交点をhとする(ステップ318)。
参照点mjからmj+1、mj-1、kまでのベクターをそれぞれα、γ、βとし(図5)、等高線データのx座標とy座標の値のみを用いて(Z=0とし)、外積γ×βとβ×αを計算する(ステップ306)。ステップ307において、γ×β>0、かつ、β×α>0であると判断されたとき、点kは等高線データMの右側に位置し、図5のように、等高線データMの右側が低いことになるから、Jのカウンタを+1して(ステップ309)J[1]=1とする(ステップ310)。
また、もし、ステップ311においてγ×β<0、かつ、β×α<0であると判断されたとき、点kは等高線データMの左側に位置し、等高線データMの左側が低いことになる(ステップ311)から、Jのカウンタを+1して(ステップ313)J[1]=2とする(ステップ314)。
(γ×β>0、かつ、β×α<0)、あるいは、(γ×β<0、かつ、β×α>0)、あるいは、γ×β=0あるいは、β×α=0であるとき、点kは判断には適さない点であるので、ステップ316へジャンプして、次のチェック2に移る。
【0021】
(1ランク高い等高線データとの位置関係…チェック2)
Mの隣に位置し、かつ、Mより標高が高い等高線データHとHへの最短距離の線との交点hを使用することを除き、1ランク低い等高線データとの位置関係のチェックと同じ処理を行う。すなわち、ステップ316〜329において、等高線データHがMの左右どちらの側に位置するかを調べる。
参照点mjからhまでのベクターをβ'とし、等高線データx座標とy座標の値のみを用いて(Z=0とし)、外積γ×β'とβ'×αを計算する(図5)。
ステップ321においてγ×β'>0、かつ、β'×α>0であるとき、点hは等高線データMの右側に位置し、等高線データMの右側が高いことになる。このときは、J[1]=2とする(ステップ324)。
また、もし、γ×β'<0、かつ、β'×α<0である(ステップ325)とき、点hは等高線データMの左側に位置し、図5のように、等高線データMの左側が高いことになる。このときは、J[1]=1とする(ステップ328)。
(γ×β'>0、かつ、β'×α<0)、あるいは、(γ×β'<0、かつ、β'×α>0)、あるいは、γ×β'=0あるいは、β'×α=0であるとき、点hは判断には適さない点であるので、ステップ330へジャンプする。
図15と16では、等高線データMとその隣に位置する等高線データとの相対的な位置関係を確認するために、参照点( mj=mj+1,mj+2,・・
)を変えながら、上記チェック1と上記チェック2の処理を3回繰り返す。このとき、チェック回数は前記カウンタの値として記録される。
その後、前記3回のチェックの結果得られた等高線位置データJ[1]、J[2]、J[3]の値が、全て一致しているとき、これを等高線データのデータ領域に位置情報についての属性として書き出す。一致しないときは、データ点が等高線データの終点に到達するまでに一定数確保できる場合は、前記チェック1、2を最初からやり直す。チェック1(またはチェック2)における判定を1回行えば、二つの等高線データの相対位置関係が決まる。チェック1またはチェック2の判定の回数が増えれば判定結果の正確さが増す。
【0022】
なおこの実施例では、データ点が等高線データの終点に到達するまでに一定数確保できない場合は、一致するデータを1、2番目のカウンタの等高線位置データJ[1]、J[2]とし、J[3]のデータを取り直す。また、次のデータ点が等高線データの終点である場合は、前記3回のチェックの結果得られた等高線位置データJ[1]、J[2]、J[3]の値のうち一致するものを、等高線データファイルに、属性として位置情報を書き出すこととしている。
なお、前記位置情報の内容は、等高線の右側が低いか、左側が高いとき、1、等高線の右側が高いか、左側が低いとき、2としている。
この実施例では、各等高線データの二番目のデータ点からチェックが開始され、参照点を変えながら、3回同じ位置関係が認められたとき、その位置関係を正として受け入れるようにしているが、チェック開始データ点、実施回数は特にこれに限定されない。
【0023】
《水平断面形の判定》
図17のステップ361において、記憶装置に記憶された等高線データ及び各等高線データの位置情報Jの値、すなわち、1か2を読み込む。
次のステップ362で、直線斜面を作業者が目的に応じて定義するγ°を入力する。この実施例ではγ°を5°としている。
次のステップ364で、等高線データMのデータ点mjにおいて、データ点mjからデータ点mj+1へ向かうベクターをαjとおくとき、等高線データMの全てのデータ点において、αj-1とαjの成す角θjと、外積αj-1×αjを計算する(図7参照。ステップ364)。但し、Mの始点と終点では計算しない。
もし、点mj+1での外積の符号が、点mjでの外積の符号と異なる場合は、点mjとmj+1との中点を変曲点とし、等高線データMに新たなデータ点として加える。
次いで、元の等高線データMの全てのデータ点において、斜面の水平断面形を判定する。
等高線データMの両側に、等高線データHとKが存在するとき、等高線データH、M、Kの標高をそれぞれ、EH、EM、EKとする(EH≧EM≧EK。ただし、EH=EM=EKである場合は除く。)。このとき、αj-1×αj<0であれば、ラインmj-1
mj mj+1は等高線データMの左側に突き出る(図8A)。また、αj-1×αj>0であれば、ラインmj-1
mj mj+1は等高線データMの右側に突き出る(図8B)。
もし、外積αj-1×αj=0である場合は、mj-1 mj mj+1は直線であり、ベクターαj-1とαjの角θjは0°に等しい(0°≦θ<180°)。
点mjにおける斜面の水平断面形は、下記の要領で分類される。
ケース1.αj-1×αj =0(θ=0°):直線(等斉)斜面
ケース2.αj-1×αj<0(左側に突き出る) かつ 等高線データH(K)が等高線データMの左(右)側に位置する(J=1):集水(谷型)斜面(図8A)
ケース3.αj-1×αj <0(左側に突き出る) かつ 等高線データH(K)が等高線データMの右(左)側に位置する(J=2):発散(尾根型)斜面(図8A)
ケース4.αj-1×αj >0(右側に突き出る) かつ 等高線データH(K)が等高線データMの左(右)側に位置する(J=1):発散斜面(図8B)
ケース5.αj-1×αj>0(右側に突き出る) かつ 等高線データH(K)が等高線データMの右(左)側に位置する(J=2):集水斜面(図8B)
計算上、θj = 0°となることはまれであるから、直線斜面を定義するγに対して、幅を持たせる必要があるため、本実施例では、±5°で計算している。
【0024】
《勾配と斜面方位の計算》
図6のように、勾配と斜面方位を得るための単位は、落水線の線分wjwj+1あるいはwj-1wjである。勾配εjは線分wjwj+1と水平面が成す角であり(図6A)、斜面方位ωjは、北と線分wjwj+1が成す角である(図6B)。
角εjとωjは、属性として、落水線の線分wjwj+1に付与される。
【0025】
《斜面の垂直断面形の分類》
斜面の垂直断面形は連続する、演算によって得られる二つの落水線の線分wj-1wjとwjwj+1との勾配の変化によって、分類することが出来る(図6A)。角δj(0°<δj≦180°)は、落水線の線分wj-1wjとwjwj+1が水平面上で成す角である(図6B)。δj<90°である場合は、斜面の垂直断面形を計測するラインとしては不適当であるので、このラインは使用しない。点vj+1は点wjとwj+1との中点であり、線分vj-1wjvjは斜面の垂直断面形の一単位である。角τj、δj、εj、εj-1は、属性として、ラインvj-1wjvjに付与される。斜面の垂直断面形は、三つの基本的な型−τj=180°(等斉斜面)、τj>180°(凹型斜面)、τj<180°(凸型斜面)−に分類することが出来る。しかし、実際は、厳密にτj=180°となる斜面はほとんど存在しないことから、等斉斜面を決めるτjに対して、幅を持たせる必要がある。また、等高線の精度を考慮した場合、幅を持たせることは合理的である。
前提:標高が同じ二つの落水線データのデータ点の距離がd[m]以内(デフォルトは0.5[m])であるとき、二つの落水線データは合流するとする。
【0026】
《落水線データ用いた水系分類の方法》
本発明の落水線作成手法は、隣に位置する等高線、したがって標高の異なる等高線を直線でつなげることから、図3(B1)に示すように、屈曲の激しい部分では、落水線は途切れる。
このような部分は、全体からみるとわずかな数なので、現在、途切れた部分については、手作業でつなぐのが最も実用的である。
そこで、作成された落水線の中で、途切れている部分があれば、その部分を手作業でつないで落水線データを補正し、当該補正した落水線データを解析対象とする。
【0027】
水系については、本発明で、同一の終点に収束する落水線データは、同じ水系であると定義している。
実際には、標高が同一の2つの落水線の終点の平面距離がd [ m ] 以内であるとき、この2つの落水線は同一の終点に収束する、というように処理している。この実施例では、デフォルトはd=0.0
[ m ] としている。例えば、元データが1:25,000の等高線であり、図上0.1[ mm ]しか離れていない終点を同一としたいときは、d=2.5 [ m
]となる。このdは、本発明では解析者が目的に応じて入力するようにしてある。
また、最低f本以上の落水線が同一の終点を持つとき、これらの落水線が水系を形成する、としている。このfは、本発明を使って解析する人が目的に応じて入力するようにしてある。
ステップ501において、上記補正済みの落水線データを読み込み、全ての落水線データに−1という水系番号の属性を与える。
次のステップ502でkとsの初期値設定を行い、次のステップ503で、Wsの終点をwとし、sより落水線番号が大きい落水線データの中から、終点の標高がwと同じであり、wとの水平距離がd(使用者が決定)以内である落水線データを選ぶ。これらの落水線の総数が、f以上であるとき(ステップ504)、選ばれた落水線それぞれに同じ水系番号kを与える(ステップ505)。また、総数がfより小さい場合は、選ばれた落水線それぞれに−10という水系番号の属性を与える(ステップ506)。
sが最大の落水線番号(ステップ507)であれば終了、でなければ落水線番号に+1をする(ステップ508)。Wsの属性 が −10(ステップ509)であればステップ507へジャンプする。それ以外の場合、ステップ510においてWsの属性>
0の場合は同様にステップ507へジャンプする。満たさないものは、水系番号kに+1を与えステップ503へジャンプする。
以上の処理にて、落水線は水系毎に分類される。
水系番号毎(例えば、1,2,3,…)に、落水線の色を変えることにより、落水線をベースにして、分類された水系を表示、印刷することができ、視覚的に理解し易い水系図を作成することができる。
【図面の簡単な説明】
【0028】
【図1】斜面の形状(Dikau(1990)を変更)の分類図である。L,直線;V,凸;C,凹。太線はこれらの形状を三つのグループに分ける。(1)ともに直線;(2)一方が直線で、他方が曲線;(3)ともに曲線
【図2】等高線データ構造と形式を示す。
【図3】点qjの決定と点qjを見つけるときのエラーの例を示す。(A)t1は選択点の中で最もmに近く、等高線データTは等高線データMの隣に位置し、仮線分mt1はどの等高線とも交差しない。t4とt5は選択点ではない。B1)仮線分mt1は等高線データMと交差する。このエラーは等高線データMが屈曲している部分で、しばしば発生する。
【図4】点wの候補を捜す手順を示す。
【図5】等高線データMとMの隣のH(あるいはK)の関係を表す。
【図6】勾配と斜面方位の計算と斜面の垂直断面形の分類を示す。
【図7】斜面の水平断面形を分類する点を示す。
【図8】連続するベクターの外積によって得られる斜面の水平断面形を示す。
【図9】斜面の水平断面形の一単位を示す。
【図10】水平断面形の出力例。太線は尾根型、細線は谷型を示す。
【図11】落水線生成(その1)フローチャート
【図12】落水線生成(その1)フローチャートの続き
【図13】落水線生成(その2)フローチャート
【図14】落水線生成(その2)フローチャートの続き
【図15】水平断面形プログラムフローチャート
【図16】水平断面形プログラムフローチャートの続き
【図17】斜面の水平断面形の判定プログラムフローチャート
【図18】一単位ラインの属性解析プログラムフローチャート
【図19】垂直断面形のプログラムフローチャート
【図20】水系分類プログラムフローチャート
【特許請求の範囲】
【請求項1】
コンピュータのCPUが、等高線データに対し、その左右どちら側の標高が高いか、前記等高線データが左右どちら側に突き出すかを判定し、等高線データに沿って、斜面の水平断面形を分類する地形データ処理方法であって、
該地形データ処理方法は、
任意の等高線データのデータ点である参照点において、前記等高線データの隣に位置し、かつ、該等高線データより標高が1ランク低いか1ランク高い等高線の線分が存在するとき、前記参照点から前記標高が1ランク低いか1ランク高い等高線データへの最短距離の線を引いて交点を求める第1のステップと、
前記参照点を含む前記任意の等高線データにおいて、前記参照点を始点としそれより等高線データのデータ点の番号を示すポイント番号が一つ小さいデータ点を終点とするベクターと同じ向きを持つベクターγと、前記参照点を始点とし前記交点を終点とするベクターと同じ向きを持つベクターβ、β´との外積、及び前記ベクターβ、β´と、前記参照点を始点としそれより前記ポイント番号が一つ大きいデータ点を終点とするベクターと同じ向きを持つベクターαとの外積を演算し、前記ベクターの両外積がともに正であるとき、前記交点は等高線データの右側に位置し、前記ベクターの両外積がともに負であるとき、前記交点は等高線データの左側に位置すると判断する第2のステップと、
前記参照点より前記ポイント番号が一つ小さいデータ点から参照点までのベクターと前記参照点より前記ポイント番号が一つ大きいデータ点までのベクターとが成す角度が所定値以下である場合、直線状であると判定し、該角度が所定値を超過する場合においては、前記参照点より前記ポイント番号が一つ小さいデータ点を始点とし、参照点を終点とするベクターと同じ向きを持つベクターδと、前記ベクターγとの外積が正負いずれかによって、参照点が等高線データの左右どちらに突き出ているかを判定する第3のステップとを含み、
前記コンピュータのCPUは、
前記参照点が前記任意の等高線データの最後のデータ点の1つ前に達するまで前記第1乃至第3のステップを繰り返し実行し、
前記参照点が選択した等高線データの最後のデータ点の1つ前に達したとき、次順の等高線データを選択して前記第1乃至第3のステップを繰り返し実行することにより、
前記第1乃至第2のステップによる、隣りに位置する等高線データは前記選択した等高線データの左右どちら側に位置し、いずれの標高が高いかの判定結果と、前記第3のステップによる、等高線データが等高線データの左右どちら側に突き出るか直線状かの判定結果とにより、
等高線データの最初と最後のデータ点を除く全データ点について、斜面が直線状か谷型か尾根型かについての斜面の水平断面形を分類する地形データ処理方法。
【請求項1】
コンピュータのCPUが、等高線データに対し、その左右どちら側の標高が高いか、前記等高線データが左右どちら側に突き出すかを判定し、等高線データに沿って、斜面の水平断面形を分類する地形データ処理方法であって、
該地形データ処理方法は、
任意の等高線データのデータ点である参照点において、前記等高線データの隣に位置し、かつ、該等高線データより標高が1ランク低いか1ランク高い等高線の線分が存在するとき、前記参照点から前記標高が1ランク低いか1ランク高い等高線データへの最短距離の線を引いて交点を求める第1のステップと、
前記参照点を含む前記任意の等高線データにおいて、前記参照点を始点としそれより等高線データのデータ点の番号を示すポイント番号が一つ小さいデータ点を終点とするベクターと同じ向きを持つベクターγと、前記参照点を始点とし前記交点を終点とするベクターと同じ向きを持つベクターβ、β´との外積、及び前記ベクターβ、β´と、前記参照点を始点としそれより前記ポイント番号が一つ大きいデータ点を終点とするベクターと同じ向きを持つベクターαとの外積を演算し、前記ベクターの両外積がともに正であるとき、前記交点は等高線データの右側に位置し、前記ベクターの両外積がともに負であるとき、前記交点は等高線データの左側に位置すると判断する第2のステップと、
前記参照点より前記ポイント番号が一つ小さいデータ点から参照点までのベクターと前記参照点より前記ポイント番号が一つ大きいデータ点までのベクターとが成す角度が所定値以下である場合、直線状であると判定し、該角度が所定値を超過する場合においては、前記参照点より前記ポイント番号が一つ小さいデータ点を始点とし、参照点を終点とするベクターと同じ向きを持つベクターδと、前記ベクターγとの外積が正負いずれかによって、参照点が等高線データの左右どちらに突き出ているかを判定する第3のステップとを含み、
前記コンピュータのCPUは、
前記参照点が前記任意の等高線データの最後のデータ点の1つ前に達するまで前記第1乃至第3のステップを繰り返し実行し、
前記参照点が選択した等高線データの最後のデータ点の1つ前に達したとき、次順の等高線データを選択して前記第1乃至第3のステップを繰り返し実行することにより、
前記第1乃至第2のステップによる、隣りに位置する等高線データは前記選択した等高線データの左右どちら側に位置し、いずれの標高が高いかの判定結果と、前記第3のステップによる、等高線データが等高線データの左右どちら側に突き出るか直線状かの判定結果とにより、
等高線データの最初と最後のデータ点を除く全データ点について、斜面が直線状か谷型か尾根型かについての斜面の水平断面形を分類する地形データ処理方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図18】
【図19】
【図20】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図18】
【図19】
【図20】
【図17】
【公開番号】特開2006−268053(P2006−268053A)
【公開日】平成18年10月5日(2006.10.5)
【国際特許分類】
【出願番号】特願2006−113924(P2006−113924)
【出願日】平成18年4月17日(2006.4.17)
【分割の表示】特願2002−225381(P2002−225381)の分割
【原出願日】平成14年6月28日(2002.6.28)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り
【出願人】(301042480)国土交通省国土地理院長 (12)
【Fターム(参考)】
【公開日】平成18年10月5日(2006.10.5)
【国際特許分類】
【出願日】平成18年4月17日(2006.4.17)
【分割の表示】特願2002−225381(P2002−225381)の分割
【原出願日】平成14年6月28日(2002.6.28)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り
【出願人】(301042480)国土交通省国土地理院長 (12)
【Fターム(参考)】
[ Back to top ]