Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Foss4 g勉強会2011

3,912 views

Published on

FOSS4G勉強会@名古屋の山本さんの発表資料を、山本さんの依頼により代理でアップロード致しました。

Published in: Technology
  • Be the first to comment

Foss4 g勉強会2011

  1. 1. 学部教育と研究における GRASS GIS の 利用例の紹介 名古屋大学名古屋大学 大学院生命農学研究科大学院生命農学研究科 山本一清山本一清
  2. 2. 学部教育編@ 2011 年度  私の担当する GIS/RS 関連科目 ➢ 講義:生物環境計測学 ✔ 学部3年対象選択科目: RS の紹介を数コマ ➢ 実習:生物環境科学科実験実習 ✔ 学部3年対象必修科目(通年)の一部 ✔ GIS/RS 基礎:半日(2コマ) ×6 回 ✔ 対象学生数:約 40 名
  3. 3. 生物環境科学科実験実習@ 2011 年度  内容( RS 編) ➢ RS 概説 ➢ 衛星画像のカラー設定 ➢ 合成カラー表示 ➢ デジタルナンバー (DN) と放射輝度 (R) ➢ 植生指標 ➢ 衛星画像による植生分類(教師付き・教師なし分類)  使用データ ➢ Landsat/TM 画像(公開データ)
  4. 4. 演習・課題演習の内容( RS 編の一部抜粋)  演習Ⅰ-1.様々なカラー合成表示  演習Ⅰ-2.バンド6(熱赤外域)を利用した名古屋 市の地表面温度分布の解析  演習Ⅰ-5. NDVI による森林域の抽出  課題演習Ⅰ-1.教師付き分類結果の評価  課題演習Ⅰ-2.教師なし分類の各分類クラスは何 を代表しているのだろう?
  5. 5. 生物環境科学科実験実習@ 2011 年度  内容( GIS 編) ➢ GRASS のデータ構造 ➢ ラスター Map の構造&ラスター→ベクトル変換 ➢ 代表的な GRASS のラスター解析機能 ✔ バッファー解析機能・空間統計機能・地形解析機能他 ➢ GIS による資源管理(演習) ➢ GIS による生態系管理(課題演習)  使用データ ➢ 稲武演習林の DEM 及び仮想森林データ ➢ 植生図(自然環境 GIS )
  6. 6. 稲武演習林仮想森林データ Table 1. 稲武演習林林小班データ 林班 No. 小班 優先樹種* 林齢(年) 材積 (m3 ) CAT_ID SHORTNAME SCODE AGE VOLUME I 1 101 Ka 1 37 498.4 2 102 Bu 5 56 763.6 3 103 Hi 4 41 574.4 4 104 Bu 5 46 484.0 5 105 Ka 1 42 534.1 6 106 Ka 1 35 565.5 7 107 Ka 1 32 434.0 II 1 201 Ka 1 30 433.3 2 202 Ka 1 36 480.9 3 203 Hi 4 15 143.0 4 204 Ka 1 28 342.4 5 205 Bu 5 33 241.4 6 206 Ak 2 35 396.9 7 207 Hi 4 15 178.2 8 208 Bu 5 50 500.0 III 1 301 Su 3 25 562.9 2 302 Ak 2 25 482.7 3 303 Su 3 27 701.8 4 304 Hi 4 25 664.9 5 305 Su 3 38 767.3 6 306 Su 3 43 1067.0 IV 1 401 Su 3 43 1293.1 2 402 Su 3 41 1231.9 3 403 Bu 5 48 750.3 4 404 Ak 2 40 329.6 5 405 Hi 4 38 302.2 6 406 Hi 4 20 342.8 7 407 Su 3 42 535.5 8 408 Su 3 22 155.9 9 409 Bu 5 40 905.1 10 410 Hi 4 25 184.9 11 411 Su 3 46 700.4 12 412 Hi 4 20 203.9 13 413 Su 3 40 478.4 V 1 501 Su 3 26 503.0 2 502 Ak 2 33 453.3 3 503 Hi 4 35 520.6 4 504 Su 3 38 305.6 5 505 Hi 4 44 362.4
  7. 7. 演習・課題演習の内容( GIS 編の一部抜粋)  演習Ⅱ-1.資源構成表の作成  演習Ⅱ-2.間伐対象の森林および木材生産に適し た森林の抽出  演習Ⅱ-3.伐採作業を行う森林の抽出  演習Ⅱ-4.森林作業の容易さの評価  課題演習Ⅱ-1. GIS による希少種保護区域の推定
  8. 8. 実習環境 @2011 年度  Server (Linux) ➢ OpenSSH Server ➢ VNC Server ➢ GRASS GIS 6.4  Client PC (WindowsXP) ➢ UTF-8 TeraTerm Pro with TTSSH2 ➢ VNC Viewer Internet 実習用独自サーバー × 2台 学部サテライトラボ(学生・ TA ・教員:計 40 数名)
  9. 9. 独自サーバー(?)構成  ShopMade PC + α ➢ CPU PhenomIIX6 ➢ メモリ 16GB ➢ HDD 500GB ➢ OS: Ubuntu Server  約 30 人が利用  ShopMade PC + α ➢ AthlonX2 ➢ メモリ 8GB ➢ HDD 500GB ➢ OS: Ubuntu Server  約 13 名が利用 実習開始時に大量同時アクセスすると接続に時間がかかる! 来た学生から順次アクセスさせれば問題なし!
  10. 10. Client PC の画面@ 2011 年度 WindowsXP Ubuntu Server
  11. 11. これまでの経緯  学部の GIS 教育は 10 年以上前に開始 ➢ GIS 教育は、講義形式より実習・演習形式が効果的! ✔ 学生分(当時は 20 数名 ) の GIS が必要! ✔ GRASS Seeds をテキストに GRASS GIS での実習開始 ✔ サテライト・ラボの PC に HDD を追加して FD 起動で運用  H15 年のサテライト・ラボ更新に伴い現方式に移行 ➢ PC が全学の管理下となり HDD の追加が不可に! ✔ 独自に Linux サーバーを構築し運用開始! ✔ 名古屋大学農学部版 GRASS GIS テキストの作成 • GIS 編・ RS 編からなり、その後数度の改訂(一時期は、ベクトル マップのデジタイズも実施)を経て、現在学科実習書の一部
  12. 12. GIS 教育の課題  GIS で何ができるか? ➢ 実習・演習である程度は教育可能? ➢ 約 40 人の演習では学生の習熟度に大きな開きが・・・  実際に GIS で何かをしようと思うと! ➢ GIS 上で解析する前の段階に大きなハードル ✔ GIS/RS のデータはネット上に溢れているが、形式は様々! ✔ データ形式の理解にも、相当の知識が必要! ✔ GIS で利用できる形式に変換するスキルも必要! ➢ GIS のスキルだけでは GIS を実利用するのは困難 ✔ これを短期間で教育することは困難! ➢ GIS のソフトにより操作法が大きく異なる!
  13. 13. 研究編@ 2011 年度  GIS/RS 関係の研究 ➢ 航空機 LiDAR による森林計測手法の開発 ✔ <GRASS+ オリジナルソフト (C)> <Ruby>⇔ ➢ PALSAR 画像による森林資源の把握手法の開発 ✔ QGIS+GRASS ➢ MODIS 画像によるシベリア域の森林変化の時系列解析 ✔ <GRASS> <Ruby>⇔ ➢ シベリア域の広域フォーシングデータの作成及び評価 ✔ <GMT+R+GRASS> <Ruby>⇔
  14. 14. Ruby による GRASS の制御 @Ubuntu class GrassScript def initialize(location,mapset,dbase) homedir=ENV["HOME"] @dbase=homedir+"/"+dbase @location=location @mapset=mapset @head=[] @head << 'echo "GISDBASE: '+@dbase+'" > $HOME/.grassrc6' @head << 'echo "LOCATION_NAME: '+@location+'" >> $HOME/.grassrc6' @head << 'echo "MAPSET: '+@mapset+'" >> $HOME/.grassrc6' @head << 'echo "GRASS_GUI: text" >> $HOME/.grassrc6' @head << "export GISBASE=/usr/lib64/grass64" @head << "export GISRC=$HOME/.grassrc6" @head << "export GIS_LOCK=$$" @head << "export PATH=$PATH:$GISBASE/bin:$GISBASE/scripts" @head << "export LD_LIBRARY_PATH=/usr/lib64/grass64/lib" @cmds=[] end def addcmd(cmd) @cmds << cmd end def runcmd sh=open("gscripts.sh","w") sh.print @head.join("n")+"n"+@cmds.join("n")+"n" sh.close system("sh gscripts.shn") system("rm -f gscripts.shn") end end  GRASS は Ruby によ り制御  実行スクリプトを Ruby で生成して実行  GRASS は使っている が、起動はしない 初期化 DataBase, Location, Mapset の 設定 コマンドの 追加 コマンドの 一括実行 (ケース次 第では並列 処理も可)
  15. 15. Ruby による GRASS の制御の一例 GRASSGRASS による衛星画像のインポート(バイナリ形式)と処理による衛星画像のインポート(バイナリ形式)と処理         :        :         :        : g=GrassScript.new(lpath,mpath,dpath)g=GrassScript.new(lpath,mpath,dpath) for i in 0..(bandcount-1)for i in 0..(bandcount-1)      g.addcmd("r.in.bin --overwrite"+g.addcmd("r.in.bin --overwrite"+ ・・・・・・ +"input="++"input="+ ・・・・・・ +"output="++"output="+ ・・・・・・ +"+" north="+north="+ ・・・・・・ +" anull="++" anull="+ ・・・・・・ ))      g.addcmd('r.mapcalc "'+g.addcmd('r.mapcalc "'+ ・・・・・・ +"=if("++"=if("+ ・・・・・・ +","++","+ ・・・・・・ +',null())"')+',null())"')      g.addcmd("r.colors map="+g.addcmd("r.colors map="+ ・・・・・・ +" color=grey")+" color=grey")      g.addcmd("g.remove rast="+g.addcmd("g.remove rast="+ ・・・・・・ )) endend g.runcmdg.runcmd         :        :         :        :
  16. 16. 航空機 LiDAR による森林計測手法の開発 LiDASLiDAS 航空機 LiDAR レーザーパルス反射位置のデータから ● GAP の認識 ● 樹木個体の認識 ● 樹木個体の樹高推定
  17. 17. 航空機 LiDAR による森林計測手法の開発 (Yamamoto et al. 2011)ALPP システム( Yamamoto et al. 2011)
  18. 18. ➢ 設定した解析エリア及び期間のデータを検索 し、年月日ごとにディレクトリを作成してダウ ンロード ➢ HDF Tool&MRT を使ってデータタイプの自動 認識&バイナリ変換し、 GRASS データ ベースにインポート ➢ GRASS データベースの分析 ✔ 観測地点・年月日ごとの NDVI ・ LAI ・地表面温 度等の抽出&一覧表の作成 ✔ 条件設定によるエリアの抽出や条件に合致する 年月日をピクセル単位で抽出 ➢ 各工程を Ruby スクリプトで自動処理 ✔ 解析手法の開発に集中し、後はスクリプト任せ MODIS 画像によるシベリア域の森林変化 の時系列解析 NASA(LPDAAC) 解析サーバー
  19. 19. Ruby による GRASS の制御のメリット  決まった処理を大量に実行する場合に有効 ➢ 外部のツールとの連携も容易(結果の入出力で対応可) ➢ 最終結果まで画面表示をしないので、比較的高速! ➢ それぞれのツールの得意な部分を有効に活用! ✔ テキスト処理・ファイル検索・文字列パターン処理等は Ruby ✔ モデルの構築等は R ✔ モデルによる面的スケールアップ等は GRASS or GMT  通常の GRASS コマンド処理を、そのまま Ruby で書 ける(入出力の指定は、 Ruby でパターン化)! ➢ 処理の流れが残るので、部分的な処理の変更も容易! ➢ 処理手順が決まれば処理対象が膨大でも対応は容易!

×