レイヤのインポートと座標変換
今回はアメダスのデータをGRASSに登録し、
座標変換を行い以前作成したデータと重ね合わせます。
データ準備
eosmaiに入りアメダスのデータのディレクトリに入る
cd /DATA/
cd Meteo
cd normal_amedas
ルビーファイル get_amedas_normal.rbについて
これはアメダスのデータをgrassで読み込めるようファイル変換するスクリプトである
ルビースクリプト説明
64行目から72行目をいじることで他のデータに変換・利用が出来る
69がメイン
3行目でデータの保管している位置を指定
6行目でデータの対象範囲を指定している(単位はdegree)
9行目は温度のidを表している。このidを変えることで他のデータを引き出すことが出来る
21行目から24行目でデータを読み込みます
26行目から欲しい領域を選択します
31行目で配列を初期化します
32行目からデータを取ります
33行目で列単位で記載されているデータを分割します。まず、要らない部分を削り、
34行目緯度の度に相当します、
35行目が分に相当します
36行目が標高になります
38行目v[0]は53+3桁の数字の三重県の地図データの場所をさします,v[3]の場所は名前をさします
gsubで空白を削除します。capitalizeで取得した英語の地域名の最初の文字だけ大文字にします
46行目でid番号ごとにデータをいれる
49行目でファイルを呼び出している
53行目 9文字目から4文字分をとって調べる
55行目 12月分の月別データ+年平均を取る
56行目 RMKが8だったら正常、0なら×
67行目 正常値か確認
69行目 データを書き出す
アメダスデータの中身
アメダスのデータを見てみます
less amedasu_station_index.csv
日本語が文字化けしています
qボタンを押して中止してください
次はこのように打ちます
less amedasu_station_index.csv | nkf -w
nkfはアプリ名です
これで動かすと、文字が流れてしまいます
そこで、命令の順番を変えてみましょう
nkf -w amedasu_station_index.csv | less
こうすると文字の流れを止める事が出来ます
wc amedasu_station_index.csv
文字化けはしていますが最後の行で1600と出ています
1行目はヘッダですから1ひいて、1599行がデータという事が分かります
lessで中を見てみましょう
ルビーファイルの起動
まずアメダスのディレクトリを作成し、中に先生のディレクトリからルビースクリプトをコピーします
cd ~/Workshop
mkdir AMeDAS
cd AMeDAS
cp /home/kaoru/Workshop/AMeDAS/get_amedas_normal.rb .
lsで内容を確認してみましょう
次に、ルビースクリプトを起動してみましょう
ruby get_amedas_normal.rb
temp_normalというデータが作られますので中を見てみましょう
データがきれいに並べられているのが分かります
grassによるインポート
cd /Workshop/AMeDAS/
grass62
まずリージョンを確認し、デフォルトに戻しましょう
g.region -p
g.region -d
g.region -p
モニタを立ち上げます
データを眺めましょう
データをインポートします
cat temp_normal | v.in.ascii -z z=3 cat=0 out=temp_normal col='lon double,lat double,temp double,station_id integer,station_name varchar(20)'
cat=0はカタログ番号を0から入れる
colには経度,緯度,温度,id,などいれる。''で内容をくくる。要素 文字の形式,で一セット
エラーが出ず、node=28とでてたらオッケー
ちゃんと作成されたか確認
表示してみる
xが表示されているだけです
このデータは座標系が異なる(日本測地系)のため、座標が少しずれています。
座標を変換しましょう
まずgrassを終了しましょう
また、grassを立ち上げます
新しいロケーションを作成します
右下のボタンを押します
LOCATIONに次のように入れます
Mie_japan
無いから作るときかれますので
enter
座標を聞かれるのでlong-latitudeを選びます
B
enter
メモを聞かれるので適当に入れましょう
(例)Mie japan
これでいいかときかれます
y
なんか聞いてきます
y
座標系一覧が確認できますので行いましょう
list
tokyoが日本測地系なのでそれを選びます
tokyo enter
詳細を聞かれますのでリストを確認しましょう
list enter
tokyoを選びます
1 enter
座標を入れます
北-35:20N
西-135:45E
東-137E
南-33:40N
間隔は以下の通り
0:0:02.25
0:0:01.5
※失敗した場合(作業の際は要注意)
rm -r ~/GRASS/Mie_japan
ディスプレー立上げ
データのインポート
cat temp_noemal | v.in.ascii -z z=3 cat=0 out=temp_normal_j col='lon double,lat double,temp double,station_id integer,station_name varchar(20)'
データの確認
データの表示
grassを閉じます
レイヤを日本測地系から世界測地系に変換します(v.projの利用)
grassを立ち上げます
project locationをMieで選択します
あと、その右は名前を選択します
モニタを立ち上げます
レイヤを確認します
レイヤを表示します
コマンドの内容を確認します
変換を行います
v.proj in=temp_normal_j lo=Mie_japan out=tmp_normal_w
新しいレイヤを表示して比較してみましょう
d.vect temp_normal_w col=red
※d.zoomを利用して見てみましょう
空間内装をします
現在のデータ間隔が50mメッシュなので大きすぎるため、リージョンを変更します
g.region ns=0:0:30 ew=0:0:45
内容を確認しましょう
先回作成したマスクを削除します
次に、v.surf.rstコマンドの確認をします
実際に入力してみましょう
v.surf.rst in=temp_normal_w elev=temp1 layer=0
ラスタデータが出来上がりますので確認しましょう
念のために画面をリフレッシュさせます
ラスタを表示してみましょう
先ほどのベクタも表示してみましょう
ラスタの中身を確認してみましょう
以上です
最終更新:2008年07月22日 12:23