GSJ Open-File Report, no. 648 | January, 2018 |
Tadashi Nakatsuka and Shigeo Okuma
(Research Institute of Geology and Geoinformation, GSJ, AIST)
この研究資料は基本的に,同名の研究資料集 no.519 "Software system for Aeromagnetic data processing, Grid data manipulation, and Reduction and quantitative interpretation of magnetic anomaly data (2)" [Nakatsuka, 2009f] の増補全面改訂版であり,より高度な処理である 磁気異常の3Dイメージング解析・ 拡張交点コントロール解析のソフトウェア(ANAMX) を新たに含んでいる. また,同シリーズの 研究資料集 no.518 "地球物理データの解析処理・ 図化表現のためのライブラリ(3)" [中塚, 2009e] の改訂版を包含している.
著者らは,永年にわたり空中磁気探査の研究に従事し, その中でデータ処理・解析の各種プログラムを開発してきた. それらは,すでに概要を学会誌や学術講演会で発表済み [中塚・大熊,2005b, 2005c; Nakatsuka and Okuma, 2006a, 2006e, 2009a, 2011, 2014; Nakatsuka et al., 2009c ほか多数 (文献欄参照)] であるが, 本研究資料集においてそれらのソースプログラムを公開している.
この研究資料では,次に示すように,空中磁気探査のデータ処理解析に関する
6つのグループのソフトウェアについて取り扱う.
(1) DPAM:
空中磁気探査計測データ処理プログラム,
(2) GDMP:
グリッドデータ操作プログラム,
(3) ANAM:
磁気異常データ解析処理プログラム,
(4) ANAMX:
空中磁気データの 3Dイメージング・拡張交点コントロール解析プログラム,
(5) libgm:
地球物理データ解析・図化表現のためのサブプログラム・ライブラリ,
(6) utils:
各種ユーティリティ・プログラム.
このソフトウェア体系は,データ形式の標準化を行いつつ,やや単純な機能を
有する個別のプログラムを多数集めたプログラム集の形式になっている.
従って,何らかの課題・目的に対する実際の処理プロセスは,
一連のプログラム実行処理が必要になるであろう.
このシステムで利用しているデータFormatは,我々独自のスタイルに合わせてある.
しかし,そのデザインは,特定のプログラム間でのみデータを受け渡すことを
意図したものを除いて,全てのデータをASCIIテキストで扱うようにしており,
ユーザが自身固有の書式データとの間で必要なFormat変換を行うことは容易であろう.
この研究資料のうち,上記の (1) DPAM, (2) GDMP, (3) ANAM は,本資料集と同名の 研究資料集 no.449 [Nakatsuka, 2007] の内容を引継ぐものであり,(4) ANAMX は その後にソフトウェアの整備を行った より高度な解析処理のための 新しく公開するプログラム群である. また,上記区分の (5) libgm, (6) utils は, 研究資料集 no.400 に始まる "地球物理データの解析処理・ 図化表現のためのライブラリ" の最新改訂版であるが, (1)~(4) の処理プログラムの充実と測地学的な知見の進展に合わせた処理体系の 見直しに合わせて,使用法が大きく変更になっている点があることに留意されたい.
DPAM プログラム群は,以下の空中磁気探査の計測データのデータ処理プログラム からなる.
alog2asc daq2asc bdaq2asc dmaq2asc |
xldam xldpn xldhg filtadasc |
despike dvcorr ecomp fcomp |
ggrid ggrids xslin xslina |
pframe pltrk pchkdv |
pchkmag pchkres pchkcomp |
プログラム alog2asc, daq2asc, bdaq2asc, dmaq2asc は,空中磁気探査のデータ収録生データファイル (地質調査総合センターで利用しているシステムに固有)を 共通ASCIIテキスト形式に 変換するものである. alog2asc/daq2asc は,旧AIRLOGS/新AMDAQ の スティンガー式空中磁気探査装置に対応し,bdaq2ascは バード式空中磁気探査 もしくは一般モバイル磁気探査に,dmaq2ascは G858型Cs磁力計利用の 小型マルチコプタ [ドローン] 磁気探査に対応する.
プログラム xldam/xldpn は ASCII形式生データから 「DPAM 測線データ」を生成するが,xldam が リアルタイムGPSの位置データを 用いるのに対し,xldpn は "PostNav" 処理したディファレンシャルGPSの 位置データの利用を想定している. また プログラム xldhg は, バード式ヘリコプター探査の空中磁気データからDPAM測線データに類似の "HGAM 測線データ" を生成するものである. xldam/xldpn/xldhg に共通して,サブプログラム "igrf" を 用いたIGRF残差の計算が行われる.なお,プログラム filtadasc は, スティンガー式空中磁気探査のAD変換取得データの雑音レベルがやや高かったときに 高周波ノイズ抑制のためにを作成したものである.
プログラム despike は,「DPAM測線データ」の磁力値データ (全磁力測定値 および IGRF残差)のスパイクノイズを除去し,プログラム dvcorr は 定点観測磁力値データを用いて日変化補正を行う. プログラム ecomp/fcomp は 「DPAM測線データ」に対して 中塚・大熊 [2005c] に基づく機体磁気補償の処理を実行するが, ecomp が 機体磁気補償の動作確認のためにテスト飛行のデータ自体に 補正処理を実行するのに対し,fcomp は そのデータを用いて 調査測線データに対する補正を実行する.
プログラム ggrid/ggrids は,「DPAM測線データ」などの ランダム点データから,Smith and Wessel [1990] の "continuous curvature splines in tension" の方法により,グリッドデータを生成する. ggrid は 磁力値(IGRF残差)のみについてグリッド化を行い, ggrids は 高度データも含めてグリッド化する.但しこれは, 高度変化に富むヘリコプター探査などで,「磁気異常分布データの高度リダクション」 の処理を行う場合には必要でない. プログラム xslin/xslina は, ランダム点データから必要データだけ抽出し,標準測線(StdLIN)データに変換する. xslin では 種々の形式のランダム点データがサポートされるのに対し, xslina では 「DPAM測線データ」に限定して平滑化再サンプリング の機能を有する.
プログラム pframe は,各種位置パラメータ指定の際の参照用に,
調査地域の座標値フレームワークを作図する. プログラム pltrk は
「DPAM測線データ」から測線位置図を作図し,プログラム pchkdv は
定点観測磁力値データを1日毎のグラフとして図化表示する.
プログラム pchkmag/pchkres/pchkcomp は,
データ品質の点検のために磁力値データ図化表示を行うが,
pchkmag は 全磁力測定値を黒線で,pchkres は IGRF残差データを
青線で図化し,pchkcomp は 機体磁気補償処理前後両方のIGRF残差データを
赤線/青線で色別して図化する.
GDMP プログラム群は,グリッドデータを操作するプログラムで構成されており,
以下のプログラムがある.
sel seldb seldb2 gtopo |
adjlv gadd gsub gtrim |
govlay gojoin gmerge txproj |
altchg gtrf altx rearx |
plmap plmapc plmapl plmapcl |
plmapg plmaps plmapcs shade |
xplmap xplmapc xplmapcs |
プログラム sel/seldb/seldb2 は, 既存グリッドデータから再グリッディングにより新たなグリッドデータを生成する. sel では 入力ファイル名を指定してグリッドデータを選択するのに対し, seldb では 日本空中磁気データベース(AMDB) [地質調査総合センター,2005a] のデータ * をそのコード名で指定して 元データの座標系でのグリッドデータを生成するが,seldb2 では 『日本空中磁気DB による対地 1,500m 平滑面での磁気異常分布』 [中塚・大熊,2009b] のデータ ** を対象として, 生成するグリッドの図法展開座標系とその座標値を指定してデータを切り出す. プログラム gtopo は DEM40データ *** から地形高度グリッドデータを作成する.
* | AMDB のグリッドデータは,解凍済のものを, ソースプログラム seldb.f90 内のパラメータ AMDBDIR で定義された ディレクトリ (/pub/AMDB/DATA/) 下のサブディレクトリ(調査区域毎の原データは grdサブディレクトリ,地方別編集磁気図データは regサブディレクトリ)内に, "コード名.gd" のファイル名で 収容しておく必要がある. (コード名 は,元データのファイル名を小文字で与える.) | |
** | 『日本空中磁気DB による対地 1,500m 平滑面 での磁気異常分布』のデータは,ソースプログラム seldb2.f90 内のパラメータ AMDB2DIR で定義された ディレクトリ (/pub/AMDB2/DATA/) 内に "MMNN.mgc" [MMNN は 1次メッシュコード] のファイル名で収容しておく必要がある. | |
*** | DEM40 とは,日本の地表高データのファイル群 であり,国土地理院発行の数値地図50mメッシュ(標高) の CD-ROM 3枚 (日本-Ⅰ, 日本-Ⅱ,日本-Ⅲ) を用いて構成したものである. 元データの著作権は国土地理院にあり,ここでは DEM40データを作成する手順を genDEM40m.html に記す. そのデータファイルは,ソースプログラム gtopo.f90 内のパラメータ DEMDIR で定義された ディレクトリ (/home/SHARE/data/DEM/dem40/) 内に 収容しておく必要がある. [旧バージョン用にすでにデータが用意されている場合は, 第4節末尾の記載を参照のこと.] |
プログラム adjlv は,グリッドデータのDCレベルの調整のため,
一定値を全グリッドデータ値に加算する.
プログラム gadd/gsub は,2つのグリッドデータの加算処理/
減算処理を行って,新たなグリッドデータを作成する.
プログラム gtrim は,入力グリッドデータに対して,
参照グリッドデータの未定義データ領域と同じ範囲のグリッドデータ値を未定義値に
置換して,新たなグリッドデータとして出力する.
プログラム govlay,gojoin,gmerge は,
多数のグリッドデータを統合した新たなグリッドデータを作成する.
govlay は 順次スリット入りで (後から重ね合る側を優先して) 重ね合わせ,
gojoin は 一定の遷移ゾーン幅の設定で 後から重ね合る側を優先して
重ね合わせ接合し,gmerge は 両者の重複部分を遷移ゾーンに設定して
重ね合わせ接合する.
プログラム txproj は,グリッドデータを別の図法展開座標系に変換
(再グリッディング)する.
プログラム altchg は,標準書式磁気異常グリッドデータファイル
に対して,その第2組データとして もしくはヘッダー情報として記録されている
高度情報を変更して,新たな高度データに対応させた標準書式グリッドデータを
作成する. プログラム gtrf は 残差グリッドデータの標準磁場モデルを
更新(旧モデルを加算,新モデルを減算)する.
(残差の再計算に相当するが,特例的な利用法として,一方のモデルを 値0
に指定することにより,残差データと全磁力データとの相互変換に用いることが
できる.)
プログラム altx は,標準書式グリッドデータから,その第2組データ
として もしくは ヘッダー情報として 記録されている観測高度のデータを
単独のグリッドデータとして取り出す. プログラム reax は,
多数組グリッドデータファイルの中から,指定の1組データを単独グリッドデータ
として取り出す.
plmap,plmapc,plmapg,plmaps,
plmapcs,shade の各プログラムは,与えられたグリッドデータが
高さ分布を意味すると見なし,その 3D曲面の表示を行う.
plmap は 線画コンター図,plmapc は カラー段彩つきコンター図,
plmapg は グレイスケール段彩図,plmaps は 陰影付きコンター図,
plmapcs は 陰影付きカラー段彩図,shade は 陰影図 の表現となり,
いずれもA4サイズ用紙に作図する.
プログラム plmapl/plmapcl は,
線画コンター図(plmap相当)/カラー段彩つきコンター図(plmapc相当) を,
測線位置表示つきで A4用紙に描く.
ANAM プログラム群は,磁気異常分布データの高度リダクションおよび定量解釈
のプログラムで構成され,以下のプログラムがある.
emag amag cmag plamag plamagc |
emagf amagc cmagf calmas |
tmcorr tmcfix lcecorr aaptdp galtf |
emeq ameq ameqc cmeq galts |
emeqs ameqs ameqsc cmeqs rpmeqs |
edeq adeq adeqc cdeq |
edeqs adeqs adeqsc cdeqs rpdeqs |
プログラム emag, emagf,amag, amagc,
cmag, cmagf は,磁化強度マッピング [Okuma et al., 1994a;
Nakatsuka, 1995] の処理に用いる.
まず emag または emagf で 感度係数マトリクス COEF の計算を行い,
次に amag または amagc で CG法による磁化強度マッピングの
逆解析処理を行う.
その結果を用いて,cmag または cmagf で指定高度面での
合成磁気異常を計算することができる.
ソースモデルは,emag, cmag では 矩形ブロックの形状に
近似されるが,emagf, cmagf では 地形データの分解能に合わせて
上面の凹凸を考慮する.
CG法の繰返し処理の打切りは,amag では ループ回数で制御し,
amagc では 解の収束状況で判定する.
プログラム plamag/plamagc は,磁化強度マッピング結果を
線画コンター図/カラー段彩つきコンター図 で表示する.その際,周辺ソース域は
マスクして表示しない.
プログラム tmcorr は,観測空中磁気異常グリッドデータに対して,
地形の一様磁化を仮定してその効果を見積り,それを除去する.
また,プログラム tmcfix は,指定の磁化強度の地形効果を除去する.
プログラム lcecorr は,直流電車軌道ループ電流の補正処理を行い,
プログラム aaptdp は,観測空中磁気異常グリッドデータに対して
点ダイポールソースによる半自動モデリングを行うもので,いずれも
神戸-京都地域の空中磁気データの解析 [中塚ほか,2004b] で用いたものである.
プログラム galtf, galts は,StdLIN測線データから 飛行高度曲面を示す高度グリッドデータを作成する. galtf は (実観測高度の図化表示の目的で) 観測高度を補間してグリッドデータを作成し, galts は,(高度リダクション処理の基準高度に用いる目的で) 観測高度を平滑化した高度グリッドデータを作成する.
プログラム emeq,ameq, ameqc,cmeq は 磁気異常グリッドデータに対して,プログラム edeq,adeq, adeqc,cdeq は 磁気異常ランダム点データに対して, 等価アノマリを用いた計算法 [Nakatsuka and Okuma, 2005b, 2006a] に基づいた 高度リダクション処理に用いる. まず emeq/edeq で 感度係数マトリクス CMUP/CFUP の計算を行い, 次に ameq/adeq または ameqc/adeqc で CG法による等価アノマリ導出の逆解析計算を行い, cmeq/cdeq で 高度リダクション結果を得る. CG法の繰返し処理の打切りは,ameq/adeq では ループ回数で 制御し,ameqc/adeqc では 解の収束状況で判定する.
プログラム emeqs,ameqs,ameqsc,cmeqs は
磁気異常グリッドデータに対して,プログラム edeqs,adeqs,
adeqsc,cdeqs は 磁気異常ランダム点データに対して,
磁化方向を有する等価ソースを用いた計算法 [Nakatsuka and Okuma, 2005b, 2006a]
に基づいた 高度リダクション処理に用いる.
まず emeqs/edeqs で 感度係数マトリクス CMUPS/CFUPS
の計算を行い,次に ameqs/adeqs または
ameqsc/adeqsc で CG法による等価ソース導出の逆解析計算を行い,
cmeqs/cdeqs で 高度リダクション結果 を得る.
CG法の繰返し処理の打切りは,ameqs/adeqs では ループ回数で
制御し,ameqsc/adeqsc では 解の収束状況で判定する.
プログラム rpmeqs/rpdeqs は,磁化方向を有する等価ソース
を用いた高度リダクション処理の中で得られた等価ソースを用いて, 極磁力変換
した高度リダクション結果 を得る.
プログラム calmas は,直方体/厚さ無限小に近似した水平矩形/ 太さ無限小点に近似した鉛直線分/体積無限小に近似した点 のいずれか に単純化した複数モデルのソースを指定して,与えられた観測面上での 理論磁気異常分布を計算する.
ANAMX プログラム群は,磁気異常データの3Dイメージング・
拡張交点コントロールの高度解析を行うためのプログラムで構成され,
以下のプログラムがある.
eimgd eimga fimgs fimgsc |
aimgn aimgnc aimgs aimgsc |
nimgn nimgnc nimgs nimgsc |
cimgn cimgnc cimgs cimgsc |
plsim plsimc plxim plximc |
plimv plimvc plmvarc |
exdeq1 exdeq2 exdeq3 exdeq4 |
axdeq axdeqc cxdeq genroff |
プログラム eimgd, eimga,aimgn, aimgnc,
aimgs, aimgsc, nimgn, nimgnc, nimgs,
nimgsc, cimgn, cimgnc, cimgs, cimgsc,
fimgs, fimgsc は,3Dイメージング解析 [Nakatsuka and Okuma,
2011, 2014a] を行うために用いる.
まず始めに,(前2者の) eimgd または eimga で 感度係数マトリクス
CFIM と スケーリング係数 FSCL の計算を行う.次に,残りの14のプログラムの
いずれかを用いて,各種バリエーションの 3Dイメージング解析を行う.
一般に 極めて多くの未知パラメータの逆解析を志向する 3Dイメージングを
CG法によって行う場合,ノルム最小化の制約が自然に働くため,パラメータ
スケーリングを行わないと,浅い構造の磁化分布へ解が導かれる傾向となる.
これを避けるため,eimgd では ソース深度に応じたパラメータ
スケーリングを行い,eimga では 計算されるCFIMマトリクスの特性量
から自動計算によってスケーリングを行う.
3Dイメージング解析の実行プログラムは,解析理論式における制約条件項の とり方で3通り用意しており, aimgn, aimgnc, aimgs, aimgsc は 制約なしの 単純逆解析を行うもの, nimgn, nimgnc, nimgs, nimgsc は ノルム最小化制約 による逆解析を行うもの, cimgn, cimgnc, cimgs, cimgsc は 有効ソース体積最小化制約による逆解析を行うもの であり, それぞれの4プログラムは イメージングのソースエレメントの層厚 (水平方向のサイズは均一)に対するスケーリング補正実施の有無と, CG法の繰返し処理の打切り制御の2方法に対応している. また,fimgs, fimgsc は cimgs, cimgsc の逆解析処理中に 磁化強度値に許容変域を強制するものである.
プログラム plsim, plsimc,plxim, plximc
は,3Dイメージング解析結果の鉛直断面図を図化する.plsim/plsimc
は グリッド配列に沿った 東西もしくは南北の断面図を,
plxim, plximc は,任意の方位角に設定した線分に沿った断面図を,
それぞれ 線画コンター/カラー段彩 で描く.
プログラム plimv/plimvc は,3Dイメージング解析結果の
層別鳥瞰図を,線画コンター/カラー段彩 で描く.
プログラム exdeq1, exdeq2,exdeq3, exdeq4,
axdeq, axdeqc,cxdeq, genroff, plmvarc は,
拡張交点コントロール [Nakatsuka and Okuma, 2006e; Nakatsuka et al.,
2009c] の解析処理に用いる.
「等価アノマリによる測線データからの高度リダクション edeq」の処理と
併せて,交点コントロール(測線レベル補正)をも行う拡張処理の準備として,
exdeq1, exdeq2,exdeq3, exdeq4 のいずれかによって
感度係数マトリクス CXFUP の計算を実行する.
exdeq1は 測線ごとに一定(直流)のレベルシフト,
exdeq2は 測線ごとに線形に変化するレベルシフト,
exdeq3は 各交点ごとに任意のレベルシフト(交点間は線形に変化),
exdeq4は 時期を隔てた繰返し磁気探査(A と X)のデータから,
A探査の測線とX探査の測線との交点におけるレベルシフト
を許容する解析を行うためのものである.
次に axdeq または axdeqc
によって CG法の繰返し処理で 最適なレベルシフトのモデルを得る.
cxdeq は,得られたレベルシフトのモデルを適用した等価アノマリの分布から
指定曲面での磁気異常分布を計算する.
genroff は,axdeq/axdeqc で得られたレベルシフト
(=交点オフセット) のモデルを磁気異常変化を示すデータとみなして,
その分布のランダム点データ(StdLIN形式) に変換する.
plmvarc は,このランダム点データ(StdLIN形式) と それを用いて(例えば
ggrid で) 作成された磁気異常変化グリッドデータを用いて,
磁気異常変化をカラー段彩つきコンター(コントロール点表示つき)で図化表示する.
ライブラリ libgm は,下表の サブプログラム群で構成されている.
名称 | 機 能 | エントリ名 (Fortran用) |
---|---|---|
psplot | 線描画 PostScript出力 | psopn, plots, plote, pscls, epsbox, plot, scisor, factor, where, newpen, penatr, wrect, wpolyg, wcirc |
pspaint | 面描画 PostScript出力 | dftone, dfrgbt, dfcols, dfc40s, dframe, dframo, paintm, paintw, dresol dfpcol, paintc, paintr, paintp |
ptext | 各種フォント文字列・マークの描画 | ptext, lstyle, pcstr, pmark |
cont | コンター線図描画 | conts, contso, contx, contr |
wshore | 海岸線等描画 | wshore, rshore, pshore |
igrf | IGRF計算 | gigrf, igrfc, igrfm, sdgrf, spgrf, sigrf |
xyconv | 地図投影座標変換 | xyconv, nxycnv, utm, ikconv, nikcnv, utmik, cvinit, cviken, cvenik, cvdinit, cvdiken, cvdenik |
sml | 回帰分析 | sm1opn, sm1ex, sm1cls, sm1rv, sm2opn, sm2ex, sm2cls, sm2rv, sm3opn, sm3ex, sm3cls, sm3rv |
rand | 疑似乱数発生 | rand1, randg |
xw84t | 測地座標変換 (WGS84⇔旧東京系) | xw84t, xtw84, xw84td, xtw84d |
hgeoid | ジオイド高計算 | sgeoid, hgeoid, jhgeoid |
calma | 理論磁気異常計算 | magafd, mpoint, mvline, mhrect, mprism, calma |
lwkdir opnpin getargs |
メッセージ出力・進捗状況表示支援 作業ディレクトリ設定支援 処理パラメータ設定支援 ほか |
prompt, premsg, dpcini, dpcent, strdtm, lrtrim, abend, abendm, opnpin, clspin, lwkdir, parmin, gparma, gparmi, gparmf, gparmd, gparmif, gparmid, gparmi2, gparmf2, gparmd2, getargs |
各サブプログラムの機能の詳細と その使用法については, 『libgm: サブプログラム・ライブラリ 』 を参照されたい.
各種ユーティティ utils の プログラムとして,以下のものがある.
cats cat4 cat8 |
crlf onlycr onlylf hdump |
cview cviewe uncview hdumpe |
qpencode qpdecode b64encode b64decode |
cxtw84 cxw84t igrfcal hgeoidcal |
utmcal xycal cxiken cxenik |
job job1 |
プログラム cats, cat4,cat8, crlf, onlycr, onlylf, cview, cviewe, uncview, hdump, hdump, qpencode, qpdecode, b64encode, b64decode は,単に一般的な Unix環境での作業で 利用可能なユーティティであり,プログラム cxtw84, cxw84t, igracal, hgeoidcal, utmcal, xycal, cxiken, cxenik は,サブプログラム・ライブラリ libgm に含まれる機能を,個別かつ容易にターミナルから利用するためのプログラムである.
プログラム job, job1 は,各種プログラムを連続して実行する 『バッチ処理』の機能を,独自のスタイルで実装したもので,旧来の "メインフレーム・コンピュータ" で利用されていた,ジョブ制御言語 のようなもの を志向している.この資料集に示した 我々の 空中磁気探査データ処理解析の 体系(AMSS3)では,この『バッチ処理』の機能を用いれば,基本的に,ソースデータ とジョブ制御ファイル(+実際に行われた処理内容を示す 実行ログファイル)が 残っていれば,同一の処理を容易に再現できる.
上記のプログラムの開発は, GNU Compiler Collection [http://www.gnu.org/software/gcc/] と その1つのコンポーネントである gfortran がインストールされた Linux PC の上で 行っており,大部分のプログラムは,Fortran90 言語で記述されている. プログラムは,地質調査所(現 産総研地質調査総合センター)での永年の 空中磁気探査の研究の中で段階的に構築されてきたもので,実データを用いた 動作確認を経たものである. しかし,ソースコードはその後も,処理の効率化や操作性向上を志向した改良 のため,さらに改訂が行われている. 従って,何がしかの気づいていないバグが残っている可能性は否定できないが, ソースコードを公開しているので,ユーザが自ら容易にバグの修正を行えるものと 考える.
これらのプログラムの中では,中塚[2003] に始まる サブプログラム・ライブラリ libgm の機能が,極めて頻繁に利用されているので,本資料集では,その ライブラリ・サブプログラムの最新版を統合したものとした.
大部分のプログラムでは配列変数が使用され,必要な配列サイズは取り扱う
実データによって当然異なる.(十分すぎる配列サイズの定義は,正しい結果を
得る上で支障はないものの,メモリ資源の浪費になる.)
今回のソフトウェアの全面改訂では,比較的新しい Fortran の機能である
「配列の動的割り当て」を活用し,実際に割り当てる配列のサイズを実行時に決定
するようにした. これにより,旧バージョンでは 大きな配列サイズを必要とする
ために ソースコードを修正して再コンパイルする必要があったのに対して,
新バージョンでは その必要がなくなった.
また,この改訂にあたり,自由書式ソースコード(ファイル拡張子が '.f'
でなく '.f90' である)を用いるとともに,なるべく構造化プログラミングを
志向して,一切の 文番号を排除した. このため,この新バージョンは,
古い fortran77 コンパイラでは,コンパイルできなくなっている.
プログラムの実行にあたっては,作業ディレクトリの設定とともに
いくつかのパラメータ指定を行う必要がある.
これらプログラムでは,作業ディレクトリの設定と処理パラメータ入力の支援
のための lwkdirサブプログラム と それに付帯する opnpin
メカニズムの利用が取り入れられている.
その利用には,2つの利点がある.
この研究資料は,前のバージョン(Nakatsuka, 2009f) に対して
多くの更新と増補が加えられている.増補の観点での最大のものは,
既に触れてあるように,磁気異常の3Dイメージング解析・拡張交点コントロールの
高度解析処理にかかるソフトウェア群ANAMX を新たに公開した点にある.
それ以外にも,DPAMプログラム群 に 4プログラム,GDMPプログラム群
に 4プログラム, 各種ユーティリティ utils に5プログラム が
追加されているが,内容的にそれほど重要なものではない.
既存のプログラムにも,利用上の便宜を考えて,その仕様を多少変更したものや
マイナーな出力を見やすくする修正したものも数多くあるが,その細かな変更点を
リストアップすることは行っていない.
(個々のプログラムの説明の内容を必要に応じて更新した.)
一方,今回の全面改訂にあたっては,このソフトウェアの歴史的な事情に束縛
された旧式仕様の状況を緩和する努力を行った.
その主要な内容は,以下の2点である.
[ 新 標準グリッドデータ書式・座標系番号の導入 ]
物理量の2次元的分布を示すためにグリッドデータが多用され,標準グリッドデータ
書式では,準拠する測地系や平面への展開図法を示す座標系番号と その座標系での
位置座標 を付与することによって,空間位置を特定している. しかし,日本において
20世紀中は,ベッセル楕円体を基礎におく独自の(旧)東京測地系が用いられ,2002年
4月以降は,世界測地系(WGS84系)=日本測地系2000(JGD2000) に移行した.
その際に,それまで使用していた旧東京測地系に対応する 座標系番号 0~199
に対して,世界測地系では 座標系番号 200~399 を用いた. しかし今日では,
当然ながら世界測地系の利用が基本となっているので,
新しい「標準グリッドデータ書式v2018」 では,座標系番号 0~199 を
世界測地系に割り当て,(旧)東京測地系を表現するためには 800~999
の座標系番号を用いることとした.
[ 各種の関連データのファイル名命名規則の変更 ]
このソフトウェアの従来のバージョンから,海岸線等データ・DEMデータ・
ジオイド高 などについて,日本周辺のデータを整備して,標準的なディレクトリと
ファイル名を規定して利用可能にしてきた. そのデータは,
日本の地理的な位置から,地球の北東四半球に対応するものであり,
南半球・西半球のデータのハンドリングが行えない問題が残っていた.
今回のソフトウェア改訂にあたり,グローバルなデータハンドリングに資するため,
それらデータとそれを読み取るプログラムの修正を行って,
全球のデータ処理を可能ならしめた.
標準グリッドデータ書式v2018 は,GDMP プログラム群の説明の中に
「標準GridData書式」 として,記載してあるが,
見かけ上は,変更点がないかのように見える. 注目すべきは,第1ヘッダFORMAT 中の
"4x,i4,
" が 旧バージョンでは "i4,4x,
"
であったことと,地球楕円体に関する記載で,GRS楕円体(WGS, 世界測地系) と
ベッセル楕円体(旧東京測地系) とが入れ替わって,
「世界測地系に対しては 200 を加算」の注記が「東京系に対して 800
を加算」になっている点である.
つまり,第1ヘッダFORMATが,固定書式であり 4桁の空白 を含むという冗長性
のあった部分を活用して,旧データ形式v2005 と 新データ形式v2018 との自動判別を
可能としている. また,データ形式自体は,第1ヘッダの一部を除いて,
同一であるので,データの書式を v2018 に変更することが極めて容易である.
この研究資料に所載の グリッドデータ を扱うすべてのプログラムでは,
旧データ形式との自動判別を行って,座標系番号の読み替えを行うようにしてある.
従って,旧データ形式のグリッドデータであってもそのまま利用でき,
処理の入力パラメータとして座標系番号を指定する必要がある場合に,
新しい座標系番号を正しく指定するだけでよい.
一方,処理ソフトのグローバル化のためのプログラムの変更は,南半球の緯度・
西半球の経度を指定したときに処理が正常に行えるようにするもので,
主としてファイル名の命名規則のグローバル化のみを行った.
南緯・西経を表現するために,パラメータ値として指定するには緯度・経度として
負の値を与えればよい.但し,それを度・分表記で与える場合は,
度・分とも負の値で与える.
ファイル名の命名規則としては,サブプログラム wshore
が扱う海岸線等データ と プログラム gtopo が扱うDEMデータについて,
(両者ともが処理する単位ととなっている)緯度1度×経度1度 の範囲ごとに,
その南西隅にあたる緯度・経度を示す名称 (N33E135
,
S20E046
, N19W090
など)
をファイル名に使用することとした.また,1ディレクトリ内のファイルの総数が
過大とならぬように,各範囲が属するUTMゾーン番号 nn
を用いた名称(Z53 など)のサブディレクトリに分けて収容する.
具体的には,変更前後のサブディレクトリ名つきファイル名を例示すると
以下のようになる.
【例】 | 変更前 | 変更後 |
---|---|---|
DEMデータ |
wm40/33135.alt |
dem40/Z53/N33E135.alt |
海岸線等データ (WGS) |
SW33/cst135.jpn |
Z53/N33E135.coast |
SW33/riv135.jpn |
Z53/N33E135.river | |
SW33/prf135.jpn |
Z53/N33E135.prefb | |
海岸線等データ (旧東京系) |
SH33/cst135.jpn |
t53/N33E135.coast |
SH33/riv135.jpn |
t53/N33E135.river | |
SH33/prf135.jpn |
t53/N33E135.prefb |
renewal_script
の名称で置いてあるので,参考にされたい.但し,そのDEMデータは,旧版の
標準グリッドデータ書式v2005 のままとなる.
Fortran90 言語プログラムのソースファイルは,.f90 のファイル拡張子,
C言語プログラムのものは .c のファイル拡張子がついている.
それらプログラムを UNIX環境でコンパイルするときに利用可能なスクリプト
@mkall が,各ディレクトリの下に用意してあり,実行ファイルが
ソースファイル名から拡張子を除去した名前で
/home/SHARE/bin
ディレクトリに生成されるようになっている.
但し,サブプログラム・ライブラリ libgm が,
/home/SHARE/lib
ディレクトリ内の libgm.aファイルとして最初に構築されることを前提とし,
コマンド名 fort/gcc が希望の FORTRAN言語/C言語 のコンパイラ
の別名(または本名)となっていること を想定している.
なお,快適なプログラム実行環境のためには,ユーザの環境変数 PATH に
/home/SHARE/bin
が含まれるように設定すればよい.
6つのプログラム群 DPAM, GDMP, ANAM, ANAMX, libgm, utils のそれぞれについて,説明書HTML が用意してあり, 各個別プログラムの短い説明と,実行時に必要なパラメータ等が記されている.
この資料に添付の CD-ROM には,HTMLファイル・Fortran90言語/C言語の ソースプログラム と バッチ処理の場合の「Job制御ファイル」のテンプレート その他が,下記のようなツリー構造で収容してある.
===( 一部データ群の非収録について )===
[DEMデータ] 日本列島の地形標高メッシュデータ(DEMデータ)
を生成するために,国土地理院の数値地図 [50mメッシュ(標高)] (刊行廃止)
を使用しているが,その生成処理の結果データをここに収録するには,
別途手続きを行って許可を得る必要があると考えられるので,
この資料には含めていない.
そのかわりに,元データを変換処理して ここに収録すべきデータファイルを
生成する手順を,genDEM40m.html に掲げてある.
なお,同名の研究資料集 no.519 [Nakatsuka, 2009f] に示されている手順で,
DEMデータをすでに生成されている場合には,スクリプト
data/DEM/renewal_script
を実行すれば,
このバージョンで利用する形式のファイルpath名への変換を行うことができる.
[海岸線等データ] ライブラリ サブプログラム wshore
またはそれを呼出すプログラムを利用して 海岸線等を描画するときに必要となる
日本の海岸線等データについては,内容自体は 研究資料集 no.442 [中塚,2006c]
に収録された内容からの更新を行っていないが,プログラムのグローバル化対応
のため,ファイルpath名 の変更が必要である.その処理を容易に行うために,
スクリプト data/shore/renewal_script
を用意した.
データファイルの内容を再録するには,別途手続きが必要と考えられるので,
今回の資料集には,それらデータを含んでいない.
必要に応じて,研究資料集 no.442 [中塚,2006c] を参照されたい.
<<< この資料に含まれるファイルのツリー構造 >>> (大容量ファイルは >5MB (概略容量付) または >1MB の背景色で示した.) openfile0648.html 表紙ページ HTML no0648/ (表紙ページHTML を除く全コンテンツを収容するディレクトリ) | +-- index.html この資料の概要説明(この文書) +-- dpam.html DPAMプログラム群の説明 +-- gdmp.html GDMPプログラム群の説明 +-- anam.html ANAMプログラム群の説明 +-- anamx.html ANAMXプログラム群の説明 +-- libgm.html libgmライブラリの使用法説明 +-- utils.html 各種ユーティリティutils の説明 +-- genDEM40m.html DEM40ファイル群を生成する方法の説明 | +-- indexE.html この資料の概要説明(英語版) +-- dpamE.html DPAMプログラム群の説明(英語版) +-- gdmpE.html GDMPプログラム群の説明(英語版) +-- anamE.html ANAMプログラム群の説明(英語版) +-- anamxE.html ANAMXプログラム群の説明(英語版) +-- libgmE.html libgmライブラリの使用法説明(英語版) +-- utilsE.html 各種ユーティリティutils の説明(英語版) +-- genDEM40mE.html DEM40ファイル群を生成する方法の説明(英語版) | +-- html.tgz 上記の 16 HTMLファイルの圧縮アーカイブ +-- libgm.tgz libgmディレクトリの圧縮アーカイブ +-- lib.tgz libディレクトリの圧縮アーカイブ +-- utils.tgz utilsディレクトリの圧縮アーカイブ +-- dpam.tgz dpamディレクトリの圧縮アーカイブ +-- gdmp.tgz gdmpディレクトリの圧縮アーカイブ +-- anam.tgz anamディレクトリの圧縮アーカイブ +-- anamx.tgz anamxディレクトリの圧縮アーカイブ +-- Tplate.tgz Tplateディレクトリの圧縮アーカイブ +-- data.tgz(10MB) dataディレクトリの圧縮アーカイブ (NGA geoid データ入り) | +-- libgm/ (ライブラリ libgm の個別説明書を含むディレクトリ) | | | +-- libc.html, psplot.html, pspaint.html, ptext.html, cont.html, | | wshore.html, igrf.html, xyconv.html, sml.html, rand.html, | | xw84t.html, hgeoid.html, calma.html, lwkdir.html (以上 日本語) | +-- libcE.html, psplotE.html, pspaintE.html, ptextE.html, contE.html, | | wshoreE.html, igrfE.html, xyconvE.html, smlE.html, randE.html, | | xw84tE.html, hgeoidE.html, calmaE.html, lwkdirE.html (以上 英語) | | | +-- figs/ (個別説明書用の画像ファイル等を含むディレクトリ) | | | +-- cont.png, pmark.png, pspaint.png, ptext.png, ptext2.png, | test.png, wshore.png, cont.ps, pmark.ps, pspaint.ps, | ptext.ps, ptext2.ps, wshore.ps, samples.f90 | +-- lib/ (ライブラリ libgm のソースを含むディレクトリ) | | | +-- @mkall 全サブプログラムのコンパイルとライブラリ作成のスクリプト | +-- psplot.c, pspaint.c, ptext.c, cont.c, wshore.c, | igrf.c, xyconv.c, sml.c, rand.c, xw84t.c, | hgeoid.c, calma.c, lwkdir.c, opnpin.c, getargs.f90 | +-- utils/ (ユーティティ utils のソースを含むディレクトリ) | | | +-- @mkall 全utilsプログラムをコンパイルするスクリプト | +-- cats.c, cat4.c, cat8.c, crlf.c, onlycr.c, onlylf.c, | cview.c, cviewe.c, uncview.c, hdump.c, hdumpe.c, | qpencode.c, qpdecode.c, b64encode.c, b64decode.c, | cxtw84.c, cxw84t.c, igrfcal.c, hgeoidcal.c, utmcal.c, | xycal.c, cxiken.c, cxenik.c, job.c, job1.c | +-- dpam/ (DPAMプログラム群のソースを含むディレクトリ) | | | +-- @mkall 全DPAMプログラムをコンパイルするスクリプト | +---- sml5.c, gsurf.c (共用サブプログラム) | +-- alog2asc.c, daq2asc.c, bdaq2asc.c, dmaq2asc.c, | xldam.f90, xldpn.f90, xldhg.f90, filtadasc.f90, | despike.f90, dvcorr.f90, ecomp.f90, fcomp.f90, | ggrid.f90, ggrids.f90, pframe.f90, pltrk.f90, | pchkdv.f90, pchkmag.f90, pchkres.f90, pchkcomp.f90, | xslin.f90, xslina.f90 | +-- gdmp/ (GDMPプログラム群のソースを含むディレクトリ) | | | +-- @mkall 全GDMPプログラムをコンパイルするスクリプト | +---- xplgobj.c (共用サブプログラム) | +-- sel.f90, seldb.f90, seldb2.f90, gtopo.f90, | adjlv.f90, gadd.f90, gsub.f90, gtrim.f90, | govlay.f90, gojoin.f90, gmerge.f90, txproj.f90, | altchg.f90, gtrf.f90, altx.f90, rearx.f90, | plmap.f90, plmapc.f90, plmapl.f90, plmapcl.f90, | plmapg.f90, plmaps.f90, plmapcs.f90, shade.f90, | xplmap.f90, xplmapc.f90, xplmapcs.f90 | +-- anam/ (ANAMプログラム群のソースを含むディレクトリ) | | | +-- @mkall 全ANAMプログラムをコンパイルするスクリプト | +-- emag.f90, emagf.f90, amag.f90, amagc.f90, cmag.f90, | cmagf.f90, plamag.f90, plamagc.f90, tmcorr.f90, | tmcfix.f90, lcecorr.f90, aaptdp.f90, galtf.f90, | galts.f90, emeq.f90, ameq.f90, ameqc.f90, | cmeq.f90, emeqs.f90, ameqs.f90, ameqsc.f90, | cmeqs.f90, rpmeqs.f90, edeq.f90, adeq.f90, | adeqc.f90, cdeq.f90, edeqs.f90, adeqs.f90, | adeqsc.f90, cdeqs.f90, rpdeqs.f90, calmas.f90 | +-- anamx/ (ANAMXプログラム群のソースを含むディレクトリ) | | | +-- @mkall 全ANAMXプログラムをコンパイルするスクリプト | +-- eimgd.f90, eimga.f90, aimgn.f90, aimgnc.f90, aimgs.f90, | aimgsc.f90, nimgn.f90, nimgnc.f90, nimgs.f90, nimgsc.f90, | cimgn.f90, cimgnc.f90, cimgs.f90, cimgsc.f90, | fimgs.f90, fimgsc.f90, plsim.f90, plsimc.f90, | plxim.f90, plximc.f90, plimv.f90, plimvc.f90, | exdeq1.f90, exdeq2.f90, exdeq3.f90, exdeq4.f90, | axdeq.f90, axdeqc.f90, cxdeq.f90, genroff.f90, | plmvarc.f90 | +-- Tplate/ | | | +-- dpam_tp/ (DPAM群プログラムのテンプレートを含むディレクトリ) | | | | | +-- alog2asc.tp, daq2asc.tp, bdaq2asc.tp, dmaq2asc.tp, | | xldam.tp, xldpn.tp, xldhg.tp, filtadasc.tp, | | despike.tp, dvcorr.tp, ecomp.tp, fcomp.tp, | | ggrid.tp, ggrids.tp, pframe.tp, pltrk.tp, | | pchkdv.tp, pchkmag.tp, pchkres.tp, pchkcomp.tp, | | xslin.tp, xslina.tp | | | +-- gdmp_tp/ (GDMP群プログラムのテンプレートを含むディレクトリ) | | | | | +-- sel.tp, seldb.tp, seldb2.tp, gtopo.tp, | | adjlv.tp, gadd.tp, gsub.tp, gtrim.tp, | | govlay.tp, gojoin.tp, gmerge.tp, txproj.tp, | | altchg.tp, gtrf.tp, altx.tp, rearx.tp, | | plmap.tp, plmapc.tp, plmapl.tp, plmapcl.tp, | | plmapg.tp, plmaps.tp, plmapcs.tp, shade.tp, | | xplmap.tp, xplmapc.tp, xplmapcs.tp | | | +-- anam_tp/ (ANAM群プログラムのテンプレートを含むディレクトリ) | | | | | +-- emag.tp, emagf.tp, amag.tp, amagc.tp, cmag.tp, | | cmagf.tp, plamag.tp, plamagc.tp, tmcorr.tp, | | tmcfix.tp, lcecorr.tp, aaptdp.tp, galtf.tp, | | galts.tp, emeq.tp, ameq.tp, ameqc.tp, | | cmeq.tp, emeqs.tp, ameqs.tp, ameqsc.tp, | | cmeqs.tp, rpmeqs.tp, edeq.tp, adeq.tp, | | adeqc.tp, cdeq.tp, edeqs.tp, adeqs.tp, | | adeqsc.tp, cdeqs.tp, rpdeqs.tp, calmas.tp | | | +-- anamx_tp/ (ANAMX群プログラムのテンプレートを含むディレクトリ) | | | +-- eimgd.tp, eimga.tp, aimgn.tp, aimgnc.tp, aimgs.tp, | aimgsc.tp, nimgn.tp, nimgnc.tp, nimgs.tp, nimgsc.tp, | cimgn.tp, cimgnc.tp, cimgs.tp, cimgsc.tp, | fimgs.tp, fimgsc.tp, plsim.tp, plsimc.tp, | plxim.tp, plximc.tp, plimv.tp, plimvc.tp, | exdeq1.tp, exdeq2.tp, exdeq3.tp, exdeq4.tp, | axdeq.tp, axdeqc.tp, cxdeq.tp, genroff.tp, | plmvarc.tp | +-- data/ (各種サービスデータを含むディレクトリ) | | | +-- DEM/ | | | | | +-- renewal_script DEM40ファイルpath更新用スクリプト | | | | | +-- dem40/ | | | (DEM40ファイル収容ディレクトリ) | | +-- Z51/, Z52/, Z53/, Z54/, Z55/, Z56/ | | | +-- IGRFCOEF/ | | | (IGRF係数ファイル) | | +-- igrf01.coef, igrf02.coef, igrf03.coef, igrf04.coef, | | igrf05.coef, igrf06.coef, igrf07.coef, igrf08.coef, | | igrf09.coef, igrf10.coef, igrf11.coef, igrf12.coef | | | +-- geoid/ | | | | | +-- world.hgeoid(12MB) 世界のジオイド高データ(低分解能)[NGA] | | | | | +-- NGA/ | | | (NGAジオイド高データ収容ディレクトリ) | | +-- Z51/, Z52/, Z53/, Z54/, Z55/, Z56/ | | これらに収容すべき NGAモデルのgeoidデータは | | 圧縮アーカイブ data.tgz に収納されている. | +-- shore/ | | | +-- wcoast.jpn, wriver.jpn 小縮尺図用海岸線・河川データ | +-- world.cst 世界地図データ | | | +-- renewal_script 海岸線等データファイルpath更新用スクリプト | | | +-- Z51/, Z52/, Z53/, Z54/, Z55/, Z56/, | t51/, t52/, t53/, t54/, t55/, t56/ | (海岸線等データ収容ディレクトリ) +-- PDFs/ | | | +-- openfile0648.pdf この研究資料の印刷版用PFD(表紙部分) | +-- Japanese.pdf この研究資料の印刷版用PFD(日本語部分) | +-- English.pdf この研究資料の印刷版用PFD(英語部分) | +-- TESTs/ | +-- Tdpam.tgz(35MB), Tgdmp.tgz, Tanam1.tgz, Tanam2.tgz(7MB), Tanam3.tgz, Tanamx1.tgz, Tanamx2.tgz, Tanamx3.tgz, Tanamx4.tgz, Tanamx5.tgz [テストデータ・結果等の圧縮アーカイブ] ここに収録したプログラム群の動作テストをバッチ処理で 行った際に使用したデータと処理内容の記録を収録した. その内容に興味あるなら,"@Memo.txt", "@scrlog*.txt", "cntl*", "cntl*.log" のファイル内容を参照されたい. (見映えのする結果を示すためのものではない.)