prasinos' work memo

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ベクレルの単位換算

既にいろんなところに出ているが、一度考えておかないと気持ちが悪いので、メモ。

1ベクレル(Bq)は1秒に1回の原子崩壊を起こす放射能と定義されている。

放射性同位体の原子崩壊は、与えられた原子が単位時間あたりに崩壊する確率が一定であるがゆえに、十分多数の原子があれば一定の時定数τをもって指数関数的に減少していく形をとる。

n = n0 exp(-t/τ)

時定数は数が 1/e になる時間であるが、わかりにくいので、ふつうは数が半分になる時間を半減期といって理科年表とかに載っている。たとえば沃素131の半減期は 8.02070 日である。それにしてもよく
こんなに精度よく測定できたものだ。時定数τと半減期Tの関係は T = ln 2・τ ということになる。

さて、毎秒崩壊数はどれだけか。

-dn/dt = (1/τ) n0 exp(-t/τ) = [1/(T/ln 2)] n0 exp(-t/τ) = (ln 2/T) n

であるから、ある時の原子数の (ln 2/T) 倍の個数の原子が毎秒崩壊することになる。


逆に毎秒1崩壊なら、 T/ln 2 個の原子があることになる。

沃素131については、

T/ln 2 = 8.02070 day * 86400 s/day / 0.69314718 = 9.99771e5

個の原子があると1ベクレルである。ちょうど百万個ですよわかりやすいですね。

原子百万個と言われてもイメージがわかないので、アボガドロ数 N_A = 6.02214e23
で割ると、1.66e-18 モル、質量数 131 をかけて 2.17e-16 グラム = 2.17e-19 キログラムである。

近頃話題の単位にすると、

1テラベクレル = 1e12 Bq = 2.17e-4 グラム
1万テラベクレル = 1e14 Bq = 2.17 グラム
63万テラベクレル = 137 グラム

セシウム137だと半減期が 30.1 年なので、1ベクレルあたりの原子数が (30.1
yr/8.02 day) = 1370 倍になる。つまり1ベクレルあたり 1.37e9 個 = 2.28e-15 モル

= 3.12e-13 グラムであるから、

1テラベクレル = 0.312 グラム
1万テラベクレル = 31.2 キログラム

ただし、INES スケールとかでは本当のベクレル値じゃなくて、放射線の影響を実効的に評価した沃素換算ベクレルというものを使うようです。それは

http://www.meti.go.jp/press/2011/04/20110412001/20110412001-1.pdf

から逆算すれば

セシウム137 1ベクレル = 沃素換算 40ベクレル

であるらしいので、

1万テラ沃素換算ベクレル = 0.8 キログラム

というのが正解みたい。

参考: http://blog.livedoor.jp/dankogai/archives/51666668.html
スポンサーサイト

防災科研の「東日本大震災被害情報地 図」を例に OGC WMS の最低限使 い方

防災科研が「東日本大震災被害情報地図」というウェブサイトを開設しています。
http://www.j-risq.bosai.go.jp/ndis/

ここでは消防庁が市町村別にとりまとめた被害情報を図化したものを OGC WMS (Open
Geospatial Consortium の Web Mapping Service) という手順で提供し、これを
Google Maps と組み合わせて表示できるようにしていて、大変すぐれた応用例といえましょう。アクセス集中したらどうなるかは知らんけど。

絶賛に値すると思うのが、WMS の URL を提示していることでしょう。大組織のウェブページでは、せっかく情報が出ているのに再利用が困難なデータ形式なので活用が困難ということがままありますが、これならば他の情報と重ね合わせることもできるし、要すれば任意の図郭で画像を抽出することもできます。(何故リンクじゃないんだろう?と思ったが、素人が踏んでエラーみたいな画面になるのを防ぐ親心と善意に解釈したい)。

この機に、WMS に詳しくない方に紹介になるといいなと思って簡単な画像の抜き出し方を書いてみます。WMS 1.3.0 の仕様
http://portal.opengeospatial.org/files/?artifact_id=14416 読めって紹介してもなかなか読んでもらえませんから。

まず、WMS の URL は
http://www.j-risq.bosai.go.jp/ndis/ndis_wms.php?report=96& だと書いてあります(たぶん96という数字は第96報をあらわすのでしょうから、いずれ変るかもしれません)。これを単にアクセスしてもゼロバイトしか得られません。この & の
後に色々なパラメタをつけて問合せをやる必要があるのです。

で、そもそも何が設定可能なのかを調べるために、まず GetCapabilities という問合せをやります。
http://www.j-risq.bosai.go.jp/ndis/ndis_wms.php?report=96&SERVICE=WMS&REQUEST=GetCapabilities
ここで SERVICE と REQUEST というパラメタを設定しましたが、仕様 7.2.2 の表3
にこの二つが必須と書いてあります。で、必ずこの値です。

何やら XML が出て来ますね。ざっと大つかみで次のような構造になっています。

WMT_WMS_Capabilities
├Service
│├Name
│├Title
│├OnlineResource
│└ContactInformation
└Capabilities
 ├Request
 │├GetCapabilities
 │├GetMap
 │:
 │└GetStyles
 ├Exception
 :
 └Layer



みどころは、大きく2つあって、XPath でいうと
/WMT_WMS_Capabilties/Capabilities/Request/GetMap/Format が得られる画像の形式をあらわし、 /WMT_WMS_Capabilties/Capabilities//Layer が入手可能なレイヤのリストを
与えます。
//Layer/Title や //Layer/Abstract を見ながら欲しいレイヤを決めて、//Layer/Name
で指示するにあたり //Layer/BoundingBox に注意しながら取得範囲を決めるというわけです。

たとえば image/png 形式が入手可能で、半壊戸数(B_UNKWN_HALF_CITY)が見たいとします。
GetMap のパラメタは仕様 7.3.2 の表8 をみてください。えらく沢山必須があって鬱陶しくなりますが、

* VERSION=1.3.0 これは固定です。
* REQUEST=GetMap これも固定です。
* LAYERS=B_UNKWN_HALF_CITY 複数重ね合わせたい場合はコンマ区切りにします
* STYLES=default これは Layer/Style でわかります。
* CRS=CRS:84 簡単にいうと座標が経緯度であることをあらわします。詳細は仕様
6.7.3.2 参照。
* BBOX=137.069,35.762,143.929,40.479 それぞれ西端、南端、東端、北端の座標(ここでは経緯度)。
* WIDTH=550 結果の縦方向ピクセル数です。
* HEIGHT=477 結果の横方向ピクセル数です。
* FORMAT=image/png 結果の形式です。
* TRANSPARENT=TRUE 必須ではありませんがほとんどの場合透明にします。

これをもとの URL に連結して、次の URL を得ます。
http://www.j-risq.bosai.go.jp/ndis/ndis_wms.php?report=96&VERSION=1.3.0&REQUEST=GetMap&LAYERS=B_UNKWN_HALF_CITY&STYLES=default&CRS=CRS:84&BBOX=137.069,35.762,143.929,40.479&WIDTH=550&HEIGHT=477&FORMAT=image/png&TRANSPARENT=TRUE

どうですか? 画像が取れたでしょう? 交差斜線は調査未了で、ここが一番被害の大きいところと考えて大過ないでしょう。

同様にして、GetMap のかわりに GetLegendGraphic すると、色分けの説明画像が取れます。
http://www.j-risq.bosai.go.jp/ndis/ndis_wms.php?report=96&SERVICE=WMS&REQUEST=GetLegendGraphic&VERSION=1.3.0&LAYER=B_UNKWN_HALF_CITY&FORMAT=image/png&SLD_VERSION=1.1.0
(なぜか防災科研のページとスタイルが違いますが、何か必須でない設定が違うのでしょう)

ちなみに、この図郭は気象庁ホームページにあるレーダー画像
http://www.jma.go.jp/jp/radnowc/ のうち東北地方(南部)と同じです。なので、そこから PNG を取ってきて(URLは時々刻々変ります)適当な HTML とか CSS で重ね合わ
せることができます。気象レーダーの上に半透明の半壊戸数をのせれば、被災地のどこに雨が降っているかすぐわかります。

[Centos] libxslt 1.1.26 のインス トールと libxml-ruby, libxslt-ru by の対応

libxml2 を入れ替えるなら libxslt も変えなきゃいけない。というか、こっちが本命。


$ wget -q ftp://xmlsoft.org/libxslt/libxslt-1.1.26.tar.gz
$ tar xfz libxslt-1.1.26.tar.gz
$ cd libxslt-1.1.26
$ sh configure --prefix=/usr/local

またもや "/bin/rm: cannot remove `libtoolT': No such file or directory" が出現するが気にしない。

$ make

ドキュメントの HTML のバリデーションに失敗するが、とりあえず、気にしないことにする。

$ sudo make install

●ruby の対応

まず、何があるか。

$ gem list libx\*

*** LOCAL GEMS ***

libxml-ruby (1.1.4)
libxslt-ruby (0.9.7)

$ ldd /usr/lib/ruby/gems/1.8/gems/libxml-ruby-1.1.4/ext/li
bxml/*.so
libruby.so.1.8 => /usr/lib/libruby.so.1.8 (0xb7e74000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7d42000)
libc.so.6 => /lib/libc.so.6 (0xb7be9000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7bd6000)
libm.so.6 => /lib/libm.so.6 (0xb7bad000)
libnsl.so.1 => /lib/libnsl.so.1 (0xb7b94000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7b7a000)
libdl.so.2 => /lib/libdl.so.2 (0xb7b75000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7b43000)
/lib/ld-linux.so.2 (0xb7f93000)
$ ldd
/usr/lib/ruby/gems/1.8/gems/libxslt-ruby-0.9.7/ext/libxslt/libxslt_ruby.so
libruby.so.1.8 => /usr/lib/libruby.so.1.8 (0xb7e11000)
libexslt.so.0 => /usr/lib/libexslt.so.0 (0xb7dff000)
libxslt.so.1 => /usr/lib/libxslt.so.1 (0xb7dca000)
libxml2.so.2 => /usr/lib/libxml2.so.2 (0xb7c98000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7c85000)
libm.so.6 => /lib/libm.so.6 (0xb7c5c000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7c42000)
libdl.so.2 => /lib/libdl.so.2 (0xb7c3d000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7c0b000)
libc.so.6 => /lib/libc.so.6 (0xb7ab2000)
libgcrypt.so.11 => /usr/lib/libgcrypt.so.11 (0xb7a31000)
libgpg-error.so.0 => /usr/lib/libgpg-error.so.0 (0xb7a2d000)
/lib/ld-linux.so.2 (0xb7f0c000)

これではいかんわけである。

結論から言うと gem のインストールをやりなおす必要はない。やってもいいが意味はない。

$ cat /etc/ld.so.conf.d/usr-local.conf
/usr/local/lib
$ sudo ldconfig

これだけで新しいライブラリが有効になる。

$ ldd /usr/lib/ruby/gems/1.8/gems/libxml-ruby-1.1.4/ext/libxml/*.so
libruby.so.1.8 => /usr/lib/libruby.so.1.8 (0xb7dcb000)
libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0xb7cac000)
libc.so.6 => /lib/libc.so.6 (0xb7b53000)
libz.so.1 => /usr/lib/libz.so.1 (0xb7b40000)
libm.so.6 => /lib/libm.so.6 (0xb7b17000)
libnsl.so.1 => /lib/libnsl.so.1 (0xb7afe000)
libpthread.so.0 => /lib/libpthread.so.0 (0xb7ae4000)
libdl.so.2 => /lib/libdl.so.2 (0xb7adf000)
libcrypt.so.1 => /lib/libcrypt.so.1 (0xb7aad000)
/lib/ld-linux.so.2 (0xb7eeb000)

CentOS - libxml2 2.7.8 のインスト ール

CentOS5 の Libxml2 は 2.6.26 なのだが、さすがに古すぎるので変えることにする。


まずは配布元 http://www.xmlsoft.org/ から ftp://xmlsoft.org/libxslt/ へ。

現在の最新版は 2.7.8 だ。よく知らないが 2.7.6 を使った経験があるのでたぶんこれでいいだろう。

$ wget ftp://xmlsoft.org/libxslt/libxml2-2.7.8-1.src.rpm
--2011-04-07 04:47:01-- ftp://xmlsoft.org/libxslt/libxml2-2.7.8-1.src.rpm
=> `libxml2-2.7.8-1.src.rpm'
Resolving xmlsoft.org... 194.199.20.115
Connecting to xmlsoft.org|194.199.20.115|:21... connected.
Logging in as anonymous ... Logged in!
==> SYST ... done. ==> PWD ... done.
==> TYPE I ... done. ==> CWD /libxslt ... done.
==> SIZE libxml2-2.7.8-1.src.rpm ... 4858837
==> PASV ... done. ==> RETR libxml2-2.7.8-1.src.rpm ... done.
Length: 4858837 (4.6M)

100%[======================================>] 4,858,837 338K/s in 15s

2011-04-07 04:47:18 (326 KB/s) - `libxml2-2.7.8-1.src.rpm' saved [4858837]

$ tar xfz ~/arch/libxml2-2.7.8.tar.gz
$ cd libxml2-2.7.8
$ sh configure
(中略)
config.status: executing libtool commands
/bin/rm: cannot remove `libtoolT': No such file or directory
Done configuring

なんか終わり方が気持ち悪いが一応 exit code 0 なのでまあいいだろう。

$ make check
(中略)
xmlconf/xmlconf.xml is missing
you need to fetch and extract the
latest XML Conformance Test Suites
http://www.w3.org/XML/Test/xmlts20080205.tar.gz
see http://www.w3.org/XML/Test/ for informations
Ran 0 tests, no errors
Total 0 tests, no errors
make[1]: Entering directory `/home/username/work/libxml2-2.7.8/python'
Making all in .
Making all in tests
## running Python regression tests
-- serialize.py
error serializing HTML document 4

若干気味の悪いことをいっているが、まあいいことにする。

$ make install

FC2Ad

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。