2009年11月19日

調査地のGISデータベース構築に挑戦(7) SRTMデータをGRASSデータベースにとりこむ

前回のETM+データに続き、今回は第4回でダウンロードしたSRTMのデータをGRASSデータベースにとりこむ。

第4回では、SRTMデータを"BIL"形式と"DTED"形式でダウンロードした。GRASS GISへの読みこみは、後者のほうがお手軽なので後者を用いる。DTEDデータは、拡張子が".dt1"のひとつのファイルである。ムカラバを含むのは"s03.dt1"である。

GRASS ロケーションの作成

前回同様、wxPythonを使ったGUIを用いてGRASSを起動する。前回"-wx"オプションつきで起動したので、~/.grass6rcにデフォルトでwxPythonを用いるよう設定されて いるはずだ。

> grass

あとの手順は、基本的に前回のETM+のとき同様だが、今回はデータファイルがひとつだけなので、ロケーションのデフォルト範囲を手動設定せず、画像ファイルのものをそのまま用いる。詳しい手順は前回を参照のこと。

衛星画像のインポート

これも手順は前回と同じだが、今回はファイルが一つだけなので、ディレクトリを選ぶのではなく、直接ファイルを指定する。GRASS内での地図名は「SRTM」とした

おまけ: 等高線データの作成

GUIメニューの「Raster」を眺めていたら、サブメニューに「Generate contour lines」という項目があった。せっかく標高データを読みこんだのだから、等高線を作ってみよう。

「Generate contour lines」をクリックするとコマンド実行画面になる。

「Required」タブ

  • ソースとなる地図、この場合はSRTM@PERMANENTを選択する。
  • 作成する等高線データ地図の名前を決める。ここでは、contourとした。

「Optional」タブ

  • 「Maximum contour level」に、標高の上限の値を入力する。ムカラバ国立公園内の最高峰は900m程度なので、ここでは1,000mとする。
  • 「Minimum contour level」に、標高の下限を入力する。ムカラバの最低レベルは50m程度なので、ここでは0mとする。
  • 「Increment between contour lines」に、等高線の間隔を入力する。ここでは20mにしてみる。

そして「Run」。あっけなく等高線を描くことができた。

2009年11月12日

調査地のGISデータベース構築に挑戦(6) ETM+画像データをGRASSデータベースにとりこむ


いよいよ、第3回でダウンロードしたランドサット画像をGRASSにとりこむ。

下準備

ダウンロードファイル、elp185r062_7t20000806.tar.gzを解凍して中身を見る。

> tar zxvf elp185r062_7t20000806.tar.gz
> cd elp185r062_7t20000806
> ls
p185r062_7k20000806_z32_nn61.tif  p185r062_7t20000806_z32_nn20.tif
p185r062_7k20000806_z32_nn62.tif  p185r062_7t20000806_z32_nn30.tif
p185r062_7p20000806_z32_nn80.tif  p185r062_7t20000806_z32_nn40.tif
p185r062_7t20000806.met          p185r062_7t20000806_z32_nn50.tif
p185r062_7t20000806_z32_nn10.tif  p185r062_7t20000806_z32_nn70.tif

雰囲気でだいたいわかるが、拡張子".tif"のついているファイルが衛星画像で、拡張子の直前の番号がバンド名。拡張子が".met"のものはテキストファイルで、この衛星画像のメタ情報が記されている。

このメタ情報をもとにGRASSのロケーションを作成する。

GRASSロケーション作成

GRASSを起動する。ここでは、wxPythonを使ったGUIを用いる。

> grass -wx # -wx オプションでwxPython GUIを指定。

  • 起動画面右の「Location wizard」をクリック
  • 次画面でデータディレクトリとロケーション名を入力
  • 次画面で「Use coordinate system of selected georeferenced file」をチェックする。

ダウンロードしたETM+画像はGeoTIFF形式で、画像の測地系、楕円体、投影法の情報がメタファイルに記されている。上記を選択することで、GRASSが選択されたTIFFファイルの地理情報を読みとってくれるのだ。ちなみにダウンロードされたファイルは、WGS84測地系(WGS84楕円体)にもとづき、UTM(ゾーン32、赤道のY値は0)に投影されたものである。

  • 次画面で、どのバンドでもよいからtifファイルを選択。
  • 次画面で「Finish」をクリックすると、「Do you want to set the default region extents and resolution now?」と表示されるので、「はい」を選択する。

ここで、ロケーションのデフォルト範囲と地上解像度を設定する。.metファイルの以下の行を参考に、東西南北の座標値を入力する。

SCENE_UL_CORNER_MAPX = 596362.500   # 画像の左上のX座標値
SCENE_UL_CORNER_MAPY = -216514.500  # 同、Y座標値
SCENE_UR_CORNER_MAPX = 778164.000   # 画像の右上のX座標値
SCENE_UR_CORNER_MAPY = -243019.500  # 同、Y座標値
SCENE_LL_CORNER_MAPX = 557631.000   # 画像の左下のX座標値
SCENE_LL_CORNER_MAPY = -396406.500  # 同、Y座標値
SCENE_LR_CORNER_MAPX = 739489.500   # 画像の右下のX座標値
SCENE_LR_CORNER_MAPY = -422940.000  # 同、Y座標値

地上解像度は、もっとも高解像度のバンド8、すなわちパンクロ画像にあわせる。.metファイルを見ると、

GRID_CELL_SIZE_PAN = 14.250   # パンクロ画像の地上解像度
GRID_CELL_SIZE_THM = 57.000   # 赤外線画像の地上解像度
GRID_CELL_SIZE_REF = 28.500   # 可視光画像の地上解像度

とあり、14.250mとわかる。x,yとも同じ値を記入する。

これでロケーションが作成され、自動的に「PARMANENT」というマップセットがその中に作られる。

GUIで今作成したロケーションのマップセットPARMANENTを選択して左下の「Start GRASS」をクリックすると、GRASSが起動する。

GRASSへの衛星画像のインポート

GRASSの「GIS Layer Manager」画面で、File → import raster map → Multiple raster data import using GDAL を選択する。
「Choose directory」で、ETM+画像を格納したディレクトリを指定する。Select file extensio を "tif"として、「import」ボタンをクリックすると、ディレクトリ内のすべてのtif画像をGRASS GISにインポートしてくれる。

インポートされたデータの名前は、それぞれのファイル名と同じになっている。

これは、コマンドラインでの操作としては、それぞれのファイルに対し

r.in gdal -o input="filename" output="filename"

を行なったのと同じことになる。

必要に応じて、インポートした地図データの名前は変更できる。

次回はSRTM画像をGRASSにとりこみ、SRTMの標高データをもとに等高線地図を作成する。

2009年11月 7日

調査地のGISデータベース構築に挑戦(5) GRASSの準備

前回、次はランドサットデータをGRASSにとりこむと記したが、その前にGRASS GISについておさらいし、データベース構築の方針を決めておく。

GRASS GISとは

GRASS GISとは、オープンソースのGISソフトウェアで、主としてラスター解析を得意とするが、次第にベクター解析も充実してきている。LinuxおよびMacOSXで動作し、WindowsではCygwin環境でのみ使えていたが、最近Windows版もリリースされた。

ガボンの研究機関にGISを導入する際、有償ソフトウェアだと、その後のサポートやメンテナンス、あるいは拡張にお金がかかる可能性があるため、オープンソースソフトウェアを使うことは有意義だ。

GRASS GISの詳細情報は下記のウェブサイトが参考になる。

参考書はこちら。わかりやすい英語で記してある。



GRASS データベース構築の方針

GRASS GISでは、ひとつのデータベースの中に複数の「ロケーション(location)」をもつことができる。そして、おのおののロケーションには一つまたは複数の「地図セット (mapset)」を置くことができる。

それぞれのロケーションは、固有の座標系 (coordinate system)と投影法 (projection)、および範囲 (region) によって定義づけられる。つまり、同じロケーションの中にある地図は、座標系と投影法が共通で、ロケーションの範囲内の情報しか得られない。

ひとつのロケーションで用いる地図は、同じテーマや作成者、利用者といったカテゴリによって区分することができる。その区分が地図セットだ。

さて、現在手持ちのデータセットは、第2回に記した4種類、すなわちGPSデータ、Landsat ETM+、SRTM標高データ、そしてCarpe作成の植生図等だ。今後、QuickBirdの画像や、手持ちの空中写真も加えてゆきたい。

データベース構築にあたっては、まずデータセット毎に、データソースの座標系や投影法にあわせた、個別のロケーションを作成することにする。そして、作業用のロケーションを別途作成し、最終的にすべてのデータソースをそこに統合する形をとることにする。

次回こそ、衛星データをGRASSにとりこむ。

2009年11月 5日

Ubuntu 9.04 に GRASS 6.4をインストール

Ubuntu 9.04 の公式リポジトリに収録されているGRASS GISパッケージは、6.2ベースなので、最新の6.4にアップグレードした。ちなみに、9.10には6.4が収録されている。

アップグレードの方法は以下のとおり。

  • /etc/apt/sources.list に以下の2行を追加
deb http://ppa.launchpad.net/qgis/ubuntu jaunty main
deb http://les-ejk.cz/ubuntu jaunty multiverse
  • Synapticでリポジトリを更新すると、Grassとその関連パッケージが「アップグレード可能」になるので、「すべてアップグレード」を選択してアップグレードする。
  • python-openglをインストールする。
参考: GRASS 6.4 rc4 for Ubuntu 9.04

2009年11月 1日

調査地のGISデータベース構築に挑戦(4) SRTMデータの入手

前回ランドサット画像を入手したのにひきつづき、今回は標高データとして、SRTMデータを入手する。
SRTMとはスペースシャトルが軌道上から合成開口レーダーで取得した,ほぼ全地球の3Dデータデータです。

 以前からversion1のデータが入手可能でしたが,現在はさらにデータ処理を行い,扱いやすくしたversion2が入手可能です。(ちずろぐ別館より抜粋)

USGSの解説によると、2000年2月にスペースシャトル・エンデバー号が全世界の三次元撮影を行なったそうだ。アメリカ合衆国の地形は解像度約30m、それ以外の地域だと約90mの画像が手にはいる。


ダウンロードはランドサット画像と同じく、USGSのサイトからである。EarthExplorerで Elevation→SRTM にチェックを入れ、地図で場所を選んで検索する。検索の手順は、前回のエントリに詳しく書いた。

ムカラバ周辺では、2002年に作成された画像が手にはいった。 "BILフォーマット" と "DTEDフォーマット"のファイルがダウンロードできる。フォーマットの形式についてはこれから勉強。とりあえず両方ダウンロードした。

次回は、前回ダウンロードしたランドサット画像を開いて、GRASS GISにとりこむ作業を行なう。