2014-08-10

気圧の海面更正の方式について

{おことわり:完結した調査ではありません。もうすこし調べるといろいろひっくり返るかもしれません。}

地上気象観測では、 現地気圧に加えて海面更正気圧というものを通報することになっています。その方式が諸国まちまちであるという話です。

2014-08-08

国際保健規則の位置づけ

保健方面の人には常識なのだろうけれど。

Kotobank: 国際的に懸念される公衆衛生上の緊急事態
http://kotobank.jp/word/%E5%9B%BD%E9%9A%9B%E7%9A%84%E3%81%AB%E6%87%B8%E5%BF%B5%E3%81%95%E3%82%8C%E3%82%8B%E5%85%AC%E8%A1%86%E8%A1%9B%E7%94%9F%E4%B8%8A%E3%81%AE%E7%B7%8A%E6%80%A5%E4%BA%8B%E6%85%8B

国際保健規則によって国際法上の根拠が与えられるらしいです。

厚生労働省:国際保健規則 日本語(仮訳)
http://www.mhlw.go.jp/bunya/kokusaigyomu/kokusaihoken_j.html

世界保健機関憲章に根拠があるらしいです。

外務省:世界保健機関憲章
http://www.mofa.go.jp/mofaj/files/000026609.pdf#page=15
※ ぐぐって拾ったので最新かどうかはわかりません

第21条 (a) によって保健総会(health assmbly) が保健規則を定める権限を
持っているのだそうです。

世界気象機関条約第8条(a) に相当するのはWHO憲章第22条なのでしょう。
http://library.wmo.int/pmb_ged/wmo_15-2012_en.pdf#page=17

2014-07-28

配信資料に関する技術情報第399号「海水温・海流予報格子点資料の提供について」の訂正

気象振興協議会HPトップページ http://www.w-shinkou.org/ によりますと、技
術情報第399号の訂正が28日づけで 出ているそうです。

気象庁HPのファイル
http://www.data.jma.go.jp/add/suishin/jyouhou/pdf/399.pdf はわかりにくいですが差し替わったものになっています。配信開始が8月7日に迫っていますので、ここ数日にお持ちになった方はご注意ください。

訂正点は、8ページの表※4、塩分の GRIB2 パラメータ番号が 3 であったところが 192
になるというもののはずです。単位は PSU でかわりありません。

WMO 標準 FM92 GRIB のパラメータ番号 10-4-3 は単位 kg/kg ですが、海洋モデ
ルでは塩分濃度を PSU 単位で予報しています。
PSU という単位も公式ではないらしいのですが、このへんをごらんください。
http://en.wikipedia.org/wiki/Salinity#Seawater
質量比ではないことくらいはわかります。

Ruby 1.8/1.9 移植:ファイルの文字コードは面倒だがバイナリファイルならとりあえず話は簡単

めんどくさいですねー移植は。

Ruby 1.9 から String に文字コードが属性としてもたれるようになりました。
それは、まあ、いいことなのでしょうが、文字コードとして正しくないバイト列
を String にしようとすると例外が飛びます。
入出力というか、 IO#read は、まさしくバイト列から String を作る処理なの
で、悪いバイト列を読むとアプリが爆死します。
もちろん例外を rescue で受け止めればいいのですが、受け止めて見たところで
バイト列は失われていて分析も復旧もできません。

どうしろというのでしょう。

答は、たぶん、文字コード ASCII-8BIT としてファイルを開くことなのです。い
や、ぼくはバイナリがみたいんだから。

やりかたですが、File オブジェクトが遠くから渡ってくるならば、 IO#binmode
指令を打ち込むというのが手です。
STDIN はそうするしかないと思います。

もういっこ、簡単で、Ruby 1.8 コンパチブルな方法は、 b オプションつまり
File.open(filename, "rb") で開くことです。
もともと、そうすべきだったんです。
改行コードのことはあきらめましょう。もう、 CR 改行のファイルはないはずです。

2014-07-24

XMLを吐くBUFRデコーダ

前回BUFRデコーダについて調査・紹介したが、XMLに変換しようと考えているのだ。
新しいBUFRデータの評価をする仕事がいっぱいあるんだけど、XMLのバリデーションとか使えないかなと思うわけ。

libecbufr をつかって作ろうかとおもったのだけど、その前に車輪の再発明度の調査。
(車輪の再発明は嫌いじゃないというか、むしろ好きなんだが、人生は短すぎるので)

= python-bufr - Google code
https://code.google.com/p/python-bufr/

Pythonによる実装か、しかもGPLと色めき立ったが、事もあろうにECMWFのFortranデコーダのラッパーだというので萎えた。あと、XMLで検索されたのは、XMLRPCだけみたいだ。何がしたいかはわからない。

= Steve Sullivan の wmobufr
http://www.unidata.ucar.edu/mailing_lists/archives/bufrtables/2010/msg00000.html

これはずばりやりたいことをやりそう。
BSDライセンスも、まあ、いいでしょう。

ただ、Javaなんだよね。うーん。

2014-07-18

オープンソースの BUFR デコーダ

ちょっと調べてみるですよ。

= John Caron のページ

http://www.unidata.ucar.edu/staff/caron/bufr/
いろんな情報源をよくまとめています。

== NCEP BUFRLIB

http://www.nco.ncep.noaa.gov/sib/decoders/BUFRLIB/
tar ファイルを開くとカレントディレクトリにボロボロっと *.c *.f *.F ファイルが出てきます。 preproc.sh
というのを呼ぶとエンディアン判定をして *.F をどうにかしてくれます。あとは、Makefile はないので、

$ f77 -c *.f
$ cc -c *.c

と豪快にいって欲しいらしいです。ただし、アンダースコア関係をホゲるひつようがあります。

いや、まあ、そうまでして Fortran ですからね。ウェブのドキュメントは充実してるんですけどね。またね。

== ECMWF BUFRDC

http://www.ecmwf.int/products/data/software/bufr.html
これも Fortran です。数年前の経験ではいちおう Makefile があって、色々ホゲる必要がありましたが、まあまあさくりと通ったような気がします。

が、install スクリプトの出来が微妙で、定数データがビルドディレクトリを参照し続けてしまうんだったような... 使い方が悪いだけかもしれませんが。

それで Fortran ですからねえ。

== Canadian libECBUFR

https://launchpad.net/libecbufr
ソフトウェアの綺麗さでは定評のあるカナダ気象局です。
なんか launchpad で LGPL なので、よさそうなんですが、 Debian のバイナリパッケージしかないんですよね。なんか bzr
とかいうのでソースを落としてこないといけないんですが、それはどうしたらいいんでしょう。

= 他

SF.net に bufr-info というのがあります
http://sourceforge.net/projects/bufr-info/
これは L じゃない GPL2 ですが、 C++ なのはちょっと私にはついていけないです。
ギリシャ気象局が作っているようです。