2008年 4月 1日 掲載
このページはもとが KDO の個人的なメモであり, 内容の正しさは保証できません.
使ってみておかしいと感じたら, ただちに使用を中止して, 自分で調べなおすなり, 計算しなおすなりしてください.
潮位 ○cm っていうけど,どこから測った値なの? という疑問について調べてみた.
まず最初に,験潮器(潮位計)の 0m を干上がらない十分な深さに設定する. この観測の基準面は「0 of g」と呼ばれる(g は gauge の g か?). 潮汐観測の記録はこの面からの海面の高さである.
潮汐観測データがある程度集まったら,調和解析をおこなう. 月や太陽の周期運動に起因する潮汐の各周期成分に分解するのである. この解析により,平均水面(MSL)と各周期成分の振幅がわかる.
平均水面から主要な周期成分 4つの振幅を足し合わせた値 Z0 だけ下の面 (略最低低潮面という)を「基本水準面(DL, Datum Level for Sounding)」という※. 基本水準面より海面が下がることはほとんどないので, 海図の 0m (Chart Datum Level)はこの面である. 海図と組み合わせて使う潮汐表には基本水準面からの高さが掲載してある.
平均水面のうち特に東京湾の値「東京湾平均水面(T.P., Tokyo Peil)」は, 地図の標高の基準となっている. 潮汐観測を行う験潮所は陸地の水準測量でこの面とつながっている.
※2000年当時.国際水路機関からは天文最低低潮面を使用するように勧告されている.
海面の高さは気圧の影響を受けるので, 潮位観測のデータなどをあつかう際は,気圧補正をする必要がある.
もっとも簡単なのは,1hPa=1cm と換算する式である.
ここで,dh:海面高度補正値(cm),P:気圧(hPa)である.
水理公式集(S60)には
という式が載っていた.ここで ηPS:補正値(cm),p:気圧(hPa).
PO.DAAC(JPL, NASA) の衛星海面高度計データ処理のハンドブック (MERGED GDR (TOPEX/POSEIDON) Generation B MGDR-B Version 2.0, June 23, 1997)には,
とあった.ここで Δh:補正値(mm),Patm:気圧(hPa).
ビットマップに直線を描画するアルゴリズム. もとは Cマガジンの記事だったかな.
ビットマップを表す 2次元配列 b[y][x] に, (x1, y1) から (x2, y2) までの直線を描画(値 1 をセット)する関数 drawline を作ってみた.
#define X 30 #define Y 30 int b[Y][X]; void drawline(int x1, int y1, int x2, int y2) { int dx, dy, sx, sy; int i, de; dx = x2 - x1; dy = y2 - y1; sx = 1; sy = 1; if (dx < 0){ dx *= -1; sx = -1; } if (dy < 0){ dy *= -1; sy = -1; } b[y1][x1] = 1; if (dx > dy){ for(i = dx, de = i / 2; i > 0; i--){ x1 += sx; de += dy; if (de > dx){ de -= dx; y1 += sy; } b[y1][x1] = 1; } }else{ for(i = dy, de = i / 2; i > 0; i--){ y1 += sy; de += dx; if (de > dy){ de -= dy; x1 += sx; } b[y1][x1] = 1; } } }
サンプルプログラムはこちら(drawline_sample.c).
その他に地域ごとに設定されたローカルな基準面がある. 港湾工事や治水工事などのために利用しやすい値となっている. 必ずしも平均水面ではない.
※参考にしたサイトは消滅している.
Fortran の x(i, j) は,C では x[j][i].
[ KDO's Note Index にもどる ] [ KDOホームにもどる ]
(C) 2008 KDO