prasinos' work memo

スポンサーサイト

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

3D view by ArcView

Today I learned to make how to create 3d view.

3D view of camp randall hill


Here's some notes:

* 3d analyst extension is needed to create this image.
* cad reader extension is needed to read DXF file.
* to show table for selected feature, hit table button on toolbar.
スポンサーサイト

scale dependency

The professor said that the wetness index is defined by w = ln(a/tanβ), where a is upstream drainage area divided by contour length and β is downward slope angle. I felt very unconfortable with this equation, since area divided by length is given to log. Nonsense!

I asked "Is it scale dependent?" The reply was no. If we calculate the equation on 100x100m grid and 10x10m grid, both of the UDA area and contour lengths per pixel will be 10:1.

His idea seems to be to express water influx divided by width of outlet (i.e. proportional to some dimensional value such as depth of water), so it makes sense.

So why did I feel so unconfortable? The answer is it is still scale dependent with respect to units of measurement. If we calculate the equation in meters and feet, we will have different answer. Unfortunately (or fortunately), the factor (such as meter/feet) is converted to "plus constant" term by logarithm function, so the effect is not so significant in this case.

This indicates the difference of culture or discipline between geography and physical sciences.

kakasi build tree removed

Recently, I have found there have been too many access to kakasidict file on my web server (URL does not point to that file). I decided to remove kakasi build tree. Those who want to see it should be able to find original distribution of kakasi.

Still I need LDM

Yesterday I visited SSEC and learned that decoded tornado warning data is available via ADDE protocol. I thought I don't need LDM any longer.

But I was wrong. I STILL NEED LDM for two reasons:

  1. As my knowledge, ADDE is pull-style protocol. There is timing problem and data management problem to trigger some action from pull-style protocol data.
  2. We will still need some other informations --- warning text to evaluate how severe the storm is, or something like that.

forgot to add to crontab

I forgot to add the program (to put pqact spool into RDB) to crontab. When I log on to the net I expected to see the machine load, but I'll have to wait for a while.

file or pipe?

In pqact.conf, I can specify one of data storage methods such as FILE, GDBM or PIPE. PIPE sounds the most flexible, so I tried to invoke PIPE. But the result was terrible. Dozens of processes instantly filled the process table and load average soaked up (around five when I decided to kill LDM).

I need better way.

One possibility is to use FILE to output to named pipe (I have to test it does work or not). But the important thing is the decoder side must not stop: otherwise PQACT will hang up soon.

Mediocre but robust way is to read files. Then timing is the problem. How can we know "now is the time to invoke decoder?" I have to invoke decoder from cron. Then the problem is "which files to read?"

The cut-off time approach is one solution. But I cannot read some bulletines that come late, and worse, I cannot see decode result until the cut-off time.

I chose to read all files in the spool directory. In order to avoid INSERTing too many files, I record file length at another database table.

Rsync

I found that CONDUIT is not the only source of evil. I forgot that I have routinely rsync my home directory from Japan. I thought that the load is negligible, but that is not the case. That was the main cause of 15-16CDT (=20Z-21Z) spike of load average.

As a quick remedy, I changed the time of crontab to 17I = 08Z = 03CDT. I'm afraid that it might be harmful for Japanese side. Hmmm.

Bulletines to RDB - 電文をDBに

My finch is receiving a bunch of bulletines using LDM. That's fine. So I have to how to use them. Now I use the typical configuration of pqact.conf using FILE specification, so all bulletines are just appended to files. When I use a bulletin, I will have to search and extract a needle from haystack. Bulletines are classified into some groups of files, but it makes situation more complicated - one filename convention for a kind of data, and another for another host. I hate thinking issues like that. I decided to store all text bulletines into MySQL databse. So far I think there are two kinds of text bulletines. One is just text message like warning, so one record per one bulletin is appropriate. Another kind of bulletin is code forms like METAR, SYNOP, or TEMP, which consists of several number of coded messages. I think this should be splitted up as many as messages.

CONDUIT 絞る

重すぎる。毎日ロードアベレージが2を越えるなんて困る。 (間違って同じファイル名でアップロードしたので消えた。ごめん) CONDUIT が悪いと考えられるので、とりあえず 1度全球解析だけに絞って見る。(9/24 11:16) で、その結果。 load average 9/24
やっぱりこれはこれでいくしかあるまい。合掌。

Visual Basic の くらす

わかった。 Visual Basicでは ふつうの くらす(くらす ずで しろぬき りったいで かかれる)が newできないのは、 Applicationの ように しすてむに つくりつけに なっている おぶじぇくと だからだ。

LDM data format

As far as I have checked, all text message begins with Ctrl-A (ASCII SOH) and ends with Ctrl-C (ASCII ETX). GRIB message begins with "GRIB" and ends with "7777".

I hope I can inject data into LDM in the same format.

monitoring load average by MRTG

LDM started to work. I'm excited watching log. But one hour later, I found that the machine is working so hard that I can't log in to the machine. It was partly I tried to log in to console, but it is enough slow even if I logged on via network. 続きを読む

補間と領域スペクトルモデルの準基底

シンドグリッドの補間をどうするか。

線形補間はガクガクするんじゃないかと思う。

本当は緯度円を構成する4通の GRIB を集めてからフーリエ補間するのがいいんだろうけど、それはシステム構成上の足かせになるから嫌だ。 続きを読む

unpack API のつくり

アンパックをする C ライブラリを作って Ruby の拡張ライブラリとしてラップする。で、C ライブラリは Ruby を切り離しても使えるようにさせたいので、最大の可搬性を与えるためにはどうしたらいいか、という例によって例のパラノイアな話。 続きを読む

ruby-grib

GPV を使ったデータ処理をするとなると、やっぱり GRIB のデコードということになる。で、wgrib を別プロセスで起動してパイプだか fopen で読めばいいんだけど、ダサすぎるので、ruby の拡張ライブラリをえいやっと自分で書いた。
続きを読む

IDD/LDM を動かしてみたよ

Unidata IDD からのデータフィードがついに今日はじまった。データが流
れ込んで来たときは本当に感激したよ。

IDD には LDM と OPeNDAP という二種類のソフトウェア・プロトコルがあ
るが、今回は伝統的な LDM である。HTTP ベースのプル型の OPeNDAP に
対して LDM は Usenet/NNTP に類似したフィード型のシステムである。

先週のうちにソフトウェアのインストールを済ませて、今日気象学科の接
続先におじゃましてフィードの設定をしてもらった。インストールのこと
は UNIDATA の LDM のページに書いてあるから省略。で、最低限フィード
を受けるために何が必要かについてまとめておく。

すべてのデータはフィードタイプとヘッダー行で識別される。フィードタ
イプが Usenet のニュースグループ、ヘッダー行がメッセージ ID みたい
なもんである。Usenet で複数のニュースグループにクロスポストができ
るみたいに、あるデータが "IDS|DDPLUS" といった複数のフィードタイプ
を持つこともできるが、メッセージ ID と同ように複数のヘッダー行を持
つと言うことはできないようである。GTS から NOAAPORT 経由で流れて来
るデータについては、WMO ヘッダーがそのままヘッダー行である。どんな
名前があるか、フィードタイプの一覧については一応 IDD のページに概
略は書いてあるが詳細はまだよくわからない。

デーモン的に動くプログラムは ldmd と pqact の2つがある。ldmd はホ
スト間のフィードを行う。それ以外のことはなにもしない。で、ニュース
のスプールに相当するのがメッセージキューという1枚のでかいファイル
で、ldmd と pqact がそれぞれメモリマップして使うんだと言う。pqact
はキューのデータが更新されたら pqact.conf に書いてあるパターンアク
ション列に従ってデータをディスパッチする。パターンはフィードタイプ
の OR 列とヘッダーの正規表現マッチがある。アクションには少なくとも
FILE (追加書き) と PIPE がある。で、ファイルに書き込んだ場合は
cron で定時起動される scour が scour.conf に従ってファイル名のパタ
ーンマッチで古くなったファイルを消していく。

ldmd の設定は ldmd.conf で行われる。接続要求を受ける側の設定は
ACCEPT で始まる行で、フィードタイプとホスト名で許可がされる。要求
する側の設定は REQUEST で始まる行で、フィードタイプとヘッダーの正
規表現で要求がかけられる。CONDUIT のような巨大なデータフローを持つ
フィードタイプは正規表現で絞りたくなるが、REQUEST 行を複数書くと
rpc.ldmd がその分 fork してしまうようである。自機のみかけのロード
アベレージ (負荷) が高まることもさることながら、接続相手の負担も
あるのでちょっと考えなくては行けないだろう。

でだ。CONDUIT は 2GB/hour ということなのだ。全部拾ったら1日でディ
スクが埋まってしまう。それどころか、大量のデータ転送が始まったと思
しき時間にマシンのロードアベレージが急上昇して GNOME からログイン
できなくなってしまった。これはなんとかしなくてはならないだろう。と
りあえず、MRTG でモニターしてみることにした。

Grid と Lattice

どこまで通用する話か知らないが、Axing によれば

Grid: 格子点周辺の矩形領域の平均(あるいは何らかの代表値)
Lattice: 格子点そのものの値

という使い分けがあるんだそうな。GISci の教科書等あたるべきなんだろうが今手が回らない。

ラップトップの cron が出すメール

前項のようなわけで、気がついた。ネットワークにつなげていないことが多いので、どうしたものか悩ましい。

[LDM] don't forget to forward mail

I didn't forward email to ldm user. I got hourly error messages, but I wasn't aware about that. It was too bad.

Note that postfix will not read .forward file when it is group-writable. I don't like this feature because now most of Linux sysadms create one group per one human user, so there is little chance of security problem, but anyway postfix do so and I have to remember that.

Also note that /etc/aliases will not take effect unless /usr/bin/newaliases is invoked. It sounds like SunOS 4.1.x in early 1990s, but that's what postfix is.

Perhaps the most important tips is: when you change something around email, always use 'tail -f /var/log/maillog' (or equivalent log file) and try sending several combinations of sender and recepient. I found above problems doing so.

LDM pre-install work AS ldm USER

I forgot to do setup for environment variables. LDM doc tells me to do so. So I wrote .profile and .bashrc. But it isn't read when I use sudo -s. I don't know why. I hope it works when it's needed.

LDM pre-install work

Before installing LDM, there must be some preparations. LDM's web site has good explanations, so go there if readers are expecting detailed information.

I created user and group ldm. I could choose id number, so I used 388 (TCP port number). Other number should be okay, but I had no reason to do so.

Then I made settings for /etc/services (port 388) and /etc/rpc ("ldm 300029 ldmd").

Don't forget (1) to restart syslogd and (2) to make home directory of "ldm" user. I'm not sure how should the ownership and permission of "/usr/local/ldm" be. I used 0755 ldm.ldm.

That's all. The next thing will be compilation.

LDM source code downloaded

I am going to install LDM to my linux box.

The first thing to do is to download software. Interestingly, there is no binary distribution. I had to download source code.

I read some guide to install. The lesson is I have to make sure the clock of my Linux box is accurate by NTP. I checked the configuration and found that ntp.conf refers to something.redhat.com. It's not too bad but unrespectable behaviour. In UW-ERSC, ntp[123].cs.wisc.edu is recommended server.

テーマ:フリーソフト - ジャンル:コンピュータ

竜巻に巻き込まれる

8月18日にストウトンで死者1、フジタスケール3の竜巻があった。で、わたしがご厄介になっている某センターはそういうときに衛星画像解析をすることになっている(私は担当じゃない)のだが、夏休みということもあって、竜巻の軌跡の位置を把握するのに手間取るなど、初動の遅れが課題として認識されるようになったわけである。

竜巻の位置をリアルタイムで知ろうと思ったら、NWS の出している警報を見るのが一番だ。テレビを見ているだけでは漠然と「デーン郡」としかわからないが、警報文には位置が書いてある。 (改行位置が崩れるが御容赦)


238
WFUS53 KICT 132309
TORICT
KSC049-140000-
/O.NEW.KICT.TO.W.0046.050913T2309Z-050914T0000Z/

BULLETIN - EAS ACTIVATION REQUESTED
TORNADO WARNING
NATIONAL WEATHER SERVICE WICHITA KS
609 PM CDT TUE SEP 13 2005

THE NATIONAL WEATHER SERVICE IN WICHITA HAS ISSUED A

* TORNADO WARNING FOR...
ELK COUNTY IN SOUTHEAST KANSAS.

* UNTIL 700 PM CDT

* AT 605 PM CDT...NATIONAL WEATHER SERVICE DOPPLER RADAR INDICATED A
SEVERE THUNDERSTORM CAPABLE OF PRODUCING A TORNADO. THIS DANGEROUS
STORM WAS LOCATED NEAR HOWARD...OR 40 MILES SOUTHEAST OF EL
DORADO...AND MOVING EAST AT 30 MPH.

* LOCATIONS WITHIN THE WARNING INCLUDE...
ELK FALLS...HOWARD...LONGTON...MOLINE

THIS IS A DANGEROUS STORM. MOVE INTO YOUR TORNADO SHELTER NOW!

LAT...LON 3755 9642 3735 9640 3733 9596 3760 9597

$$

BOWMAN


エルドラドの南東40マイルというのはジオコーディングしないといけないからちょっと困るが、注目は最後の LAT...LON で始まるくだりだ。これは警報のポリゴンであって、0.01 度単位で経緯度を知らせている (に違いないと思うがいちおう確認したほうがいいよなあ)。日本では自治体をいくつか組み合わせた区域に警報がでるが、アメリカでは 1km スケールのポリゴンで警報が出るようになっているのである。

で、これさえあれば 1km スケールで場所がわかる。ASTER みたいな高解像度衛星の高価な画像を発注する時に無駄が無くなると期待されるわけである。が、誰も電文形式を知らない。というか、どんな警報があってどうやって取れるかも心許ない。そもそもリアルタイムで NWS からデータを取得していないんだから仕方がない。

で、しょうがないから私が LDM をインストールして動かすことになった。気象学教室と話をつけてフィードしてもらう予定である。ま、ただ働きみたいなもんであるが、どうせ後の研究で LDM を使ってデータ取込したいし、サーバ借りている恩もあるししょうがないかなあ。

brainstorming

* Need to learn how to use MySQL C API.
* But development in Ruby is faster.
* The C API is only needed in products that should be written in C, such as NuSDaS replacement.
* GRIB decoder must be finished.
* Need to remember how to write an extension library for Ruby.
* I think it is the quickest way to write GRIB decoder in C, wrap it into Ruby ext library, and write a script to decode GRIB and inject into MySQL database.
* Need to learn about TIFF (for GeoTIFF)
* Want to try to make contour map using Google Map API.
* Then I'll have to explore about bounding box of a map drawn by Google Map.

ArcObjects 第二課の印象

講義というか Lab がメインみたいなんだけれど、Burke という人の書い
たテキストを中心に進められる。で、いきなり第一回の Lab タイムで第
二章の課題をやった。

で、これがすごいんだわ。

ArcMap はほとんど MS Office みたいな作りになっていて、
[Tool]-[Customize] を開くと既に作られたコマンドがずらり。このアイ
コンをツールバーにドラッグドロップかけるだけで如何様にもカスタマイ
ズできるってだけでも素人的にはすげーところだと思うけれど、New
Command を作ろうとするといきなり Visual Basic 統合開発環境が立ち上
がって VBA でプログラミングできるという次第。

で、ArcMap のコマンドやら何やら一切合財がオブジェクトやらメソッド
やらという名前で VBA から叩けるようになっているらしい。

で、実習開始後 20 分くらいの学生が業務プログラムのメニューを作って
しまえるわけだ。商売になるためにはここまで作らんといかんですよ。

GrADS との差は、とてもとても測り知れないところまで行っている。

そうすると、気象データを使うところでもビジネスシーンでは ArcMap が
もう一頑張りして独占市場を築いてしまうというような展開になる可能性
はかなりあるのかなあと思う。

もっといい(?) 地図投影法の本

回転楕円体から球への等角写像として、 Snyder の本に載っていない変な方法を載せている本をみつけた。

Frederic Pearson II, 1990: "Map Projections: theory and applications."
pp. 372. CRC Press, Roca Raton, Florida. ISBN 0-8493-6888-X.

さすがウィスコンシン大学地理学科名誉教授... といいたいところなのだが、アマゾンの書評には数式が間違っているという評がたらたら。

よく読んでみないであまり安易に人に勧めてはいけないかもしれない。悩ましいところだ。

METAR station map using Google Map API

I made a METAR station map using Google Map API. 続きを読む

Google Map API を使ってみた

自分のデータを入れた地図を Web に入れるのにどんなソフト使ってますか。

正軸メルカトル図法でいいなら、ソフトは要りません。地図データも要りません。必要なのは JavaScript ブラウザだけ。

Google Map API を使うだけで Google MAP と同じ地図(拡大縮小移動衛星などのコントロールもつけられる)の上に経緯度をつかって点・線・マーカーをプロットできる。

当然、Google Map と同様、少なくとも日米英加については海岸線だけじゃなくて道路鉄道データが載っているからあなたの街の通り一本まで分解できる。

ま、データが1点でないのなら、ぴっちり収まる図郭を計算するためにメルカトル投影の計算ができないといけないけど、そんなの気にしない気にしない。... っていうかましな方法あるかな?

最初は JavaScript ウゼーと思ったのだけど、実際に使ってみるとブラウザ側で済ませたほうが嬉しい処理は多い。所詮スクリプト言語だからデータの数をチェックしないで巨大データを放り込んだら(たとえば7000個のマーカーをプロットするとか)ブラクラになってしまうわけで、たぶんバックエンドでのデータ絞込みが欠かせないけれど、類似製品の電子国土のように ActiveX コントロールにしてしまうと、データは(CGI とかじゃなくて)スタティックに置けるかもしれないが、Windows 機でしか使えない& ActiveX コントロールをインストールしないといけない(他人の機械じゃ使えない)といったことになるので、ちょっと制限がきつすぎるわけで。

あ、ひょっとしたら JavaScript でデータの絞込みをしたらバックエンド CGI 廃止できるか? いや、それって原理的に電子国土の効率を悪くしたもの以上のものにはならないよなあ。

ところで、あの、google さん、北極と南極は見られないんですか。(google に言えってそうですね)

DBMS は我々をディレクトリから解放する

わかっている人には当然すぎる幼稚な話なのだが、データベースがデータがどこにあるかを隠してしまうから、プログラムのカレントディレクトリがどこであるかは問題ではなく、プログラムを好きなディレクトリに移しても動作する (relocatable) のだ。

MySQL を使ってデータベースを作って、そこからデータを取り出す CGI をいろいろ作っているうちに気がついた。

だから、プログラムの入出力をすべてデータベース(関係データベースである必要はない)にしてしまうことには意味があるし、何かご利益があるのなら fopen(3) をエミュレートする価値もあるかもしれない。

でも、いいことと思う人と悪いことと思う人が分かれるだろうな。プログラムの運用管理からは、起動条件がひとつ減るわけだからとても助かる。何でもファイルにして手元に置かないと安心できない人は、とんでもないファシズムだと思うだろう。

脱線するけれど、プログラムとデータを別パーティションに分ける(UNIX だと /usr と /var とか)のも、単にディスクフル・クラッシュ対策ではなく、嫌でもフルパスでアクセスせざるを得ないのでデータベース化と同様の効果がある(データベースの定義にもよるが、ファイルシステムがデータベースなら当然ね)。ただ、フルパスは当然長いし、シンボリックリンクなんかで悲しいことがいろいろあるかもしれない。それに、あまのじゃくが '../../../../var/run/program/data.dat' なんてやってアクセスした日には relocatability は壊れてしまうという点で、別のデータベースシステムを使う意義があるといえよう。

g95 ついに Zero Known Bugs 達成

g95 がついに Zero Known Bugs を達成したらしい。
これは歴史的な日だ。ついに、Fortran 95 は誰にでも使えると胸を張って言える。いや、まあ、すぐに新しいバグくらい出てくるとは思うけれど。

もっとも、個人的にはやれやれという話でもある。またパッケージのコンパイルしなおしだからだ。今朝 DCL を再コンパイルしたと言うのに、全部やりなおしだ。

FC2Ad

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