降水レーダを用いた水文現象の予測手法に関する研 究
森山, 聡之
https://doi.org/10.11501/3065636
出版情報:Kyushu University, 1992, 博士(工学), 論文博士 バージョン:
権利関係:
第5章 降 水 レー ダ 情報データベース
第5. 1節 緒言
近年のリモートセンシング観測伎術の発達により、 点的情報から面的情報へと
気象情報が量的に増大している。 例えば、 気象 衛星の近赤外の画像により、 雲の
温度が得られるので雨雲の雲頂高度が推定できる。 これによりどれだけの高度ま
で雨雲が発達しているかを知ることが出来、 降雨 予 測計算時の入力データのーっ
となり得ると思われる。 現在のところ一般に公開されているのは、 ひまわりが観
測した画像を地上で加工し たものを、 再度ひまわりに送信し、 ひまわりからフ ァ
ックス画像として放送されているものである。 従ってこれを使って直接定量的な
予測処理は出来ないが、 近い将来通信技術の発達により定量データを直接取得出
来るようになると思われる。 ま たTRMM (熱帯降雨観測衛星)という赤道軌道衛
星を打ち上げ、 これに関口合成万式の降雨レー ダ を搭載して熱帯(赤道直下)か
ら西日本(主に梅雨がターゲット)までの緯度の降水を観測す る計画が進行中で
ある。
方、 第2章で述べたように建設省は全国に
17基以上のレー
ダ雨雪量計(以下レーダ雨量計)を配置し、 全国をカバーすべくさらに建設を進めていることは既
に述べている。 これらのデータも、 オンライン電話回線で希望者に配信す るサー
ビスを河川情報センターが行っている。 しかしこれも気象衛星による配信情報と
同じく、 絵情報の ため定性的なことはわかっても定量的な予測に使うのには無理
がある。 そこで河川情報センターは現在新システムとしてワークステーシ ョ ンを
端末として用い た定量データの配信可能なシステムの稼働を開始している。
また米国では既に気象 観測データのBBS (電子掲示板)サービスおよび
CR-ROMによる配布が始まっており、 定量的なデータを容易に入手し、 解析す る
5-1
vとが出来る。
さて、 降 水レーダが観測したデータはディジタル化されて、 磁気テープに収納 されている。 例えば九州北部レーダでは、 10日間で30MB程のデータになる。 こ れは記録磁気密度16∞BPIで長さ2400feetの磁気テープ1巻分であり、 1年間 に 36本
(容量にして9GB)程度のデータが蓄積されることになる。 この様な大量のデー タを効率良く処理するのは 容易ではないことは自明である。 特に磁気テープのよ うなシーケンシ ャルなデータの中から目指すデータをアクセスするには大量のデ ータを)1慣に読み込まねばならず、 H寺間や経費の点で膨大な無駄が出ることになる。
このため実際に解析に使用しているのは典型的な豪雨のデータをピ ックア ップし たものであり、 通常の降雨のデータはそのほとんどが磁気テープの形で死蔵され ているのが現状である。 そのうえ、 レーダデータは各レーダサイト毎に ばらばら のフォーマ ットで記録されているため、 これを解析しようとするとそれぞれのフ
ォーマ ットにあわせた解析プログラムが必斐となる。 これを各研究者毎に作成す るとなると 、 かなりの無駄な作業となり 、 また高価な磁気テープ読み取り装置が 必要となる。 レーダデータを共通化することはこのような 、 無駄な時間や費用を 削減するだけでなく、 各研究者が作成した降雨予測モデルや洪水予 測モデルの同
じデータによる比較検討が可能になり、 その相乗効果はかなりのものになろう。
そこで、 まずデータ交換が容易になるよう、 標準降水レーダデータフ ォーマ ッ トを提案する。 このフ ォーマ ッ トを読み出 して、 雨域の表示をし、 必要なデータ 形式へ変換する(例:極座標を直交座標に変換する)機能を付け加え、 さらに
RAPフォーマ ットを疑似データベースとして扱うための索引フ ァイル
RAP Indexも使用可能なプログラムRAPBrowser を作成する。 さらにRAPBrowserのプログラムから
得られたレーダ情報データを活則するために 、 得られた情報を2次元の画像と見5-2
なして、 画像処理の方法で降雨域の解析を行うプログラム IMPACTを作成する。
第5. 2章ではこれらのプログラムを開発した開発環境について記述する。 第
5.
3章では標準降水 レーダデータフォーマ ットについて詳述すると共に 、 降水 レーダ情報フォーマ ット用索引RAP lndexとプログラムRAP Browserについて概説する。第5. 4章では電話回線の輯鞍問題解決の各案を概説する。 第5 . 5章では画像
処理プログラム IMPACTについて詳述する。
テープ変換プログラム
Q � k
建設省レーダ雨量計データ
\、
Q 1換プロ「
ム
Q→| |
各大学噺究用レーダ
向 '--ーノ
標準
レーダデータ表示プログラム
RAP Browser
RAPインデックス(索51)ファイル
画像データ処理用プログラム
IMPACT
、、� 5.1
標準フォーマットによるデータの共通化(現在)
5-3
第5. 2節 プログラム開発環境について 第5. 2 . 1項 開発ハードウエア
使用したハードウエアはApple千上のMacintoshII (メインメモリ 8MB、 200MBハード ディスク)とカラーディスプレイである。 これに外部記憶装置としてlメディア
当り650MBの光磁気ディスク装置と、 磁気密度
6250/1600BPIを読み書き可能な磁
気テープ装置を使用している。
13inches hireso. Color Monitor
( )
MacintoshII 岱1BRAM 2∞MBHD
SCSI
Laser Writer II NTX-J
SCSI MODISK
650MB/Media
6250/l600BPI 2400feet
1/2inches Tape Drive
図5.2開発環境(ハードウエア)
プログラムを開発する場合、 コ ンピュータのハードウエアに依存したプログラ ムを作成しないと、 スピードの点で問題となり、 逆にハードウエアに依存す る部 分が大きいと別の機種でそのプログラムを移組実行する上でかなりの時間を取ら れることになり、 研 究者としての本質的な部分とかけ離れたところでのロスが馬 鹿にならなくなる。 従って 、 最初Jに動作させる コ ンピュータの開発環境の選定は 慎重にしなくてはならない。
5-4
最初は、 研 究室現有の PC-9801 の使用 を検討したが 、 メインメモリーが 640KB
に制限されており、 ハードウエア方式による
EMS
拡張メモリーは開発開始時にはほとんど普及しておらず、 また存在したとしてもソフト ウエア上もか なりの工 夫が必要であった。 そのうえ対話型環境に必要な ウインドウやメニューのライブ ラリーも手慣れた Turbo Pascal 用 に存在し ないなど、 問題と なる点が 多かった。 ま た次世代osと言われる OS/2 は一般に普及しておらず、 またCPUに80286 が必要 なので、 当研究室に多い 8086N30版CPUの PC・9801では 実行できなかった。 この 問題は 、 現行の Windows3 でも同様で CPU が8 0286以上でないと拡張メモリは使え
ず、 実用上 は80386CPU以上の性能が必要である。
次に検討したのはUNIXワ】?ステーシヨンのSUNであった。 しかし このマシンは、 プロ の使用を前提として作成されており、 ウインドウやメニューを動かす には難解な C言語を用 いなければならなかった。 その上必要とする情報もほとんど英文 で少
ししか得られず、 研究者が片手間で作成するには非常に難しかった。
最後に
Apple社の MacintoshIIを検討した。
このマシンは、 強力な 対話型機能が売物で、 メニューやウインドウをはじめとする対話型機能を実現するツールボック スと呼ばれるライブラリーが揃っており、 本質的でないプログラミングに時間を 取られること は少ないと思われる。 さらにメインメモリーが8�侶まで取れ 、
1991
年にリリースのSystem パージ ョ ン7.0では仮想記憶をサポートし、 1GBまで笑装
RAM をRAMディスクとしたのち仮想メモリとして使用 できるとのことであり、多量にメモリを消費する二次元データの動的な メモリ確保に最適であると思われ た。 またUNIXが
C言語で記述されたOSであるのに対し
、Macintoshは Pascalをも
とにしたOSであるから、 手慣れたPC-9801仁の Turbo
Pascalで試験的に作成したライブラリーをMacintoshII上に移植することで、 開発マシン (MacintoshII)の台数の少
なさをカバー出来ると考えた。 勿論、 カラー表示も豊富な能力を持ち、 任意の きさのディ スプレイに
1600万色同時発色も可能である。
このMacintoshシリーズは米 国製ではあるが、 日本で一番大量に売れている PC-9801程度の台数を世界中で販 売しており、 多くの英文情報が容易に手に入る。 また日本でもすでに数十万台を販売しており、 日本語の解説書や雑誌も、 このところかなりの数が発行され、
本囲内でも
PC-9801
に次ぐ勢力となりつつあ り、1992年には米国ではト ッ プシェ
アである。本論文執筆時点でもこの判断は正しかったと言える。
PC-9801は現在でもCPUの
速度が向上しただ けで、 拡張メモリに関しては、 標準が確立され ておらずプログ ラムによる拡張メモリの操作は かなりの困難が考えられる。第5. 2 . 2項 開発ソ フトウエア
現在使用しているシステムは、 PC-9801はM5-D053.3B 、 Macintoshの05は パージ ヨン6.07だがそれ以降のシステムでも問題ない。 ただし、 5ystem 7特有の機能はサ ポートしていない。
まず、 Macintosh上で 最初に使用したのは、 PC-9801 で使用しているのと同じ
Turbo Pasca1のMacintosh 版であ る。 Turbo Pasca1 PC・98版と同様メモリ上でコ ンパイルす
るので高速な開発が可能であったが、 unit のコ ンパイル順序の指定を手動で、 い ちいち行わなければならなかったこと、 PC版と違って、 Turbo Pasca1専用のライブ
ラリが存在せず、 逆に各言語 用の汎用のライブラリが存在したこと、 そして最大 の理由は、
IBM-PC版に専念す るとの理由で、 ある時期以降 開発元のBorland社がま
ともにサポートを行わなかったことで市場か らやが て自然、消滅した。 このとき使 用したライプラリはInvention 50ftwarc社の Professiona1 Programmer's Extender で、 リソース(主にダイアログ)は 5methers Bames社 のPrototypcr 1.0で作成した。
5-6
この TurboPascal Mac版の消滅ため途中からMac の正式な開発環境である
MPW(Macinsωsh Programmer's Workshop)上でTML Syste ms社のTML Pascal IIコンパイラを用い て 開発を行っ た。 使用したライブラリは 同じくProgrammer'sExtender とPrototyper ver .2.1であ る。
しかし、 汎用のライブラリExtenderをもってして も、 Macintosh 上でのプログラミン グは、 フ ァイル ・ ウインドウ ・ メ ニュー ・ クイ ックドロ一関係のルーチンが無秩 序に並び、 全体を把握しながらのバランスのよい保守 ・ 拡張が困難になってきた。
そこでMPW上のApple純正のオブジェクト指向ライブラリ(クラスライブラリ)で ある
MacApp
を使用することにした。 MacAppでは 、 フ ァイル ・ ウインドウ・
メ ー ュー ・ ダ イア ログ関係のルーチンは それぞれのオブジェクトを構成し、 標準的な 動作は 自動的に行い、 なおかつインヘリタンス(継承)により、 もとのオブジェ クトのソースプログラムを一切変更することなく、 簡単に新しい機能を付け加え ることができ、 拡張性と保守性が格段に向上する。 そこで、 TML Pascal IIコンパイ ラ でコンパイルを試みたが、 純正の MPW Pascal用に書かれ た MacAppを、 コンパ イルオプシ ョ ン等の微妙な違いでうまくコンパイルしてくれない O しか たなく新 たに MPW Pascalを購入し、 使用することとした。 しかし、 MPW Pascalコンパイラ は、 コンパイルスピードが非常に遅い仁に 、 MPWリン カーが、 それに輪をかけて 遅い 。そこで、 最後の非Apple純正PascalコンパイラーであるTHINK Pascal 3.0が
MacApp2.0完全対応という唄い文句だっ たので、 これを入手 ・ 試用したところ 、
MPW Pascalコンパイラ に通るソースプロ グラムのうちのほんの一部がコンパイル
できないことを除けば、 フ ァイルコンバータを通した MacApp2.0のソースコード はTHINK Pascal 3.0開発環境でほぼ完全に動作する。 しか も、 コンパイルとリンクは
MPW環境下よりはるかに速 く、 デバッ ガ もMPW純正のSADE よりはるかに高速で 使いやすい。 その ため 1991年の秋になってT H別K Pascal風のデバッ ガSourceBugがApple からMPW用にリリースされている。 現在はどうして も FORTRAN や Modula・2で いであるライブラリーをリンクしなければな ら ない場合を除い て は 、 MPW は 使 用せず、 できるだけ耳宜NK Pascal を使用しプログラム開発 を行っている。
第5.
2 .
3項 開発 の経緯まず最初にIMPACT は 1989年度に降水 レーダや衛星画像の解析を行うために九大 工学部水工土木学科河川研究室と福岡友子大物理研究室の共同研究として作成し た41 )ものである。
初期の段階で PC-9801上 の TURBO Pasca1 ver.3.0で開発した画像処理用 のルーチン
を、 TURBO Pascal ver.4.0上に移植した。
バージ
ョン4.0 か
らUnitが 使用可能になったので、 これをUnit化し、 さらにTURBO Pascal Mac版に移植した。 PC-9801上では 、 画像 関係のライプラリとしてHGX(Highlevel Graphic eXtention)を使用した。 これもHGX ver. 2.0 は、 TURBO Pascal ver.3.0にのみ対応し、 TURBO Pascal ver.4.0には未対応だった ので
TURBO
Pascal ver.4.0用に小さなユニ ットに分けたUnit を作成した。 その後HGX ver. 2.1になって T URBO Pasca1 ver.4.0対ー応になった が 、 このUnit�ま大きな1個のUnit�こなって
おり、 使用しない手続きも開発環境Fでは多量のメモリを消費する ため 、 依然と してた小さく分けたUnit を主に使用している。
現在は 、 IMPACT はPC-9801 版 ではTURBO Pascal ver.5.5及び6.0で作成されており、 後 述の画像型オブジェクトを定義する 予定である。 Macintosh上では 、
THINK
Pasca13.0開発環境下で
MacApp2.0対応 版
として 、 やはり画像型オブジェクトを使用して作 成する予定である。次に作成した の は 、
DispRDRである。
これは 、TURBO Pascal ver.3.0で開発さた。
5-
DispRDR4.0以前のパージ ョ ン では九大農学部レーダ、 建設省九州南部レーダ と九州
北部 レ ーダの生デー タを読 ん で、 グラフイ ツ ク画面 上 に雨量を表示する こ と が で きるものであった。 これをDispRDR5.0で、 はMacintoshで、標準フ ァイルフォ ーマ ット(
R
AP
フォ
ーマ ット)
で書 か れた
ど のレーダのデ ー タも 表示
可能 とした
。 実際は サ ポ ー トしていな いレー ダも あるが 簡単なプログラム の変更で対応可能であ る。さら に、 D
i spRDR
に改良を
加え RAPフォ
ーマ ット
のデ
ー タを
高速 に検索で きる
よ う索引(インデックス)であるRAPインデックスを 用 いて表示する RAPBrowserを 作成した42、 43 )o
これは、 基本的 に Dis pRDR にデ ー タベ ース として必要 な索引機能を付加したものである 。
progr a m
f'lQ 内部versiondev.System Languagc Library/Class Resource Maker
2.09801 TurboPascal3.0 HGX2.0
D
isp R D R 3.0 9801 TurboPasca14.0 HGX2.1
3.1 Mac TurboPasca1 Extender ProtoTyper2.。
4 .0 Mac-恥1PW
T:t-.在L Pascal nExtender ProtoTyper2.。
5.0 Mac TfllNK Pasca! 3.0 MacApp2.00 AppMakerl.2
RAPBrowser l.0 Mac
TI四吋KPascal 4 .0 MacApp2.01
App孔f叫くer1.5l.0 9801 TurboPasca13 .0 HGX2.0
IMPACT l.5 9801 TurboPascal4.。 HGX2.1
1.6 Mac TurboPascal Extendcr ProtoTyper2.。
2.0. Mac
THINlくPascal4.0 MacApp2.01
AppM泊cer1.52.0 9801 TurboPascaI5.5/6.0 HGX2.1
* 作成中 表5 .
1 プログラムの開発環境の変遷
第5. 3節
レーダ標準フォ ー マ ット本節で解説するレーダ標準 フ ォ ーマ ッ トは 、
前
説で 述べたデ ー タ と ノウハウの共
有化 と いう
目標のため に発案したものであ り 、 観測用 の フォ ーマ ッ トは単純 なヘッダl個 にデー タ l個、 こ れ に解析用の索引(
R A Pイ
ン デックス)を別
フア イル
として作成
する ものである。 本フォ
ーマ ットはR A P
(R A d a r P o r t a b l e)フォーマ ット と称する。 次項以降で、 その概要を述べるものとする。
5-9
第5. 3 . 1項
R
A Pフォ ーマ ットの構造本フォ ーマ ットは磁気テープの織なフ ァイルも扱えるようにシーケンシ ャルフ ォーマ ットとした。 これは大型計算機のように容易にランダム アクセス フ ァイル を扱えない機種でもある程度対応できるように考慮したものである。 このフォ ー マ ットの詳細は付録Aに示す。
九州大学農学部のレーダはそのデータを直交座標で記録してい るが、 建設省の レーダ雨量データは基本的に極座標形式で記録され 、 距離の範囲に応じて2段階 に解像度が変る。 また建設省の3次元レーダは 、 各仰角毎にデータが存在する。
これらの各データはモードとして分けて扱い 、 同一時刻に観測した各モードをl つのレ コードとしている。 各モードは物理的特徴量等を記録するモードヘッダー に記入されており、 各レーダ装置の諸元はサイトヘッダーに 、 更にレ コード毎に 日時等がレ コードヘッダーに記録されている。 レーダ標準フォ ーマ ットはこれら レコードとヘッダの集合であり、 それぞれのレ コードの前に各ヘッダをまとめた 観測ヘッダを付ける。
5-10
第5.
3 .
2項 レーダ標準フ ォ ーマ ット表示プログラム MacBrowserMacBrowser
は、機能から見るとレーダ画像表示部とデータ検索部の二つに分け
られ、 その詳細は次の通りである。
a)レーダ画像表示部
ディスク上のフ ァイルから読み込んだ降水レーダデータをディスプレイ上のウ インドウに表示する部分である。 現在のパージ ョ ンでは二次元の極座標データと
直交座標データを表示可能である。 通常は、
Z-R変換式の任意の定数に対する1:1:
量強度を計算表示する。 またデータが直交座標の場合はそのままクリップボード 経由で画像処理.システムIMPACT (第5. 4節参照)に画像データを送ることが口 能である。 さらに次期ノてージ ョ ンでは、 二次元リスト形式(スプレッドシート形 式)で数値データを見ながら編集することも可能な拡張を 予定している。 表示色 はOispRDR(RAP Browser)が32Bit Color QuickDraw に対応しているので1600万色中1600万 色(24ビット)表示が可能であるが、 現在レーダデータのほとんどが8ピ ットデ
ータであることから、 24ビットフルカラー表示は当面必要ないものと思われ、 将 来における拡張として考えている。 また極座標データを直交座標に変換したり、
任怠の地域のデータを数値フ ァイルに落すことは次期ノてージ ョ ンで行う予定であ る。 また今回は建設省九州北部 ・ 南部 ・ 沖縄レーダと九州大学農学部レーダが対 応可能であるが、 次期パージ ョ ンでは建設省のほとんどのレーダ及び各自治体 各大学の降水レーダに対応可能となる 予定である。
プログラム上の問題としては、 MacBrowserの前身であるDispRDR4.0以 前のバージ ョ ン では、 短座標と直交座標という2つの異なった種類のデータを表示するためかな り無理な拡張を行っているため 、 これ以降追加する他のレーダのデータに対応が
難になる恐れが出てきた。 そこでオブジエ クトの継承機能を 用 いて、 各レーダ
に対応する部分のみを拡張可能とし、 かつApple社のオブジェクトクラスライブラ リであるMacApp2.0でプログラムの骨格全体を書き直し、 プログラムの生産性
・
保 守性及び安定性を高めた。 またデータの画像表示でも、
直接GrafPortに描画してい たため 、 画面の再描画に時間がかかる欠点があった。 DispRDR パージ ョ ン5.0で は、 これを解消するため通常のメモリーに画像を描いてそれをUpdateする際に表 示用のGratFortに転送するOffscrenテクニ ックを導入し 、 再描画の高速化を行った。以下に本プログラムの定義部のうちアプリケーシ ョ ン ・ ウインドウ ・ ビューに 関
する部分を示す。
type
( -ー一一一一一一一一ー一一一一一一ーー一一一一一一ー一一一一- Appl icaじion 一一一一一一ー一一一一一一一一一一一一一ー一一一一一一一ー一}
TDispApplication = object(TOffSetApplication) {アプリケーシヨン本体}
procedure TDispApplication.IDispApplication (itsMainFileType: OSType);
function TDispApplication.DoMakeDocument (itsCmdNumber: CmdNumber): TDocument;OVERRIDE;
function TDispApplication.CheckMember (ヒheWindow: TWindow): BOOLEAN; OVERRIDE;
end; { TDispApplication }
(ーーー一一ー一一ー一ーーーー一一ー一一ーーー一一一一ーー一一一 Document -一一ー一ー一一一一一ー一一一一一一一一一一一一一一一一一一一) TDispDocument = object(TOffSe七Documenヒ){文書=ファイル)
fDispWindow: TDispWindow;
fControlWindow: TControlWindow;
fAutoDisplay: BOOLEAN;
fRDRBase: TDispRDRBase;
fGroundClutterBa s e: TRDRBase;
fFormatBas e: TFormatBa se;
fGo: BOOLEAN;
fStart: BOOLEAN;
fDaヒaSearchReady: BOOLEAN;
fIsDumpData: BOOLEAN;
fIsDispWindowOpened: BOOLEAN;
procedure TDispDocument.IDispDocument;
procedure TDispDocument. Free; OVERRIDE;
function TDispDocument.CalcCity: B o olean;OVERRIDE;
function TDispDocument.CalcTown: Boolean;overridei procedure TDispDocument.DoInitialState;OVERRIDE;
procedure TDispDocument.DoMakeView s (forPrinting: Boolean);OVERRIDE;
procedure TDispDocument. FreeData; OVERRIDE;
procedure TDispDocument.DoSetupMenu s;Override;
function TDispDocument.DoMenuCommand (aCmòNumoer: CmdNumber): TCommandiOverride;
procedure TDispDocument.DoRead (aRefNum: Integer; rsrcExists, forPrinting: B oolean) ;OVERRIDE;
procedure TDispDocumenヒ.Doωrile (aRefNum: Integer; makingCopy: Bo olean) ;OVERRIDE;
procedure TDispDocument.DoNeedDiskSpace (var dataForkBytes, rsrcForkBytes: �ongint)iOVERRIDE;
procedure TDispDocument.ShowWinoows;OVERRIDEi procedure TDispDocument. InilialEngine;
procedure TDispDocument. DoFF (step: INTEGER);
procedure TDispDocument. DoFWD (step: INTEGER);
procedure TDispDocument. DoRWD (step: INTEGFR);
rocedure TDispDocument. DoRR (step: INTEGER);
procedure TDispDocument. DoFi rst ; procedure TDispDocument. Do�asl;
procedure TDispDocument .ReadGrounòClutter;
function TDispDocument.NewControlWindow: TControlWindow;
5-12
functìon TDìspDocument.N ewDispωindow: 'T'DispWinòow;
procedure TDispDocument. Sta rtDisplay;・
enC1; ( TDispDocument )
{ーー一一ーーーーーーー一ーー一一ー一一一ー一ー一一一ー一一一 Winòow 一一ー一一一一一一一ー一ー- rControlWindow � ooject(TWindow) {検索画面ウインドウ)
fControlView: TControlView;
fMyDocument: TDispDocument; {Copy}
fControlListView: TControlListView;
fSelCluster: TMyCluster;
fMachineNum: TLONGEditText;
fModeNum: TINTEditText;
fCopyRight: TValEditText;
fIsSetupWindow: BOOLEAN;
fAutoCheckBox: TValCheckBox;
fDisplayButton: TMyButton;
procedure TControlWindow. IRes (j一七sDocument: TDocumen七; itsSuperView: TView; var itsParams:
Ptr) ;OVERRIDE;
function TControlWindow.DoMenuCommand (aCmdNumber: CmdNumber): TCommand;OVERRIDE;
procedure TControlWindow.DoSetupMenus;OVERRIDE;
procedure TControlWindow. SetupWindow;
function TControlView.DoKeyCommand (ch: Char; aKeyCode: JNTEGER; var info: Eventlnfo): TCommand;
override;
procedure TCont rolWindow. DoChoice (origView: l'View; itsChoice: integer); override;
end;
TDispWindow = object(TOf fSetωindow) {表示ウインドウ}
fMyDocument: TDispDocument;
fDispView: TDispView;
fLabelView: TLabelView;
procedure TDispWindow.IRes (itsDocumenヒ: TDocument; itsSuperView: TView; var itsParams: Ptr);
OVERRIDE;
procedure TDispWindow.Free;OVERRIDE;
procedure TDispWindow. MySeヒupMenus;
procedure TDispWindow. DoSe仁upMenus;OVERRIDE;
funcヒion TDispWindow.DoMenuCommand (aCmdNumber: CmdNumber): TCommand;Override;
function TDispWindow.GetDispView: TDispView;
procedure TDispWindow. StartDisplay;
procedure TDispWindow.Open;override;
procedure TDispWindow. Close; override;
end;
(ーーーーーーーーーーーーーーーーーーー一ーーーー一一一一一一- View -ー一ーーーー一一ーー一一一一ーーーー一一一一一一一ー一一一一)
TDispView = object(TOffSetView) {表示用ピュー) fDispDocument: TDispDocument;
fCurDispEngine: TDispEngine;
fCycle: CycleState;
fSelectionRect: Rect;
fMyPatterns: array [1. . kMy PatternNumber J of PixPatHandle;
fSetUped: BOOLEAN;
procedure TDispView.IRes (itsDocument: TDocument; iじsSuperView: TView; var itsParams: Ptr);
OVERRIDE;
procedure TDispView. Free;OVERRIDE;
procedur e TDispView. CalcTown;
procedure TDispView. ReDrawEngine;
。rocedure TDispView.SetDispEngine (DispEngine: TDispEngine);
procedure TDispView. ReCordinateView;
procedure TDispView. DoMenuMapDialog;
end; { TDispView }
ヤControlListView = object(TTextListView) {検索用リストビュー}
fRDRBase: TRDRBase; { Copy }
procedure TControlListView.IRes (itsDocument: TDocu円enこ; it sSじperView: TView; var itsParams:
Ptr) ; OVERRIDE;
procedure TControlListView.IControlListView (RDRBase: ;RD只Base);
5-13
procedure TCont.ro1ListView. Reset.NumOfItems;
procedure TConζro1ListView.Se1ectIこem (anltem: INTEGER; extendSe1ection, high1ight, se1ect:
BOOLEAN) ;override;
procedure TCont ro1Lis七View.Get.ltemText (anltem: integer; var aString: Str255) ;Override;
procedure TContro1ListView. SetNumOfItems (aNumber: INTEGER);
function TContro1Lis七View.GetCurNum: LONGINT;
procedure TContro1ListView.DoScrollTo (Hcord: INTEGER);
function TContro1ListView.DoMouseCommand (var theMouse: Point; var info: Eventlnfo; var
end; {TContro1ListView}
TContro1View = object{TView) {検索用ピュー) fMyDocument: TDispDocument;
flndexHeader: IndexHeadRec;
fSi七eHeader: SiteHeadRec;
fModeHeader: ModeHeadRec;
fRecordHeader: RecordHeadRec;
hysteresis: Point): TCommand; override;
procedure TContro1View. IRes (itsDocument: TDocument; itsSuperView: TView; var itsParams: Ptr);
OVERRIDE;
procedure TContro1View.IContro1View {indexHeader: IndexHeadRec; SiteHeader: SiteHeadRec;
ModeHeader: ModeHeadRec; RecordHeader: RecordHeadRec)i procedure TCont..rolView.DoChoice (ori_gView: TView; よヒsChoice: integer) iOverridei
endi { TContro1View }
{・一一ーー一一ー一一一一ーーー一一一一一一ー一一一一一ーー一一 DispModeHeader 一一一一一一一一一一一一一一一一ー一一一一一一一一ー一一一一一}
TDispModeHeader object{TModeHeader) {モードヘッダオブジェク卜=表示エンジン含む) fDispEngine: TDispEngine;
procedure TDispModeHeader. IDispModeHeader i procedure TDispModeHeader. Freei
OVERRIDE;
procedure TDispModeHeader.SetDispEngine (DispEngine: TDispEngine);
function TDispModeHeader.Ge七DispEngine: TDispEnginei endi
次に表示部を示す。 表示部はオブジェクトの継承機能を用いて共通の基底部から 各レベルにおける共通部、 そして各レーダによる異なった部分を順々に派生させ 、 各レベルに対応す る処理を分割して記述している。 このためどのレベルからでも
新たな種類のレー ダのための拡張が容易となっている。
(---ーーー一一一ーー一ー一一ーーーーーー一一一一一一一一一一 DispEngine 一一一一一一一一一一ー一一一一一ー一一一一一一ーー一一一一一) TDispEngine = object{TObject) {表示用エンジン=基底型)
fMyRDRBase: TDispRDRBasei fMyGroundC1uterBase: TRDRBase;
fCurDataSize: LONGINTi
fCurRDRDataHdl, fCurGroundHd1: RDRDataHdli Cur亡011, fCurCo12: LONGINT;
fOldCo12: LONGINT;
fUIN, fU2N: REAL;
fMapPointList: TList;
fMapFile: INTEGER;
fMapFName: Str255;
fPixelMap: TSortedList;
fMa戸)rg: Point;
fDispMap: BαコLEAN;
fUseSeaLine, fUseMtLine, fUseRiverLine, fUsePrefSeparat ion: BOOLEAN;
fNumOfCo1or: LONGINT; { Number of Display Color 8/16/256) f1<ヨvel: INTEGER; {current.. level of DisplayColors}
fCo1orPatternList: TList;
fCurPalette: PaletteType;
fCurPat: Patt.ern;{Radar Constants}
B, fBeta: REALパSet.Up)
5-14
fUseGround, fUseMap, fUseCircょe, fUseGrid: BOOLEAN;
fCurRect: ReCL; (DrawingSize)
fRaLio: REAL; (0.25,0.5,1.0,2.0,4.0 ...)
fLin: REAL; (fRaLio / FShul<ushaku * fDotPerC仲 fKMPerCM) fShukushaku: REAL; (100 '" 10000)
fDotPerCM: REAL; (72/2.54 } fKMPerCM: REAL; { 10E5 } fci rcleDif: REAL; {30km for NQ}
fGridDif: REAL; {50km for N:!}
fGridOrg: Point;
fCurCycle: CycleState; {finished}
procedure TDispEngine.1DispEngine (DispRDRBase: TDispRDRBase; GroundCluterBase: TRDRBase);
procedure TDispEngine.Free;override;
procedure TDispEngine. Do1niヒialState;
procedure TDispEngine. FreeData;
procedure TDispEngine. SetCurRect (MyRect: Rect);
procedure TDispEngine. ReDrawAl1 (aRect: Recヒ);
function TDispEngine.DraWCity (var Cycle: CyCleState): BOOLEAN;
procedure TDispEngine. ReadMap (RefNum: 1NTEGER);
procedure TDispEngine. DrawMap;
procedure TDispEngine. 1Map;
procedure TDispEngine. DrawCircle;
procedure TDispEngine.1Circle;
procedure TDispEngine. DrawGrid;
procedure TDispEngine. 1Grid;
procedure TDispEngine.CalcCellCoordinate;
procedure TDispEngine.ReCalcCellCoordinate;
procedure TDispEngine. DraWCell;
function TDispEngine.DecRainColor (Data, Ground: 1NTEGER; N1: Longint): LONG1NT;
procedure TDispEngine.DrawEachCell (N2: 1ρNG1NT) ; procedure TDispEngine.DoMenuCommant;
procedure TDispEngine. DoSet upMenus;
procedure TDispEngine.SetCurGroundHdl (CurGroundHdl: RDRDalaHol);
procedure TDispEngine.SetCycle (Cycle: CycleState);
function TDispEngine.GetCycle: CycleState;
procedure TDispEngine. 1nitCalcConst;
procedure TDispEngine.SetUpMyPalette (paletteKind: PaletteType);
function TDispEngine. TransRZ (i: LONGINT; THLevel: REAL): REAL;
end;
{-ー一一ーーー一ーーーー一一ー←一一ー一一一一一ー一一一一ー- FastDispEngine 一一一一ーーー一一一一一一一一一一一一一一一一一一一一ーーー一}
TFastDispEngine = object (TDispEngine) {表示用エンジンー高速タイプ) fThresholds: TL1ST; { threthold list for 8/16 colors}
fNumOfTH: INTEGER;
procedure TFasヒDispEngine.IFastDispEngine (DispRDRBase: TDispRDRBase; GroundClu七erBase:
TRDRBase) ; procedure TFastDispEngine.Free;OVERR1DE;
procedure TFastDispEngine.Do1nitialState;OVERRIDE;
procedure TFastDispEngine.FreeData;OVERR1DE;
function TFastDispRTEngine. DecRainColor (Data, Ground: INTEGER; N1: Longint): LONG1NT; Override;
procedure TFastDispEngine. CalcThreshold (CollN: LONG1NT); { Calc all threthold for 8/16 colors}
end;
(--ーーーーーーーーー一一一ーーー一一一一ーーーー一一ーー-- FastDispRTEngine 一一ーー一一一ー一一一一一一一一一一ーー一一一一一一一ーー一) TFastDispRTEngine = object(TFastDispEngine) { 表示用エンジン=高速タイプ、 局座標表示)
fMeshPoint: TMeshPoinL; {List of TPointArray}
fOrg: Point; { Offset from View Org}
fE, fC, ff, faa, far, fslv, fee, ffad, fxx1, fshv: REAL;
fStarヒFromCentムer, fEndFromCenLer: REAL;{km!
procedure TFastDispRTEngine. IFastDispRH ngioe (DispRDRBase: TD i soRDRBase; GroundCluLerBase:
PWRBase) ; procedure TFastDispRTEngine.Free;OVERRIDE;
procedure TFastDispRTEngine. Dolnit iaJ State; OVfRRIDE.;
procedure TFastDispRTEngine.FreeData;override;
procedure TFastDispRTEngine. paintCe113 (p:, p2, p3: POi:ìL);
procedure TFastDispRTE ngi ne .pa intCe1l4 (p', p2, 03, 凶 Poinこ);
5-15
function TFastDispRTEngine.DecRainColor (Daζa, Ground: INTEGER; Nl: Longint): LONGINT,'Override;
proceaure TFastDispRTEngine.DrawCircle;OVERRIDE;
function TFastDispRTEngine.TransRZ (i: LONGINT; THLevel: REAL): REAL;OVERRIDE;
procedure TFastDispRTEngine.CalcThreshold (CollN: LONGINT);OVERRIDEi end;
1-ーーーーー一ーーーー一一ーーーーー一一一一一ー一一一一ーー FastDispRTIEngine ー一一一一一一ー一一一一一一一一一一一一一一一ーーー一一ー}
TFastDispRTIEngine = object(TFastDispRTEngine) {表示用エンジン=高速タイプ、 局座標表示、 中心あり)
procedure TFastDispRTIEngine.IFastDispRTIEngine (DispRDRBase: TDispRDRBase; GroundCluterBase:
TRDRBase) ; procedure TFastDispRTIEngine.CalcCellCoordinateioverride;
procedure TFastDispRTIEngine.ReCalcCellCoordinateioverride;
procedure TFastDispRTIEngine.DrawEachCell (N2: LONGINT)ioverride;
end;
{--ー--ーーー一一一一一ーー一ー一一一一一ーー一一一ーーー- FastDispRT2Engine -一一一一一一一一一一一一一一一一一一一一一一一一一一一一ー一) TFastDispRT2Engine = object(TFasヒDispRTEngine){表示用エンジン=高速タイプ、 局座原表示、 中心なし}
procedure TFastDispRT2Engine.IFastDispRT2Engine (DispRDRBase: TDispRDRBase; GroundCluterBase:
TRDRBase) ; procedure TFastDispRT2Engine.CalcCellCoordinate;overridei procedure TFastDispRT2Engine.ReCalcCellCoordinateioverride;
procedure TFastDispRT2Engine.DrawEachCell (N2: LONGINT)ioverridei end;
{-一一ー一一一一一ーーーーーー一一一ー一一一一一ー一一一一一- NQFastDispRTIEngine 一ー一一一一一一一ー一一一一一一一ーー一一一一一一一一一一一}
TNQFastDispRTIEngine = object(TFastDispRTlEnginc) {表示用エンジン=高速タイプ、 局座傑表示、 中心あり、 北部九州}
procedure TNQFastDispRTIEngine.INQFastDispRTIEngine (DispRDRBase: TDispRDRBase; GroundCluterBase:
TRDRBase) ; procedure TNQFastDispRTIEngine.Free;OVERRIDι;
procedure TNQFastDispRTIEngine.Do1nitialState;OVERRIDE;
procedure TNQFastDispRTIEngine. FreeDaしa;override;
procedure TNQFastDispRTIEngine.IMap;override;
procedure TNQFastDispRTIEngine.lnitCalcConst;override;
end;
(ーーーーーー一一一一一一一一一一一ー一一一一一一一一一一一一一 NQFastDispRT2Engine 一一ー一一一一一一一一一一一一一一一一一一一一一一一一一一一一)
TNQFastDispRT2Engine = object(TFastDispRT2Engine) {表示用エンジン=高速タイプ、 局座係表示、 中心なし、 北部九州}
procedure TNQFastDispRT2Engine.INQFastDispRT2Engine (DispRDRBase: TDispRDRBase; GroundCluterBase:
TRDRBase) ; procedure TNQFastDispRT2Engine.Free;OVERRIDE;
procedure TNQFastDispRT2Engine.DolnitialState;OVERRIDE;
procedure TNQFastDispRT2Engine.FreeData;override;
procedure TNQFastDispRTIEngine.IMap;override;
procedure TNQFastDispRT2Engine.lnitCalcConst;override;
end;
(--ーーーーーーーー一一一ーーーーーーーーーー一一一一一一一 FastDispXYEngine -ーー一一ーー一一ーーーーー一一一ーーーー一一一一一一一ーーー) TFastDispXYEngine = objec七(TFastDispEngine){ 表示用エンジン=高速タイプ、 直交座標表示)
procedure TFastDispXYEngine.IFastDispXYEngine (DispRDRBase: TDispRDRBase; GroundCluterBase:
TRDRBase) ; procedu工e TFastDispXYEngine.Free;OVERRIDE;
procedure TFastDispXYEngine. Do1niヒialStaしe;OVERRIDE;
procedure TFastDispXYEngine. FreeDaLa; override;
end;
b)
RAPインデッ クス処理部検索キーの処理にはMacAppのTSortedListオブジェクト を使用し 、 レ コードヘ ツ ダに当該データの格納場所を検索キー順に記憶させているので、
TSortedListオプジ
エクトのsearch関数を用いて該当するレ コードヘッ ダ をオン メモリで高速に検索し、レコードヘ ッ ダ のデータ格納位置からフ ァイル上のデータを取得するすることが
5-16
出来る。 検索キーは観測日時とレ ー ダモード番号で行っており、
TControlListViewの
表示リストからマウスで選択されたデータを表示可能である。限られたディ スク容量を効率的に利用するために、 MacintoshのToolBoxにあるル ーチンを利用して簡単な圧縮をデータにかけることもできるが、 これは現在の RAPフォ ーマットから外れる恐れがあるので、 今回は見送った。 今後は JPEG (静 止画圧縮規格) や MPEG (動画圧縮規格)のLossless(データの損失無し)タイプの 世界標準の圧縮規格を含めた標準化を検討する必要がある。 また、 どのようなデ ータが格納されているかを高速に見れるようなクイッ クル ッ ク用の画像を、 上記 の規格のL o s
syかApple社のQuickTimeの桜な悩失はあるが高)j�縮なデータとして
RAPインデッ クスに付加し、 動画表示が出来るようにする必要があろう。以下にレ コードヘ ッ ダ及びその操作部の定義部のオブジェクトを示す。
(ーー一一一ーー一ー一ーーー一一一一一一ーー一ー一一一一一ー一一 DispRDRBase ーー一一一一一一一一一一一一一一一一一一ーー一一一一一一一一}
TDispRDRBase = object(TRDRBase) {レコード操作部}
fMyGroundClutterBase: TRDRBase;
procedure TDispRDRBase. IDispRDRBase (Document: TDocument.);
procedure TDispRDRBase.Free;override;
procedure TDispRDRBase.DolnitialState;override;
procedure TDispRDRBase. SearchDataF ile (VolRef: INTEGER);
procedure TDispRDRBase. Readbylndex (RefNum: INTEGER);
procedure TDispRDRBase.DoRead (RefNum: INTEGER) ;override;
procedure TDispRDRBase.DoWrite (RefNum: INTEGER);override;
procedure TDispRDRBase. DoAppend; override;
procedure TDispRDRBase.SetUpDispEngine (ModeHeader: TDispModeHeader);
procedure TDispRDRBase.SetMyGroundBase (GroundClutterBase: TRDRBase);
end;
(ーーー一ーーー一一一一一一一一一一ー一一一一一一一一一一一一 MyRecordHeader 一一一一一一一ー一一一一一一一一一一一一一一一一一ー一一一一}
TMyRecordHeader = object(TRecordHeader) {レコードヘッダオプジょクト}
fRecNum: LONGINT;
fMyFileNum: LONGINT;
fDataPosition: LONGINT;
procedure TMyRecordHeader. IMyRecordHeade r;
procedure TMyRecordHeade r. Free; overr ide;
procedure TMyRecordHeader. SetRecNum (RecNum: しONGINT);
Eunction TMyRecordHeader. Get RecNum: LONGINT;
procedure TMyRecordHeader.SetMyFileNum (FileNum: LONGINT);
func七ion TMyRecordHeader.GetMyFileNum: LONGINT;
procedure TMyRecordHeader. SetFilePos (Pos: LONGINT);
function TMyRecordHeader.GetFilePos: LONGINT;
end;
(-ーーーーー一一ーー一ーー一一一一一一ー一ーー一一一一一一一 RecordトleaderList 一一一一一一一一一一一一一一一一一一ー一一一一一一一一一一一一}
TRe cordHeaderList = objecL(TSortedList) {レコードヘッダオブジェク卜用リストj procedure TRecordHeaderList.IRecordHeaderList;
rocedure TRecordHeaderLisこ.F'ree;Overriae;
九nction TRecordHeaàerList.Com?are (iしem市I こer2: TObject): Compa reResul ti overriαei end;
ーーー一-一一一ーーーー一一ーーー一一一ー一一ーー一一一ー-- RDRBase 一一一一一一一一一一一一一一一一一一一一一一一一一一一一ーー}
�RDRBase object(TObservationHeaoer) iデータペースオブジェクト}
fRecordHeaderList: TRecordHeaderList;
fTempfileName: Str255;
fTempVolRef: INTEGER;
fCurRecNum: LONGINT;
fDocument: TDocument;
fIslndex: BOOLEAN;
procedure TRDRBase.IRDRBase (Document: TDocument);
procedure TRDRBase. Free; override;
procedure TRDRBase.DolnitialState;override;
procedure TRDRBase.DoNeedDiskSpace (var DataForkBytes: LONGINT);override;
procedure TRDRBase.DoRead (RefNum: INTEGER);override;
procedure TRDRBase.DoWrite (RefNum: INTEGER);override;
procedure TRDRBase. DoAppend;
procedure TRDRBase.TransToLayer;
procedure TRDRBase.MakeTempFile;
procedure TRDRBase.AddRecordHeaderList (RecordHeader: TRecordHeader);
function TRDRBase.GetRecordHeader (RecNum: LONGINT): T阿yRecordHeader;
procedure TRDRBase. SetRecordHeader (RecordHeader: TRecordHeader);
function TRDRBase.GetCurRecordHeader: TRecordHeader;
function TRDRBase.SearchRecordHeader (RadarMOde: LONGINT; ObservedTime: RDRDa仁eTimeRec):
:MyRecordHeδαer;
function TRDRBase.ReadCurPosDaca: BOOLEAN;
function TRDRBase.DoRR (step: INTEGER): BOOLEAN;
function TRDRBase.DoFWD: BOOLEAN;
function TRDRBase.DoRWD: BOOLEAN;
function TRDRBase.DoFirst: BOOLEAN;
function TRDRBase.DoLast: BOOLEAN;
function TRDRBase.GetCurRecNum: LONGINT;
procedure TRDRBase. SetCurRecNum (CurRecNum: LONGINT);
function TRDRBase.GetSize: LONGINT;
procedure TRDRBase.CountData;
procedure TRDRBase. ExportIndexFi le (RefNum: INTEGER);
procedure TRDRBase.lmportlndexFile (RefNum: INTEGER);
end;
第5 . 3 . 3項 通信回線を 用 いた検索とデータの転送
将来は有線回線や無線回線を用いた災害情報ネットワークの一環として 、 ホス
トコ ンピュータやデータ ベー スサ ーバにデータを蓄え 、 ネットワークを介してア
クセスできるようなシステムを構想している。 この際、 光磁気ディスクや
CD-ROMの綾な大容量のディスク装置でもl枚のメディアで全てのデータを検索す
るには 、 はるかに容量が不十分なため 、 光磁気ディ スクのオートチェ ンジャー等
の導入とボリュー ム毎の管理および効率的な圧縮法のR
A
Pフォ ーマ ッ トへの導入が必要となろう。 米国では民間で何社かがデータベー スサービスを行っており
例えば年間5 0ドルで千数百にのぼるデータやプログラムフ ァイル をWea出erB加k
等のBBS (電子掲示紋)からダウン ロードできる。 さらに 、 他の気象 データも利
5-1
用した簡単な 予 測プログラムもsharewareとして配布されている。
日本における利 用者が電話回線を使用して河川情報センターに電話をして現在
から数時間前までのレーダ情報を入手する現在の形式は 、 同時アクセスできる利
用者の数は、 設置されている電話回線の数を越えることができないので、 豪雨災
害時のように多くの利用者が同時に、 河川情報センターの回線をアクセスすると
「話し中」となる事態が極めて起こり易い。 また一般の電話回線と同じ回線を使
用するので、 般の問い合わせの電話が同一地域に集中しでかかると輯奏と呼ば
れる状態になり、 電話がかかりにくくなる状態になる。
このような問題は通常の電話回線を使い続ける|坂り発生する問題であり、 自動
ダウンロード(パック受信と河川情報センターでは呼んでいる)等の運用の仕方
である程度しのげるにしても 、 絵情報だけでなく、 今後予想される数値情報の配
信になれば、 情報量の増大と共にさらに接続率が悪くなる可能性が強い。 そのた
め、 回線のデータ通信速度を向上させることはもちろんであるが、 今後のレーダ
情報端末は、
1) ISDN のパケ ット通信網の様に高速にデータが伝送でき、 同時に多数の回
線に対してデータを見かけ上並列的に送れる有線回線
2 )無線回線を用いて親局から複数の子局に対して放送送信を行い、 各子局は
取り落としたデータのみを再度要求し 、 次の再放送の際に受信する 、 ブロー
ドキャ スト ・ フロ コトルによる無線放送型のシステム
3)
2)をさらに発展させc s等の静止衛星と地上局をリンクした高速大容 の田幸泉によるシステ ムのいずれかの採用 あるいは両方の併用が望ましいと思われる。
第5 . 4節 降水レーダデータ解析の ための画像処理システム IMPACT
近い将来河川情報センタ一端末による定量データの配信が始まる予定であり、
災害の現場ではこれらを用い た定量的な降雨予測を行う必要があると思われる。
特に降水レーダのような二次元的な広がりを持つ情報をどう処理するかが問題と なってくる。 これらはデータ量も大きくなる ために、 気象モデルのように余り大 きな方程式を解こうとすると自治体などの現場では計算機の容量が小さいという 問題が出てくる。 そこでこれらの2次元的情報は画像として扱い、 処理して解析 する方法 がよいのではないかと思われる。 この際に人聞が試行錯誤をしながら処 理できる対話型機能が強力なものが望ましい 。
本節では、 前述のApp le社のMacintosh r_に作成した 、 北本的な画像処理を行うプロ グラム I恥1PACT(IMageProces sing, Analyzing, Calculating Tool)を解説する。 このプログラムを 用いることにより衛星やレーダ画像のデータを用い 、 降雨の解析と予測の前処理
を行うことが出来る。
第5 .
4.
1項画像型と画像オブジェクト
IMPACTのバージ ョ ン1.0から1.6では、 まず画像型を定義している。 画像型は、
処理する画像が任意の大きさを持てるような動的な構造を持っている。 これは九 州大学大型計算機センターのFOR TRAN のような静的なメモリ構造しか持 たない 言語では容易に実現できない機能である。
画像型は、 大きく分けると、 白黒2値間像、 白黒濃淡間像、 カラー濃淡画像が 考えられるが、 今回は対象の画像(レーダや衛星)から考えて白黒2値画像型及 び白黒濃淡画像型(疑似カラー表示は可能)のみ作成することにし た。
IMPACTで使用 する画像のデータ構造は、 IMBitmap、 IMAGE(PC-9801のみ) Conc および Pixmap(Mac IIのみ)である。 ここではこれらをまとめて画像型と呼ぶ
5-20
ことにする。 IMBitmapは bit表現による2値画像、 IMAGEは、 PC・9801におけるRGB
カラ ー表示(8色) Conc は8bitの深さをもっ濃淡画像、 Pixmapは Macintoshにお
けるカラー表示データ構造(8から24 bit)である。 このうち Pixmapは Macintosh
の T oolbox にあるものをそのまま用いているのでここでは省略し、 ��りの3つの
画像型を次に示す。
Type
IMBitMap = RECORD {for Macintosh}
M,N:工NTEGER; {Size of Bitmap}
BitHandle;{Handle to Actual Memory}
END;
lMAGE = RECORD {fo工 PC-9801}
M,N:工NTEGER; {S工ze of One Plane}
Rptr,Gpt工,Bptr:^BYTE;{Ptr to R G B Planes}
END;
Conc = RECORD {for Macintosh}
M,N:工NTEGER; {Size of Conc Data}
CHandle:ConcHandle;{Handle to Actual Memory}
END;
Macintoshではハンドルと呼ばれるポインタのポインタを持っており、
これをメモリーマネジャを介してアクセスすることで実際の処理を行っている。
各レ コー ドは、 自分の画像の大きさを「知っている|ので、 プログラマは
FORTRAN の配列のよう に、 いちいち大きさを意識する必要がない。
画像オブジェクトは、 画像型をさらに発展させたもので、 それぞれのオブジェ
クトの、 初期化と終了処理、 読み出しと書き込みはもちろんのこと、 複製の作成
や表示、 各種の処理方法 (圧縮、 2値化、 ラベル付け )など 、 各画像オブジェク
ト間有の処理ルーチンをも含んだものになる(パージ ョ ン2で対応)予定である。
従って、 各オブジェクトは自分の画像の 大きさのみならず、 自分の画像に対す
る処理方法も|知っている|ので、 プログラマはいちいち各処理の細かい内容や
内部変数の引き渡し につ いて意識する必要がない。
Turbo PASCAL ver.5.5におい ても言語仕様としてオブジェクトが導入されたので、
PC-9801版でも画像型とその処理ルーチンを画像オブジェクトに変更予定である。
また、 キャラクターベースであるが、 MacAppをモデルにしたクラスライブラリ Turbo Vison が TurboP ASCAL ver.6.0以降でサポートされている。 そこでPC・9801版
IMPACTはTurbo Visonをグラフイ ツ ク画面対応に改良したクラスライブラリによる対 応を考えている。
第5 . 4 . 2項 画像処理プログラム IMPACT の詳細
図 5 . 1に示すようにIMPACT は以下の4つの部分に分けられる。
1
)画像処理部画像型のデータに対し画像処理を行う部分である。 画像処理の機能としては、
現在ラベル付けによる領域分割と計量 ・ クリ ッ ピング ・ 画像追跡 ・ フラクタル次 元計測等をインプリメ ントしており、 SPIDER にある他の機能も順次取り入れて行
く予定である。
2
)画像表示部画像型データをディ スプレイ上のウインドウに表示する部分である。 現在2値 画像の白黒表示と、 濃淡画像の疑似カラー表示そしてヒストグラム表示も可能と なっている。
3
)画イ象データベース部検索キーの処理に孔1L-treeを用い た可変長データを扱えるデータベースである。
本来ならば処理する画像のデータ構造に日[Jした形で各々データベースを作成する 庁が効率が良いのだが、 汎用システムなので少々効率が悪くなっても各種の画像 データを収納できるようにしている。 これも、 オブジェクト化の際にTList及び
TStreamクラスを用いたオブジェクトに改良 予定である。
5-22
4
)画像圧縮 部画像圧縮法 は、 IMBitmapに対しては、 Wyleの符号化を用い たランレ ングス法を、
Concに対しては予測符号化法(DPCM)を用いて圧縮復元を行っている。 これらの 方 法は、 圧縮 の際lピ ットも欠かさずに圧縮復元 処理を行う方法で、 本プログラム のように、 絵を見るのでなくデータ値その もの を解析する場合に適切な手 法であ る。
圧縮型データ 画像型データ
図5.3画像型を中心に見たIMPACTの構成
さらに各部は機種依存部分と機種独立部分に分けて Unit化している。 画像処理 部と画像圧縮 部は、 ハンドルによるメモリーアクセスを除いてほとんど機種独立 であり、 画像.データベースも、 メモリーアクセス とフ ァイル入出力以タキはほとん ど機種独立である。 画像表示部と 、 各処理を指示するマンマシンインターフ ェー スに 関 する部分が機種に依存している。
各部分は、 機種に依存する部分と 、 依存しない部分に分けて作成されている。
この灰別により機種に依存しない部分は PC・9801とMacintoshで、それぞれ共通に使 えるので、 台数の多い PC・9801上で機種に依存しない部分のテストを行い、 機種
に依存する部分例えばメモリの操作やフ ァイルのハンドリ ングそれにマ ン マシン
インターフェー スに 関 する部分等 はMacintosh上でMacintosh用のイ ンターフェースを
開発し た。
3
)今後の展開画像オブジェク トを導入してプログラムを全面的に書き直すと共に、 降雨域の
移動の 予測 手法 については、 このIMPACTの 対話型処理により、 降雨域の移動及
び規模を現すパラメタを抽出し、 これを外挿して予測を行う手法試みる予定であ
る。 問題はどのパラメタをどれぐらい位の重み で使用するかによ って予測の精度
が変ってくることであり、 パラメタの重み付けにはエキスパートシステムやニュ
ーラルネ ットワークの 導入も考えられる。
また降雨予測に必要な画像処理用のルーチンを全て組み込 こむこと、 自動実行
用の言語を組み込むこと、 あるい は時間的 な変化を追跡するようなフィルタープ
ログラムを組み込むことな ど、 多くの点で拡張が彩えられる。
第5. 5節 結語
本章では、 降 水レーダ を用いた研究をさらに発展させるために、 降水レーダ標
準フォ ーマ ットを用いたプログラムおよび画像処理プログラムを作成した。 これ
らの プログラム は、 実用上問題ない程度までパグを除去し た後、 全国或は全世界
の希望者に配布し、 標準フォ ーマ ットの普及に務める予定である。 また土木学会
水理委員会の結論として早急に報告書をまとめ、 建設省等に対し正式にデータの
配布環境を整備するよう提言する予定である。
5-24
付録A RAPフォーマットパージョン1
.0の詳細
1. データの構造a. バイトデータ
1 6ピット以上のCPUではバイトアクセスを行うと速度が低下したりするものや、 あるいはバイトアク セスを禁止しているものもある。従って本フォーマットでは、 ヘッダ一部分では記憶域の節減よりも高速 化を狙うために、 バイト単位の記憶域は使用しない。
b. ワードデータ
ワードデータはINTEGER(-32768�327 67)またはCARDINAL(O�65535) のいずれかを取り得る。 この区別はフォーマット中で必ず記述する。 ま た、 8086系CPUのようにバ イト逆順は取らない。
注) INTEGERとCARDINA LはO�32767では同じ内容をとるo d. 固定小数点データ
実数データを使いたい場合はこれを用いるべきである。 4バイトで、 小数点以上16ビット小数点以下1 6ピットである。 或は小数点位置を決めた整数を用いてもよい。
e. 日付
日付は年・月・日・時・分・秒・ 曜日からなりそれぞれが2バイトのCARDINA しである。 曜日は 曜から土曜まででlから7をとる(曜日はあってもなくても可とする)。
f. 構造体
構造体の中のバイトデータはワードとして領域を確保する。従って最初からワードデータとして扱うo g. ヘッダの長さ
ヘッダの長さは1024バイトの固定長とし、 ブロックの大きさが規定されていて、 各ヘッダがうまく収 まらない場合は、 スパンさせずに、 次のブロックに書き込む。
h. 不明値の扱い
ヘッダ情報は出来得る限り調査して入力することが望ましいが、 やむを得ず不明なものは、 暫定的に最大 値を入れておく。 2バイトINTEGERは 32767 (16進で7F F F)、 2バイトCARDINALは6 55
3
5 (1 6進でFF F F)、 4バイト別TEGERは2147483647(16進で7FFFFFFF) 4バイトCARDINALは429496729 55(1 6進でFFFFFFFF)5-25
2 .
フォーマットの構造 別ファイルの存在各レーダの観測モードの違いによる種々のフォー マットの諸元は、 後述のモードヘッダに格納可能 であるが、 これとは別にファイルを設けてフォー マットデータベースとすることも出来る。 この場 合そのレコードの構造はサイトヘッダ+モードヘ ッダと同じものにする。 また、 地図ファイル ・ グ
121モ』ドヘ"J?・
フォーマット番号
ランドクラッタファイル ・ シャドウファイルも別別ファイル=フォーマットデータベース ファイルとして用意する。 その構造は以下の通り
である。
1 )グランドクラッターファイル:晴天時に観測 されたレーダのデータがグランドクラッターデー タなのでレーダの観測フォーマット自身と同じフ ァイル形式とする。 データの区別は観測円時によ って行う。 もし、 観測データがはっきりしない場 合は、 そのレーダの観測開始時期より前の日付を 記入する。 グランドクラッターファイルを使用し ない場合は、 0年O月O日を入れる。
2 )シャドウファイル:レーダ自身のフォーマッ トと同じにする。 異なるのは、 データの種類をシ ャドウデータ=16000、 lデータの大きさ=
2とし、 実際のデータは%値の100倍を入れた 整数値とする。 データの区別は、 観測年月円の所 にシャドウデータを作成した日時を入れる。
1U1J!lJ"r�
問所1 炉測ザ|
観測日時 千
f -?
f -9 f -9
別ファイjレ=グランドクラッターファイル
作成日時
陸則付 防抑Ih?� I 牌測へ�� I
テ-9
f -9 f -9
千作成日時
別ファイjレ=シャドウファイjレ
5-26
ヘッダ部
ヘッダには次の5種類が存在するo a. 観測ヘッダ
後述のb-eのヘッダをあわせて1つにしたものである。大きさは1KB (1024バイト)。
b. インデックスヘッダ
インデックスで使用するものを格納する。大きさは40バイト。
c . サイトヘッダ
観測レーダサイトに関する固定した情報を絡納する。大きさは312バイトo d. モードヘッダ
サイトヘッダに続くヘッダで観測モードの数だけ存在する。観測場所が違うものは違うモードとする。大 きさは170バイト。
c . レコードヘッダ
各観測毎に変化する諸元を格納する。大きさは128バイト。
データ部
lデータの大きさ及び種別・
データ数はモードヘッダの中に書き込んでおく。データは連統領域の可変長(長さはレイヤヘッダに記入する)である。但し、 長さが奇数となる場合は1 バイト加える。将来の拡張では、 圧縮形式になるとモードヘッダに記入された長さは最大長になり、 実際 の長さはデータヘッダに書き込まれるので注意が必�となる。
3. 各ヘッダの構成
a. インデックスヘッダ(40バイト)
パージョン番号(1 0 0倍: 2バイトCARDINAL、 l.00の場合100) モード数(4ノてイトCARDINAL) 観測ヘッダでは使わない。
総データサイズ(4バイトCARD
1
NA L) 観測ヘッダでは使わない。データセット数(4バイトCARDINAL) 観測ヘッダでは使わない。
総レーダ数( 4バイトCARDINAL) 観測ヘッダでは使わない。
システム予約(8)及びユーザ予約(14) 観測ヘッダでは使わない。
ノてージョン番号 総モード数 総データサイズ
総
データセット数
総レーダ数 システム予約 ユーザ予約
24
4 4 4 8
U
インデックスヘッダ
司L勺ム内,L今,h弓,L
2 12
14 256 2
勺LAU寸AU寸
2 2
ピーム脂 パルス幅周波数
アンテナゲイン レーダ回転速度 パルス平均回数 スキャン平均回動
オヘ.レーションモ』 ド 送信出力 最小受信感度
コビーフイト の種類 レーダ番号 システム予約
ユーザ予約 コピーライト
2
サイトヘッダ
4
48
50 b. サイトヘッダ(31 2バイト)
ビーム幅(度。 度数角の100倍:2バイトCARDI
E並立(Khz:
4バイトCARDINAL) パルス幅(μS: 4バイトCARDINAL)アンテナゲイン(d Bの百倍:2バイトCARDINAL) レーダ回転速度(叩mの100倍:2ノてイトCARD
1
NA L) パルス平均回数(2バイトCARD1
NAL)スキャン平均回数(2ノてイトCARDINAL) オペレーションモード(2ノてイトCARD
1
NAL) 送信出力(d B mの100倍:2バイトCARD1
NA L) 最小受信感度(d Bmの100倍:2バイトINTEGER)コピーライトの種類(2バイトCARDINAL)
l=ASCII、 2=EBCDIC
マシン番号(4ノてイトCARDINAL) システム予約(12)及びユーザ予約(14) コピーライト表示部
(2 5 6バイト:文字の入らない所は空白で埋める)
c . モードヘッダ
レーダモード番号(2バイトCARDINAL) ここには全てのレーダのフォーマットを割り当てる 番号と兼用)。
0の場合はこのレイヤヘッダに記録してある値を係用する。 oでない場合はフォ ーマットファイルデータベースを検索しそのデータを使用する。 その場合ジェネ ラルヘッダのビ ーム幅以降の値を参照する。
本モードにおける総データサイズ(バイト: 4バイトCARDI :観測ヘッダでは使わない。
本モードにおけるレコード数(バイト:4バイトCARDI :観測ヘッダでは使わない。
観測地点の緯度(度。 度数角の100倍:2バイトINTEGER,北緯を+とする) 観測地点の経度(度。 度数角の100倍:2バイト別TEGER,東経を+とする)
塁亘
(m: 2バイトCARD1
NA L) 観測地点と中心のシフト(x、 y、 z方向、観測方法の種類(2ノてイトINTEGER) 2次元直交座標=
1
2次元極座標(中心あり)= 2 2次元極座標(中心なし)= 3 2次元極座標(中心あり、 タグ付) 2次元極座標(中心なし、 タグ付) 3次元直交座標=
1
29
3次元円筒座標=1 3 0 3次元球座標=1 3
1
3次元球座標(タグ付) ビーム固定=
1
0 01
らせん=1
0 0 2RHI =1003
関口合成=1 004 注)タグ付とは、A L)
レ』タモ』ド#
モ』 ド総:;-' -タ サ イス.
4
今''u
弓,L ウ&
ぷU勺''白
モードヘッダ
レコード数 観測地点の緯度 観測地点の経度
システム予約
ユーザ予約 (別ファイルデータベースの
T E G E R) A L)
Aし)
m : 2ノてイトI
=4
=5
= 1 3 2
データ内において、 各ビーム毎に4ノてイトの方位角と仰角のデータが付いたものをいう。