とらりもんHOME  Index  Search  Changes  Login

海面上昇の影響

筑波大学農林工学系 奈佐原(西田)顕郎

海面上昇の影響

ひきつづき、数値地形モデルを処理しながら、GRASSの重要な概念を学ぶ。

以下、GRASS:~>はGRASSのコマンドラインのプロンプトのしるしであり、ユーザーは打ち込む必要は無い。(その後を打ち込むこと)

前回のようにGRASSを起動せよ。

皆さんがよく知っているように、温暖化の進行により世界中の海面が上昇することが懸念されている。それがどの程度なのかは議論の余地があるが、長期的には12mくらい上昇するかもしれないという報告もある。そこで、もし仮に海面が今より12m上昇すると、どのくらいの地域が水没することになるか、調べてみよう。

まず、d.rastコマンドでGTOPO_E100N40を表示し、d.zoomコマンドでregionを中国東部から日本西部に到る範囲を拡大しよう:

   GRASS:~> d.mon x0
   GRASS:~> d.rast GTOPO_E100N40
   GRASS:~> d.zoom
GRASS_DEM_EA.png

次に、標高が12m未満の地域を、以下のコマンドで抽出し、表示してみよ:(追記:GRASS7の場合=の前後にスペースが必要です。)

   GRASS:~> r.mapcalc "lowland=if(GTOPO_E100N40 < 12)"
   GRASS:~> d.rast lowland
GRASS_lowland_EA.png

この図で、赤色で示されたところが、海面の12m上昇によって水没する危険の高い地域である。中部日本・西日本では、濃尾平野や大阪平野がそれに含まれる。中国の長江デルタ周辺は広大な地域に影響が出る可能性があり、この中には北京・上海・南京などの大都市も含まれる可能性が高い。

ここで使ったr.mapcalcというコマンドは、ラスターマップ(ここではGTOPO_E100N40という数値地形モデルデータ)に対して四則演算・関数・論理処理などを施し、結果を別のラスターマップ(ここではlowland)にする。if(GTOPO_E100N40 < 12)という条件式は、標高が12mより低いピクセルには1を与え、そうでないピクセルには0を与える。従って、lowlandというラスターマップの値は、この図の赤い部分で1、黄色の部分で0をとる。そのことを、

   GRASS:~> d.what.rast

で確認してみよ。

シェルスクリプトによる半自動化

上の例では、当然ながら、海面上昇を何メートルに想定するかによって、結果が異なる。なので、ユーザーは、12mだけではなく、いろんな数字を海面上昇高として試してみたいと思うだろう。もちろん、その都度、r.mapcalcとd.rastコマンドを繰り返してもいいのだけど、それはめんどくさいので、シェルスクリプトにしてみよう:

   #!/bin/sh
   r.mapcalc "lowland=if(GTOPO_E100N40 < $1)"
   d.rast lowland

これを、lowland.shという名前のテキストファイルとしてカレントディレクトリに保存し、

   GRASS:~> chmod +x lowland.sh

とする。(言うまでもないが、これはlowland.shというシェルスクリプトに実行権限を与える操作である)

そして、以下のように、任意の数(ここでは100)をつけて実行すればよい:

   GRASS:~> ./lowland.sh 100
GRASS_lowland100_EA.png

この100というのが、想定する海面上昇(メートル単位)である。この数字を変えれば、どんな高さに対してもGRASSは自動的に処理をやってくれる。このように、コマンド(この場合はlowland.shというスクリプト)を実行させるとき、コマンドの名前に続けて与える数値などのことを「引数」とか「パラメータ」と呼ぶ。このスクリプトの中では、$1という変数(シェル変数)が、それをあらわす。$1は、スクリプトに与えられる引数のうち1番目のもの、という意味である。もし複数の引数をスクリプトに与える場合、それは順に$2, $3, ...という名前のシェル変数としてあらわされる。

ラスターマップの取扱い

これまで扱ってきた、GTOPO_E100N40とか、lowlandなどのデータは、GRASSでは「ラスターマップ」と呼ぶ。データをインポートしたり、r.mapcalcなどのコマンドで新しいデータを作ると、それに対応するラスターマップができる。

現在、どのようなラスターマップができているかを調べるには、以下のようにg.listコマンドを使う:

   GRASS:~> g.list rast
   ----------------------------------------------
   raster files available in mapset PERMANENT:
   GTOPO_E100N40        lowland
   ----------------------------------------------

(戻るにはqキーを押す)

ここで、例えばlowlandというラスターマップはもう不要だから消去したい、というようなときは、以下のg.removeコマンドを使う:

   GRASS:~> g.remove rast=lowland

こうやったあとに、実際にlowlandが消えていることを、g.listコマンドで確認してみよ。 (ブラウザの「戻る」ボタンで戻ってください。)

GIS入門に戻る。

Last modified:2020/03/14 16:41:16
Keyword(s):
References:[GIS入門]