foss4g 2011 tokyo grassハンズオン

Post on 30-Jun-2015

3.292 Views

Category:

Documents

6 Downloads

Preview:

Click to see full reader

TRANSCRIPT

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSを用いた衛星・GISデータ処理の基礎

OSGeo財団日本支部岩崎亘典

 FOSS4G 2011 Tokyo ハンズオンセッション

はじめに● 本日の中身

● GRASSについて– 特徴や歴史など。日本におけるGRASS

● GRASSの基本的操作– データ構造について、インポート・エクスポート、

● GRASSを用いた衛星画像分析– 東日本大震災被災地域(主に福島~宮城)における

津波浸水域の推定

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSとは?● 強力な解析機能を持った、オープンソースのデス

クトップFOSS4Gの代表格● デスクトップFOSS4Gの代表格

– もうすぐ30歳!– 現在は最新版が6.4.1。10/11に6.4.2RC

● 強力な解析機能– ラスタ、ベクタ、画像を問わない

● オープンソース– GPLで公開

2010

, Mar

kus

Net

eler

1987USA(GRASS 2.0, no Web!)

1995USA 1997,

Univ. ofHannover,Germany

2002ITC-irst Trento+ Baylor

GRASS: 25 28 years of GFOSS

2011/10/12

 FOSS4G 2011 Tokyo ハンズオンセッション

解析機能について● ラスタ、ベクタ、イメージ、etc...

2010

, Mar

kus

Net

eler

Geostatistics with GRASS and R-statsR statistical software is run inside a GRASS session: R reads and writes data directly from/to GRASS

 FOSS4G 2011 Tokyo ハンズオンセッション

日本におけるGRASS● 升本先生とベンカ先生

● この二人は外せない● 大阪市大と(株)オーク

ニーによる国際化● 現在も文科省の受託プロ

ジェクトでチュートリアル等を作成中● 配布したDVDに入っていま

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSを使う上での基礎知識(1)● 基本はコマンドラインで行うプログラム

● GUIは有るけど、GUIを使ってコマンドを呼び出している

 FOSS4G 2011 Tokyo ハンズオンセッション

代表的なコマンド例コマンド 動作内容

d.rast ラスターマップレイヤーを表示、またはオーバーレイ(重ね書き)する。

d.rgb 指定した3つのラスターマップレイヤーを赤色、緑色、青色にそれぞれ対応させ重ね合わせ表示する。

g.gisenv ユーザーの現在のGRASS変数を出力、または変更する。

g.region 対象とする地域の範囲や分解能を変更したり、標準に戻すなどの管理を行う。

r.contour ラスターマップレイヤーから、指定された高さの等高線マップを作り出す。

r.mapcalc ラスターマップレイヤーの数値演算を行う。

r.univar ラスターマップの非NULLセルから単変量統計を計算する。

v.info ベクトルマップの基本情報を出力する。

v.to.rast GRASSのバイナリーベクトルマップをGRASSのラスターマップへ変換する。

i.composite 指定した3つの画像バンドファイルからカラー合成画像を作る。

i.fft ラスター画像に対して高速フーリエ変換(FFT)を行う。

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSを使う上での基礎知識(2)● 独自データベースを作成し、その中に格納

● 実際はディレクトリ構造で管理● 標準的なGISデータのファイルは使用可能

– v.in.ogrやr.in.gdalを使ってインポート● r.externalまたはv.externalで外部ファイルも使用可

● 階層的フォルダ構造● 上位から

– GISデータディレクトリ– ロケーション– マップセット

 FOSS4G 2011 Tokyo ハンズオンセッション

データベースの説明

GISデータディレクトリ ロケーション マップセット ジオメトリ・属性データ

C:\GIS_DATA\GRASS localtion1

location2

PERMANENT

mapset1

mapset2

RASTER data

VECTOR data

Volume data

GISデータを格納しておくためのフォルダ特殊な機能は無し

重要!!測地系と座標系を定義異なるものは混在出来ない!

後で変更不可

(+解析範囲と解像度)

重要!!実際に作業をする単位PERMANENTには共通するデータを格納各mapsetに個別データを入れる

(用途別、形式別等)

実際のデータ中を見る機会はほとんど無い

 FOSS4G 2011 Tokyo ハンズオンセッション

引用:国土交通大学(@geo80k氏)作成資料

 FOSS4G 2011 Tokyo ハンズオンセッション

実習の流れ(1)● 目標:東北地方太平洋沖地震で発生した津波で、

浸水した範囲を推定● ロケーションとマップセットの作成

● 一番重要● データのインポート

● ラスタデータ(LANDSAT)● ベクタデータ(国土数値情報)

● データ表示の基礎● ラスタとベクタの表示のしかた

 FOSS4G 2011 Tokyo ハンズオンセッション

実習の流れ(2)● NDWIの算出● 津波浸水域の推定

● 二時期の画像の差分– MASKの作成、Mapカルキュレータの使用法

 FOSS4G 2011 Tokyo ハンズオンセッション

使用するデータ(衛星画像)● LANDSAT 5号(TM)および7号(ETM+)

● 津波浸水域の推定– 津波前(ETM+, 2002年4月)– 津波後(TM, 2011年4月)

● 撮影時期が同時期の方が望ましい

 FOSS4G 2011 Tokyo ハンズオンセッション

今回の分析 ~画像の差分~

● 左が津波前、右が津波後の画像● この二つの画像で違う部分を抽出する

● 二時期の画像の差分を評価

 FOSS4G 2011 Tokyo ハンズオンセッション

LANDSATデータのダウンロード● GLOVISもしくはEarthExplorerがおすすめ

● GLOVIS http://glovis.usgs.gov/

● EarthExplorer http://edcsns17.cr.usgs.gov/NewEarthExplorer/

● 見た目はEarthExplorer、使い勝手はGLOVIS

 FOSS4G 2011 Tokyo ハンズオンセッション

 FOSS4G 2011 Tokyo ハンズオンセッション

使用するデータ(国土数値情報)● 市町村境界線

● 対象は宮城県南部から福島県にかけて

 FOSS4G 2011 Tokyo ハンズオンセッション

使用するデータ● 「GIS_DATA」以下にあります

● tifとshpフォルダ

 FOSS4G 2011 Tokyo ハンズオンセッション

使用するGRASSのバージョン● GRASS 6.4SVN

● 文科省受託プロジェクト「FOSS4Gを活用した衛星データ活用のためのオープンリソースの開発」の成果品– http://www.osgeo.jp/foss4g-mext/

– チュートリアル等もあります

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSのインストール

 FOSS4G 2011 Tokyo ハンズオンセッション

インストール● コピーした「installer_v2.0.0」フォルダの中の「WinGRASS-6.4.SVN-r43346-1-Setup.exe」をダブルクリック● Vistaの場合は右クリック、「管理者として実行」

– あとは自動的に進む

 FOSS4G 2011 Tokyo ハンズオンセッション

日本語化の実行● 「installer_v2.0.0\日本語化パッチ」の中の「日

本語化パッチの適用方法.txt」を参考に日本語化を実行● Vistaおよび7の場合、「Program Files」フォルダ

にコピーする際メッセージが出ますが、「続行」を押して下さい。

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSの基本操作

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSの起動● GRASS 6.4 SVNをダブルクリック● 右のような画面が出るはず

● ここで作業を行う– GISデータディレクトリ– ロケーション– マップセット

を規定する

 FOSS4G 2011 Tokyo ハンズオンセッション

復習:データベースの説明

GISデータディレクトリ ロケーション マップセット ジオメトリ・属性データ

C:\GIS_DATA\GRASS localtion1

location2

PERMANENT

mapset1

mapset2

RASTER data

VECTOR data

Volume data

GISデータを格納しておくためのフォルダ特殊な機能は無し

重要!!測地系と座標系を定義異なるものは混在出来ない!

後で変更不可

(+解析範囲と解像度)

重要!!実際に作業をする単位PERMANENTには共通するデータを格納各mapsetに個別データを入れる

(用途別、形式別等)

実際のデータ中を見る機会はほとんど無い

 FOSS4G 2011 Tokyo ハンズオンセッション

ロケーションの作成● GISデータディレクトリを「C:\GIS_DATA\GRASS」に設定

● ロケーションウィザードをクリック

 FOSS4G 2011 Tokyo ハンズオンセッション

ロケーションの設定● ロケーション名は「TOHOKU_UTM54」● 「地理参照ファイルを選択」をクリック● 「GIS_DATA\tiff\L5_2011095」内の「L5_2011_0405_B30.TIF」を選択

 FOSS4G 2011 Tokyo ハンズオンセッション

ロケーションの設定● 要約が出るので「終了」

をクリック● メッセージはOKをク

リック● 作成した「TOHOKU_UTM54」を選択、「PERMANENT」をクリックして「GRASSの起動」

 FOSS4G 2011 Tokyo ハンズオンセッション

GRASSの画面の説明● GRASS GISレイヤーマネージャ

● 表示するデータや処理の選択● GRASS GIS Map Display

● データの表示

 FOSS4G 2011 Tokyo ハンズオンセッション

ベクタファイルのインポート● 「ベクトルデータをインポートします」をクリック

● OGRデータソース名に「shp」の中の「ana_area.shp」を選択

● 出力するベクトルマップを「ana_area」して実行● 終了したら閉じる

 FOSS4G 2011 Tokyo ハンズオンセッション

データの表示● 「レイヤマネージャのベクターマップレイヤーを追加」をクリック

● 「入力するベクトルマップ名」で「ana_area」を選択● 選択などで何を表示するか決める(areaにする)

 FOSS4G 2011 Tokyo ハンズオンセッション

データの表示● このようにデータが表示される

● 四方向矢印で移動、虫眼鏡で拡大・縮小● コメント矢印で属性表示

– ここで一度終了。ファイル→終了で

 FOSS4G 2011 Tokyo ハンズオンセッション

新しいマップセットの作成● 起動画面の「マップセットの作成」をクリック● 「LANDSAT」と入力。これを選択して起動

 FOSS4G 2011 Tokyo ハンズオンセッション

ラスタのインポート● 「ラスタデータのバルクインポート」を選択

● 単独のものインポートする場合はその上● ソースタイプは「ディレクトリ」を選択

 FOSS4G 2011 Tokyo ハンズオンセッション

ラスタのインポート● 「参照」ボタンをクリックしGIS_DATAの下の「L7_2002110」を選択

● 最後がB10~50と70を選択して「インポート」● 時間がかかります。お待ち下さい

 FOSS4G 2011 Tokyo ハンズオンセッション

ちょっとした注意!● 新しいマップセットは、本来はGRASSを終了させ

ることなく作れます● が、Windows版では出来ません...

● GIS_LOCKというファイルが作られないため?● なので、マップセットの作成や変更の際には、一度GRASSを終了して下さい。● ごめんなさい・・・。

 FOSS4G 2011 Tokyo ハンズオンセッション

ラスタデータの表示● ラスタデータの表示として二つ説明

● 単バンド画像– 白黒の画像

● RGB合成画像– R(赤)、G(緑)、B(青)に衛星データのバンド

を仮想的に割り当てるやり方

 FOSS4G 2011 Tokyo ハンズオンセッション

衛星画像のバンドについて● 波長毎にデータを記録

している● LANDSATの場合は右

– その他はチュートリアルを参考

 FOSS4G 2011 Tokyo ハンズオンセッション

単バンドデータの表示● 「ラスタマップの追加」をクリック● 「d.rast」で表示するマップを選択

● ここではB40を選択

 FOSS4G 2011 Tokyo ハンズオンセッション

データの表示● ベクタデータと同様に表示される

● 移動、拡大、縮小等も同じ

 FOSS4G 2011 Tokyo ハンズオンセッション

RGB合成バンド● 「ラスターマップレイヤーの追加」の「RGBレイヤー追加をクリック

 FOSS4G 2011 Tokyo ハンズオンセッション

RGB合成バンド● 上から

● <red>にL7_2002_0420_B30@LANDSAT● <green>にL7_2002_0420_B40@LANDSAT● <blue>にL7_2002_0420_B20@LANDSAT

を設定

 FOSS4G 2011 Tokyo ハンズオンセッション

RGB合成画像● カラーで表示される

● これはナチュラルカラーといわれる

 FOSS4G 2011 Tokyo ハンズオンセッション

LANDSATの場合のカラー合成

● トゥルーカラー:R=band3, G=band2, B=band1● フォルスカラー:R=band4, G=band3, B=band2● ナチュラルカラー:R=band3, G=band4, B=band2● 中間赤外合成::R=band7, G=band5, B=band3

● サンプルは、チュートリアルで

 FOSS4G 2011 Tokyo ハンズオンセッション

L5のデータのインポート● 「L5_2011095」のデータもインポート

● 「ラスタデータのバルクインポート」から● 「GIS_DATA\tiff\L5_2011095」を選択● L5_2011_0405_B20~B50をインポート

 FOSS4G 2011 Tokyo ハンズオンセッション

ちなみに元のLANDSATデータの命名規則● フォルダ

LE71070342002110EDC00

● ファイル

● L71107034_03420020420_B10.TIF

● GLOVIS等からDLするとこれに準拠する● 今回はセンサー名、日付、バンド名に変えています

センサー名5号ならLT5

path row

年 DOY年始めから数えて何日目か

センサー名5号ならL5

path row

年 月日

row?

バンド名

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの算出

 FOSS4G 2011 Tokyo ハンズオンセッション

実習の流れ(2)● NDWIの算出● 津波浸水域の推定

● 二時期の画像の差分– MASKの作成、Mapカルキュレータの使用法

 FOSS4G 2011 Tokyo ハンズオンセッション

NDVIとNDWI● NDVI(正規化植生指数)←よく使われる

● 植物のバイオマスや生育状況を反映– 1~-1の値を取り、大きいほど植生が多い

NDWI(正規化水指数)←今回使う● 地表面の水の状態を反映

– 1~-1の値を取り、大きいほど水分が多い

NDVI=band4−band3band4+band3

NDWI=band3−band5band3+band5

 FOSS4G 2011 Tokyo ハンズオンセッション

津波浸水域の評価

● 左が津波前、右が津波後の画像● この画像からNDWIを算出● 津波前にNDWIが小さく、津波後に大きい所を浸水域と定義

 FOSS4G 2011 Tokyo ハンズオンセッション

新しいマップセットの作成● 「INDEX」というマップセットを新しく作成

● 一度GRASSを終了してから作成– NDWIの計算結果を保存するマップセット

 FOSS4G 2011 Tokyo ハンズオンセッション

MASKとは● 解析範囲を限定するために使う

● 沿岸の市町村だけを対象とする– 全体を計算するのは時間がかかるため

● ラスターからしか作れない● 市町村境界のベクタからラスタを作成● 上記のラスタから作成

 FOSS4G 2011 Tokyo ハンズオンセッション

マップタイプの変換● 「ベクトル→ラスター」をクリック● 「入力するベクトルマップ名」に「ana_area@PEARMANENT」

● 「出力するラスターマップ名」に「ana_area」

 FOSS4G 2011 Tokyo ハンズオンセッション

マップタイプの変換● 「オプション」タブを選択

● ラスター値のソースを「val」● ラスター値を「1」

● 変換結果を表示して確認

 FOSS4G 2011 Tokyo ハンズオンセッション

MASKの作成● 「ラスタ」→「マスク」をクリック● 「MASKを使用するためのラスターマップ」に先ほどの「ana_area」を選択して実行

 FOSS4G 2011 Tokyo ハンズオンセッション

画面表示を更新● 画面の更新ボタンをクリック

● 右下に「マスク」と表示されていればOK

 FOSS4G 2011 Tokyo ハンズオンセッション

異なるマップセットの利用● 現在のマップセットは「IDNEX」

● そのままでは他のマップセットは使えない● 「LANDSAT」のデータも使えるようにしたい

● NDWIの計算やデータの表示● 「マップセット作成」をクリック● 「LANDSAT」をチェック

 FOSS4G 2011 Tokyo ハンズオンセッション

表示テスト● 合成カラー表示を行う● 「LANDSAT」の中のレイヤを選択

● 「L5_2011_0405」で、R=B30, G=B40, B=B20● 限られた範囲だけが表示

● MASKが設定されているため

 FOSS4G 2011 Tokyo ハンズオンセッション

拡大してみる● 浸水域の確認できる

 FOSS4G 2011 Tokyo ハンズオンセッション

地図と地図の演算● NDWI等の算出は「地図と地図の演算」

● 「同じ場所」にあるデータの計算をする– 単純な例は、下のような足し算

1 3 3

11

+ =

3 5 1

1 5

5 4

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの算出● MapCalculatorを使う

● 「ラスターマップカルキュレータ」をクリック

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算式● 計算式は下の通り

● 2002年4月のNDWIを計算● 「ラスターマップの名前」をNDWI_200204● 「関数を挿入」から「float(x)」を選択● 「float(x)」のxを消して、「マップを挿入」から「L7_2004_0420_B30@LANDSAT」を選択

NDWI=band3−band5band3+band5

 FOSS4G 2011 Tokyo ハンズオンセッション

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(2)● 括弧の中に「-」記号と「L7_2002_0420_B50@LANDSAT 」を追加

● 括弧の外に「/」を追加して分子の入力完了

 FOSS4G 2011 Tokyo ハンズオンセッション

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(3)● 計算式を選択してコピーし、「/」の後にペースト● 分母の括弧の中の「+」を「-」に変える

 FOSS4G 2011 Tokyo ハンズオンセッション

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(4)● 計算結果は小数型

● 整数の方が扱いやすい● 計算結果が整数になるように工夫

● 計算結果を1000倍● int(x)を加える

– float(x):ラスターを小数型にする関数– int(x):ラスターを整数型にする関数

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(5)● 式全体を「()」でくくり、最後の「*1000」を加える

● 計算式の初めに「int(x)」を入れる● マップ演算の関数を挿入から「int(x)」を選択

● 「int(x)」の「x」を消して「)」を最後に移動● 実行をクリック

 FOSS4G 2011 Tokyo ハンズオンセッション

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(6)● 計算結果を表示

● ラスタマップの追加から

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(7)● 2011年4月のNDWIを計算

● 中の計算式をコピー● メモ帳などのに貼り付け

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(8)● 「L7_2002_0420」を「L5_2011_0405」に置換

● 置換したものをコピー

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの計算(9)● マップカリキュレータに貼り付け● 「新しく作成する・・・」を「NDWI_201104」に

して「実行」

 FOSS4G 2011 Tokyo ハンズオンセッション

津波後のNDWI● 計算結果の表示

 FOSS4G 2011 Tokyo ハンズオンセッション

間違えた場合● ファイル→マップ管理→削除

 FOSS4G 2011 Tokyo ハンズオンセッション

津波前後のNDWIの比較

● 赤い所が高い値→水域

 FOSS4G 2011 Tokyo ハンズオンセッション

浸水域の定義● 浸水後のNDWIから浸水前のNDWIを引いて、値

の高い所を「浸水域」と定義

 FOSS4G 2011 Tokyo ハンズオンセッション

NDWIの差を計算● 出力ファイル名はDIFF_201104_200204● 式にはNDWI_201104@INDEX - NDWI_200204@INDEXと入力

 FOSS4G 2011 Tokyo ハンズオンセッション

結果を表示● 実際の浸水域以外にも高く出る

● 2002年のNDWIが高い所は除外する● if(x, a, b)を使用

 FOSS4G 2011 Tokyo ハンズオンセッション

if(x, a, b)の説明● 条件式xを満たした場合

● aという値を取る● それ以外はbという値をとる

● 「a」や「b」にif構文が入るのも可能● if (x, if(y, a, b), c)といった形

 FOSS4G 2011 Tokyo ハンズオンセッション

浸水域の計算● ラスターマップ名に「FLOOD」● 関数として「if(x, a, b)」を選択

 FOSS4G 2011 Tokyo ハンズオンセッション

浸水域の計算● さらに、「a」の所に「if (x, a, b)」を入れる

 FOSS4G 2011 Tokyo ハンズオンセッション

浸水域の計算● 最初のxに「NDWI_200204@INDEX <=200」

● これで2002年の水面等を除外● 次のxに「DIFF_201104_200204@INDEX >=150」● これで浸水域を抽出

 FOSS4G 2011 Tokyo ハンズオンセッション

浸水域の計算● aに「1」、bに「null()」といれる

● 条件を満たした場合は1,それ以外は値無し● そして、実行

 FOSS4G 2011 Tokyo ハンズオンセッション

結果を表示してみる● これだけだとよく分からない

 FOSS4G 2011 Tokyo ハンズオンセッション

衛星画像と重ね合わせる● おおよその浸水域(湛水域?)は把握出来ている

● 山地にエラーもある

 FOSS4G 2011 Tokyo ハンズオンセッション

お疲れさまでした!!● 長丁場のハンズオン、お疲れさまでした● この実習はあくまで「練習」です

● 今回求めた面積等はあまり正確ではありません– エラーも多くある

● 時間の都合で、基礎的な説明をはしょっている部分があります● 特に「領域」(region)の概念● 衛星利用チュートリアルに詳しく説明してあるの

で、そちらをご参考に

 FOSS4G 2011 Tokyo ハンズオンセッション

ご意見御質問などは● OSGeo.JPディスカスML

● http://lists.osgeo.org/mailman/listinfo/osgeojapan-discuss

● アンケートにもご回答下さい

 FOSS4G 2011 Tokyo ハンズオンセッション

ありがとうございました!

講師の連絡先e-mail: niwasaki@affrc.go.jp

Twitter: @wata909

top related