ホーム  •  ニュース  •  フォーラム  •  アカウント情報  •  サイト内検索  •  新規登録
 ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
 カウントダウンブロック
カウントダウンイベントはありません
 メニュー

[掲示板に戻る全部  1-  最新50
1 大気汚染常時監視測定データ処理用 perl スクリプトのプロトタイプ



森 2004-12-16 23:08:59  [返信] [編集]

東京都の大気汚染常時監視測定データ処理用 perl スクリプトのプロトタイプです。サイトはこちら

連続的に集計や統計処理をするには、どうも書式が気になります。特に風向風速。
そこで、次のようなスクリプトを組んでみました。ご参考まで。
#! /usr/bin/perl
##################################
#
# perl 5.6 からは、UTF-8 は普通に使える。
#
# が、このスクリプト自身が EUC なので、各ファイルは nkf -e を通した後、このスクリプトを通過すべき。
#
##################################
%direction=(
            '   N',    00.0,
            ' NNE',  22.5,
            '  NE',   45.0,
            ' ENE',  67.5,
            '   E',    90.0,
            ' ESE', 112.5,
            '  SE',  135.0,
            ' SSE', 157.5,
            '   S',   180.0,
            ' SSW', 202.5,
            '  SW',  225.0,
            ' WSW', 247.5,
            '   W',   270.0,
            ' WNW', 292.5,
            '  NW',  315.0,
            ' NNW', 337.5,
            '   C', -1,
            );
$selectflag=0;
$winddtflag=0;
$firstflag=1;
while($line = <>){
    if( $line =~ /^#/ ){
        next;
    }elsif( $line =~ /(.*)日,([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*),([^,]*)$/){
        @data=($2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14, $15, $16, $17, $18, $19, $20, $21, $22, $23, $24, $25);
        if( $selectflag == 1 ){
            if( $winddflag == 1 ){
                print $1;
                foreach $name ( @data ){
                    printf("%6.1f", $direction{$name});
                }
            }else{
                print $1, @data;
            }
            print "\n";
        }
    }elsif( $line =~ /[^,]*,測定場所,[^,]*,([^ ,]*)[ ]*,項目,[^,]*,([^, ]*)[ ]*,単位,.*/ ){
        $PLACE = $1;
        $KIND  = $2;
        if( $firstflag == 1 ){
            print $PLACE,"\n";
            $firstflag = 0;
        }
        if( $KIND =~ "^風向\$" || $KIND =~ "^風速\$" ){
            $selectflag = 1;
            if( $KIND =~ "^風向\$" ){
                $winddflag=1;
            }else{
                $winddflag=0;
            }
        }else{
            $selectflag = 0;
        }
    }
}
[掲示板に戻る全部 次100 最新50
BluesBB-0.12 ©Sting_Band


WWW を検索 meteorology.jp を検索

Powered by XOOPS 2.0 © 2001-2006 The XOOPS Project, Maitained by A. Mori
FI Theme :: XOOPS 2 Theme by ImageSquare :: Costomized by matchan and A.Mori