オープンソースGISを用いた 自然環境解析講座 C3: ラスタ解析コース 2013年4月27日 NPO法人 地域自然情報ネットワーク The Geoecological Conservation Network The Geoecological Conservation Network 4 QGIS によるベクタのインポート 実習2-3 目次 目次 自己紹介 ラスタ解析コース 1 3 講習内容 1.はじめに 4 4 オープンソース GIS オープンソース GIS とは何か なぜオープンソース GIS を使わないか どっちを使う? 5 5 7 8 GIS は使い分けの時代 GRASS 学ぶ上で役立つサイト WWW.GeoPacific.org 実習 1 8 9 9 10 2.GRASS と QGIS 3.GRASS の基礎 12 GRASS とは 12 GRASS の機能と講習の範囲 代表的なラスタの解析機能 GRASS のユーザーインターフェース GRASS の GUI(wxpython) 13 13 14 14 GRASS と QGIS の関係 QGIS の GRASS プラグイン GRASS と QGIS の使い分け 15 15 16 GDAL・OGR とは(予備知識) QGIS による SRS の変換 実習2-1 GRASS の基礎の基礎 16 17 17 20 GRASS を理解するために GRASS のデータベース構造 なぜパーマネントマップセット? 20 21 21 SRS の設定 範囲の設定 マップセットの作成 マップセット作成の完了 24 24 25 25 実習2-2 既存データの取り込み データをロケーションの SRS に統一 26 29 29 GRASS コマンド 代表的な GRASS コマンド QGIS によるラスタのインポート GRASS によるラスタのインポート 30 31 31 32 QGIS インポート vs. GRASS インポート 32 1 37 GRASS の起動と UI の種類 37 GRASS の起動 GRASS 立ちあげの画面 マップセット選択後の画面 レイヤーマネージャー 38 38 39 39 レイヤーマネージャー:タブ データの読み込み ラスタデータの読み込み 40 40 41 実習3-1 読み込んだラスタの表示 読み込んだレイヤの設定 レイヤのカラーテーブル: r.colors 41 44 44 45 透過度の設定 陰影図の不透明度調整の例 地図のナビゲーション 45 46 46 実習3-2 データの検索: r.what メタデータ: r.info ラスタとベクタの重ね合わせ 47 49 49 50 日本語表示設定:エンコーディング ワークスペース 実習3-3 50 51 51 4.GRASS ーデータ解析準備ー GRASS で解析を始めるには 22 QGIS を使ったロケーションとマップセットの設定 22 データベースの作成 23 新しいロケーションの作成 23 33 33 54 コマンド入力と GUI 操作 54 コマンドの文法 ラスタ解析環境設定:g.region コマンドオプションについて インタラクティブに領域を指定する 55 55 57 57 実習4-1 ラスタデータのサブセット ラスタカリキュレーター 58 60 60 解析マスクの設定: r.mask NULL 値について: r.null 実習4-2 ラスタのデータタイプ 61 61 62 66 ベクター⇔ラスタの変更 データファイルの管理 実習4-3 66 67 67 5.GRASS -データ解析- 69 これまでのところ。。。 再クラス分け: r.reclass 69 70 再クラス分けテーブルの作成作業 実習5-1 71 72 ラスタレイヤの重ね合わせ: r.patch ラスタレイヤの重ね合わせ: r.cross 74 75 ラスタレイヤの重ね合わせ: r.mapcalc 単一ラスタの統計 ラスタ間の統計 カテゴリラスタと定量的ラスタの間の統計: r.statistics カテゴリラスタ間の統計: r.report 実習5-2 75 76 76 77 77 78 6.GRASS のモデリングと ラスタ解析 80 ラスターカリキュレーター: r.mapcalc ラスタの解像度変更: r.resamp.interp 80 82 水文モデリング 地形解析 描画モデラー GRASS の Addon 83 83 84 84 実習 6 85 2 1 オープンソースGISを用いた 自然環境解析講座 ラスタ解析コース 2013年7月27日 講師: 今木洋大 GRASS 2 自己紹介 • GCNの紹介、スタッフの紹介 • 各自の自己紹介 (参加者全員) – 専門、バックグラウンド、 – なぜこの講習会に参加したか? – 講習会に期待するもの 3 3 ラスタ解析コース 講習内容 4.GRASS -データ解析準備-(30min) 1.はじめに(30min) オープンソース GISについて 実習1 2.オープンソースGISとGRASS(60min) GRASSとは GRASS、QGIS、GDALについて 実習2-1 ロケーション、マップセット 実習2-2 データの取り込み 実習2-3 5.GRASS -データ解析-(90min) 3.GRASSの基礎 (60min) GRASSの起動 ユーザーインターフェース データの読み込み、表示 実習3-1 レイヤ設定とナビゲーション 実習3-2 ラスタとベクタの重ね合わせ 実習3-3 コマンド文法 解析環境の設定 g.region 実習4-1 データのサブセット、マスク、NULL値 実習4-2 データタイプ 実習4-3 クラス分け 実習5-1 各種重ねあわせ ラスタの統計 実習5-2 6.GRASSのモデリングとラスタ解析(60min) ラスタ計算機 解像度の変更 水文解析 地形解析 その他 実習6 4 GRASS 1.はじめに (30min) オープンソース GISについて ソフトウェアーインストールの確認 4 5 オープンソースGIS • オープンソースGISとは何か • オープンソースGISを使うよい点・悪い点 • オープンソースGISを知るためのリソース 6 オープンソースGISとは何か • オープンソースソフトウェアーとは、あるライセ ンス契約の元、ソースコードが公開されてい るソフトウェアーのことであり、そのライセンス 下ではソフトウェアーの改変とその再配布が 許されている。 (http://opensource.org/, 2007). 5 7 オープンソースGISとは何か • ということは、 – オープンソースソフトウェアーは必ずしも無料で はない – さまざまなライセンスの種類がある • GNU GPL、BSD、Apache ライセンスなど – 改変、再配布においてもオープンソースである必 要がある 8 オープンソースGISとは何か • フリーウェアはフリーソフトと違う – – – – GoogleEarth,GoogleMap Virtual Earth, BingMaps ArcExplorer ERDAS VeiwFinder • フリーソフトとオープンソースは似ている • そこで、まとめてFOSS4G – Free and Open Source Software for Geospatial 6 9 オープンソースGISとは何か • 代表的なオープンソースGISソフトウェアー – デスクトップ • • • • GRASS GIS QGIS gvSIG Opticks – ウェブマッピング • MapServer • OpenLayers • GeoServer – ライブラリー • GDAL/OGR • PostGIS • GEOS 10 なぜオープンソースGISを使わないか • • • • すでに市販製品を使っていて満足している オープンソースGISを知らない 自分のニーズがよくわからない いろいろ自分で勉強するのが面倒くさい 7 11 どっちを使う? • どうやって仕事を確実にそして早く終わらせら れるか? – 自分のGIS使用の目的を明確にする – 自分のリソースを知る(人的、金銭的) – 将来のGIS利用のビジョン 12 GISは使い分けの時代 • 私の場合 – オープンソースGIS • • • • ベクター解析(PostGIS, R, ウェブマッピング (GeoServer, OpenLayers) バッチ処理 (GDAL/OGR, Python, R) ラスター解析(GDAL, Python) – 市販製品 • 地図作成 (ArcGIS) • ラスター解析(ArcView, ArcGIS) • 既存の解析コードの利用(Avenue) 8 13 GRASS学ぶ上で役立つサイト • 私のサイト • 大阪市立大学地理学教室のGRASSのサイト • とらりもん(奈佐原さんのサイト) • 月の杜工房 – http://www.geopacific.org – http://www.sci.osaka-cu.ac.jp/~masumoto/vuniv2000/ – http://pen.agbi.tsukuba.ac.jp/~RStiger/hiki2/?GIS%C6%FE%CC%E7 – http://mf-atelier.sakura.ne.jp/mfatelier/modules/tips/index.php/software/grass/ • OSGeo-Japan – http://www.osgeo.jp/ • 日本語の本 – オープンソースGIS グラスアプローチ • Neteler/Mitasova, 植村訳、 開発社 • 英語の本 – Python Geospatial Development • Erik Westra, Packet Publishing 14 WWW.GeoPacific.org 9 15 実習 1 • ソフトウェアーインストール、実習用データの確認 – デスクトップ上にGRASSとQGISのアイコンがあるか確認 – 配布したUSB内の、¥class2012¥grass¥にある各フォルダとその中 のデータを確認 • QGISからGRASSプラグンと実習用データの確認 – – – – QGISを立ち上げる GRASSツールバーの各ツールの確認(まだ使わない) 実習用ラスタ、ベクタファイルのQGISへの読み込み プラグインの文字化け対処をしたか確認 • GRASSの起動 – デスクトップのアイコンをクリックしてGRASSが起動するか調べる • エラーが出ても気にしない 16 memo 10 実習1 • ソフトウェアーインストール、実習用データの確認 – デスクトップ上に GRASS と QGIS のアイコンがあるか確認 – ダウンロードしたデータまたは、配布した USB 内の、¥grass にある各フォルダと その中のデータを確認 • • Base:分析範囲などの基本的なレイヤ(ベクタ) • Dem:国土地理院 10mDEM(ラスタ) • Monkey:ニホンザルのラジオトラッキングデータ、ホームレンジ(ベクタ) • Veg:環境省植生図(ベクタ) QGIS から GRASS プラグンと実習用データの確認 – QGIS を立ち上げる • – QGIS が日本語で立ち上がるか確認 GRASS ツールバーの各ツールの確認(まだ使わない) • GRASS ツールバーはまだ使えないが QGIS のツールバーとして表示され ているか確認 – 実習用ラスタ、ベクタファイルの読み込み • QGIS の「ラスタレイヤの追加」 、 「ベクタレイヤの追加」 を使い、 以下のデータを読み込む • • ¥grass¥dem¥10m_nikko_monkey_buffer_4612.tif • ¥grass¥veg¥vg3_09a_nikko_monkey_buffer_4612_utf8.shp • ¥grass¥monkey¥homerange_4612.shp 上の 3 つのレイヤーが表示される QGIS のプロジェクトファイルを 「grass.qgs」として作成、¥grass¥map ディレクトリに保存する – • QGIS を終了する GRASS の起動 – デスクトップのアイコン • – をクリックして GRASS が起動するか調べる 今の時点ではエラーが出ても気にしない GRASS を終了する 11 17 GRASS 2.GRASSとQGIS (60min) GRASSとは GRASS、QGIS、GDALについて GRASSの基礎の基礎 実習 18 GRASSとは • Geographic Resources Analysis Support System • デスクトップオープンソースGISの元祖 – 1982年に開発がスタート – 現在、バージョン7も実験的に利用可能 (10,000以上のアップデー ト) • 多様なデータタイプサポートと解析機能を提供 – ラスタ、ベクタ、衛星画像解析、LiDARデータ解析、3D視覚化など • 世界的な開発者とユーザーコミュニティ • 学術的 – 解析方法などが論文化 • 他のオープンソースGISとの連携 – QGIS、R、gvSIG SE • データの扱いに少し癖がある • 日本語対応が進んでいる 12 19 GRASSの機能と講習の範囲 • • • • • • • データのインポート・エクスポート 2D/3Dラスタデータ 2D/3Dベクタデータおよび属性テーブル 衛星画像解析 視覚化 モデルとシミュレーション 他のオープンソースGISとの連携 Nateler & Mitasova (2008) Open Source GIS a GRASS GIS Approach, 3rd Edition より抜粋・翻訳 20 代表的なラスタの解析機能 • • • • • • • • • バッファー 近傍解析 ラスター計算 各種重ねあわせ 地形解析 水文解析 ランドスケープ解析 各種内挿 レポートと統計 13 21 GRASSのユーザーインターフェース • GUI(グラフィカルユーザーインターフェース) – wxpython – TCL/TK • CUI(文字入力のユーザーインターフェース) 22 GRASSのGUI(wxpython) 14 23 GRASSとQGISの関係 • Quantum GIS • 2002年から開発開始 • オープンソースGISの一つで、GISデータの視覚化、管理、編集、分 析、地図の作成などができる。 • ユーザーインターフェースが洗練されていて使い方が簡単 • 開発速度が速い • 多様なラスター、ベクターデータを扱える • プラグインを使うことで機能を拡張できる • GRASSの機能をアドインとして使える – SEXTANTEプラグインからもGRASSの機能にアクセスできる • 比較的軽い • 日本語化されている(OSGeo-Japan) • 現在、1.8.0が安定版 24 QGISのGRASSプラグイン 15 25 GRASSとQGISの使い分け 1. プロジェクトの開始 (QGIS) 2. データのSRS変換 (QGIS) 3. データのインポート (QGIS) 4. データ解析 (GRASS) 5. データの表示 (GRASSまたはQGIS) 26 GDAL・OGRとは(予備知識) • GRASSへのデータインポート、エクスポートに利 用 • オープンソースGISの縁の下の力持ち • ラスタ、ベクタデータの読み込み、書き出し、 フォーマット変換、解析などを可能にするライブ ラリ(小さいプログラムの集まり) • GRASSもQGISも使っている • コマンドライン、QGISのアドインで各種機能を利 用 • 今回は、QGISから利用 16 27 QGISによるSRSの変換 ベクタファイルフォーマット とSRS変換 ラスタデータを取 り扱うGDALTools 28 実習2-1 • GISデータのSRS変換 – QGISのラスタツールから「ワープ」を使ってラスタ のSRSをEPSG:4612からEPSG:32654に変換 17 実習2 実習2-1 • ラスタデータの SRS 変換 – QGIS を立ち上げ、前回作成した grass.qgs を読み込む – ¥dem¥10m_nikko_monkey_buffer_4612.tif がレイヤとして読み込まれている ことを確認。見当たらなければ読み込む – 「ラスタ」メニューから「Projections」・ 「ワープ」を選択する – – 「ワープ(再投影) 」ウィンドウでオプションを設定する • 入力ファイル • • 出力ファイル • • EPSG:32654 リサンプリングメソッド • • EPSG:4612 ターゲット SRS • • ¥grass¥dem¥10m_nikko_monkey_buffer_32654.tif ソース SRS • • ¥grass¥dem¥10m_nikko_monkey_buffer_4612.tif 双線形 終了時にキャンバスにロードします • チェックする – 「OK」をクリックし、コマンドを実行 – 読み込まれた 10m_nikko_monkey_buffer_32654.tif の領域にズーム • 10m_nikko_monkey_buffer_32654 をリストから右クリックして「レイヤ の領域にズーム」を選択 – プロジェクトの SRS を EPSG:32654 にセット • 10m_nikko_monkey_buffer_32654 をリストから右クリックして「レイヤ の CRS をプロジェクトに設定する」を選択 18 • • QGIS の GUI の右下に「EPSG:32654」と表示されていることを確認 • 19 29 GRASSの基礎の基礎 • データベース、ロケーション、マップセット • 既存データの取り込み – SRS変換 – GRASSのコマンド – データインポート 30 GRASSを理解するために • データベース – GRASSのデータを保存する親ディレクトリー • ロケーション – データベースの下位ディレクトリー – 各プロジェクトごとにデータが整理・保存 – 空間参照系(SRS)、範囲(geographic boundaries)が定義 • マップセット – – – – ロケーションの下位ディレクトリー 実際の作業ディレクトリー 主題、場所、ユーザー、などに基づき設定 パーマネントマップセッ トは自動的に作成される 20 31 GRASSのデータベース構造 データベース ロケーション (SRS+範囲) マップセット パーマネント 生物多様性 日本 主題別 地球温暖化 grassgis パーマネント アメリカ ワシントン 場所別 ノースダコタ 32 なぜパーマネントマップセット? • パーマネントマップセット – オーナーだけがデータの追加、修正、削除できる – オリジナルデータを保存 – 各マップセットからアクセスできるが、修正、削除 はできない(データが安全) – 各マップセットでパーマネントにあるデータに変更 を加えたい場合は、一旦データをマップセットにコ ピーしてから作業を行う 21 33 GRASSで解析を始めるには • あらかじめプロジェクトの構造を階層的に決める必要がある – ロケーション • 空間参照系と地理的範囲が定義される – 地理的範囲: 日本 – 空間参照系: EPSG:4326 – マップセット • ユーザー別 – 今木 – 井本 • ロケーション、マップセットの設定方法 – GRASS • 地理的範囲の設定は、既定値か、既存のデータに基づき行う – QGIS • 地理的範囲の設定がインタラクティブにできる • こちらのほうが便利! QGISを使ったロケーションとマップ セットの設定 • まずロケーションの ベースとなるレイ ヤーをQGISに読み 込む • 次に、プロジェクト のSRSを指定 22 34 35 データベースの作成 • QGISのGRASSプラグインから「新しいマップセッ ト」 アイコン を選択 データベースフォル ダーを指定または新規 作成 36 新しいロケーションの作成 新しいマップ セット名を指定 23 37 SRSの設定 • ロケーションのSRS を指定 • EPSGコードを利用 • または、proj4形式 フォーマットで定義 (EPSGコードに登 録されていない場 合; spatialreference.or gを利用) 38 範囲の設定 • QGISに表示された レイヤの範囲に基 づき設定 • または、あらかじ め定義されている 範囲を利用 • または、東西南北 端の値を手入力 24 39 マップセットの作成 完了 40 マップセット作成の完了 • この時点でラスタ、ベクタデータをマップセット にインポートする準備が完了 • SRSと地理的範囲が設定されている • データベースはただのフォルダ • ロケーションとマップセットの設定にはQGISが 便利 25 41 実習2-2 • データベース、ロケーション、マップセットの設 定 – データベース:grassgis – ロケーション: • Nikko • EPSG:32654 • Region: Demの範囲 – マップセット:class2012 42 memo 26 実習2-2 • QGI の GRASS プラグインによるデータベース、ロケーション、マップセットの設定 – 前回からの続きで QGIS が立ち上がっているものとする – データベースの作成 • GRASS プラグインの「新しいマップセット」アイコン • 「新規マップセット」ウィンドウの「データーベース」の「参照」ボタン をクリック をクリックし、新規で「c:¥grassgis」というフォルダーを作成する。 • 「Next」ボタンをクリックし、次に進む。 • – ロケーションの作成 • 「新しいロケーションを作成」のラジオボタンを選択し、テキスト欄に 「nikko」と入力し、「Next」ボタンで次に進む。 • 「投影法」の設定で、「投影法」ラジオボタンをチェックし、SRS として QGIS のプロジェクトで指定した EPSG:32654 を示す 「+proj=utm +zone=54 +datum=WGS84 +units=m +no_defs」が指定され ていることを確認して次に進む • 「デフォルトの GRASS リージョン」ウィンドウでは、QGIS の地図ビュー に、読み込んだ DEM が EPSG:32654 で全域表示されているのを確認した 後、 「現在の QGIS の範囲を設定」ボタンをクリック • おおよそ、東「389982」、西「357940」 、南「4.05632e+06」 、北「4.08e+06」 となっていることを確認し次へ 27 • – マップセットの作成 • 「Mapset」ウィンドウの「新規マップセット」テキスト欄に「class2012」 と入力し次へ • 「新しいマップセットを作成」ウィンドウで、設定の内容が正しいことを 確認 – • データベース:c:¥grassgis • Location:nikko • マップセット:class2013 新規マップセット作成の完了 • 「新しいマップセットを作成」ウィンドウの「Finish」ボタンをクリック • 「新しいマップセットを作成し、利用するマップセットに設定しました。」 というメッセージが出るので「OK」をクリック • QGIS のマップビューの外枠に赤い線が表示されているのを確認 • QGIS のグラスプラグインのほぼすべてのアイコンが選択可能になってい るのを確認 • • プロジェクトを保存する 28 43 既存データの取り込み • データインポートの下準備 – データをロケーションのSRSに統一 – データの地理的範囲は、ロケーションの範囲と一致し なくても良いが、解析されるの設定した範囲内のみ • データのインポート – – – – 通常、パーマネントにインポート ラスタ:r.in.gdal ベクタ:v.in.ogr GRASSは独自のデータフォーマットを採用しているた め、データはインポートすることが前提 データをロケーションのSRSに統一 (ラスタ) • QGISのラスタメニュー から「ワープ」を利用 – 実際にはGDALが処理 29 44 データをロケーションのSRSに統一 (ベクタ) 45 • QGISのレイヤリストか ら右クリックで「名前を つけて保存」を選択 – 実際にはOGRが処理 46 GRASSコマンド • GRASSはGUIでも利用できるが、モジュールの クラスを理解しておく必要がある • コマンドコンソールを使った素早い機能への アクセス • モジュール機能の検索・ヘルプ • 各種機能関数は、ラスタならr.***、ベクタなら v.***、一般機能ならg.***の様に表現される 30 47 代表的なGRASSコマンド • 一般 – g.region : 分析範囲の表示及び設定 – g.list : マップセット内のデータのリスト表示 • ラスタ – r.in.gdal : ラスタデータのインポート – r.buffer : ラスタバッファーの発生 • ベクタ – v.in.org : ベクタデータのインポート – v.buffer : ベクタバッファーの発生 48 QGISによるラスタのインポート • QGISにデータを読 み込む • パーマネントマップ セットを開く • 「グラスツールを開 く」 • r.in.gdal.qgisをモ ジュールリストから 選択 • レイヤ名、出力名を 指定し実行 • 出力を見るには、 「出力を見る」をク リック 31 49 GRASSによるラスタのインポート • GRASSを起動 • パーマネントマップセッ トを開く • 「ファイル」・「ラスター データのインポート」・ 「一般的なインポート 形式[r.in.gdal]」でイン ポート 50 QGISインポート vs. GRASSインポート • QGISのGRASSアドインを利用したインポート – QGISでレイヤを確認した上でインポートできる – 特に、SRSの変換結果を確認できる • GRASSでのインポート – 各種オプションが指定できる • 慣れるまでは、QGISの利用がお勧め 32 51 QGISによるベクタのインポート • QGISにデータを 読み込む • パーマネントマッ プセットを開く • 「グラスツールを 開く」 • v.in.ogr.qgisをモ ジュールリストか ら選択 • レイヤ名、出力 名を指定し実行 52 実習2-3 • GISデータのGRASSへのイン ポート – インポートの対象は、 PERMANENTマップセット – GRASSプラグインの「グラス ツールを開く」から r.in.gdal.qgisまたは v.in.org.qgisを使い、ラスタ、 ベクタデータをインポート – インポートしたデーターを QGISで確認 33 実習2-3 • GIS データの GRASS へのインポート – 前回からの続きで QGIS が立ち上がっているものとする • – 10m_nikko_monkey_buffer_32654 が表示されていることを確認 実習で使用する以下のデータを QGIS に読み込み、それ以外は削除 • ¥grass¥base¥monkey_study_area_buffer_32654.shp • ¥grass¥veg¥vg3_09a_nikko_monkey_buffer_32654_utf8.shp • ¥grass¥monkey¥homerange_a_32654.shp • ¥grass¥monkey¥homerange_og_32654.shp • ¥grass¥monkey¥homerange_go_32654.shp • – マップセットを「PERMANENT」に切り替える • パーマネントマップセットにマップセットを切り替えるために GRASS ツ ールバーから「マップセットを開く」 を選択し、「Mapset」のドロッ プダウンリストから「PERMANENT」を選択し、 「OK」をクリック – • データの GRASS へのインポート • GRASS プラグインの「GRASS ツールを開く」アイコン をクリックし て「GRASS ツール」ウィンドウを開く • ラスタデータのインポート • モジュールリストから、 「r.in.gdal.qgis」を見つけ出し、ダブルクリ ックする • r.in.gdal.qgis が見つけられないときは、 「モジュールリスト」 34 タブのフィルター欄に「r.in.gdal.qgis」と入力する • モジュール「r.in.gdal.qgis」が表示される • ここで、もし、モジュール内に文字化けが起きているような ら、 「講習会参加の準備について」の「GRASS 編」 、 「QGIS のグラスプラグイン文字化けへの対処法」に従って、文字化 け対処を余った時間で後ほど行う。文字化けが見られない方 は、この作業は無視して次に進んで下さい。 • • 文字化けしても GIS 作業上問題はありません。もし文字化 け対処がこの時点でどうしても必要な場合は、QGIS でプロ ジェクトの保存を行い、現状にすぐに戻れるようにしてから QGIS を終了し、文字化け対処をはじめる • 文字化け対処が終了したら、QGIS を立ちあげ、プロジェク トを読み込み、続きの作業を行う • r.in.gdal.qgis の設定 • GDAL ラスタレイヤーには QGIS にあらかじめ読み込んで あるラスターレイヤーがドロップダウンリストで選択でき るようになるため、目的とするラスターを選択 • • 10m_nikko_monkey_buffer_32654 「Name for output raster map」の欄に、GRASS にインポ ートした際に用いるレイヤー名を入力 • • • dem10m r.in.gdal.qgis を実行する ベクタデータのインポート • モジュールリストから、「v.in.ogr.qgis」を見つけ出し、ダブルクリ ックする • v.in.ogr.qgis が見つけられないときは、 「モジュールリスト」 タブのフィルター欄に「v.in.ogr.qgis」と入力する • モジュール「v.in.ogr.qgis」が表示される • v.in.ogr.qgis の設定 • OGR ベクタレイヤーには QGIS にあらかじめ読み込んであ るベクターレイヤーがドロップダウンリストで選択できる ようになるため、目的とするベクタを順番に選択 • monkey_study_area_buffer_32654 • vg3_09a_nikko_monkey_buffer_32654_utf8 • homerange_a_32654 • homerange_og_32654 35 • • homerange_go_32654 「Name for output vector map」の欄に、GRASS にインポ ートした際に用いるレイヤー名を順番に入力 • • • study_area • vege • troop_a • troop_og • troop_go v.in.ogr.qgis を順番に実行する インポートしたデータの確認 • 「GRASS ツール」 ウィンドウの「ブラウザ」タブをクリック して、マップセットのリストを表示させた後、ツールバーから「再 読み込み」アイコン を選択し、マップセットの中のデータをア ップデートする。 • 必要なデータがインポートされたか確認 • • 途中でエラーが起き、エラーを含んだデータが作成されたときは、 対象のデータを選択した後、ツールバーから「選択した地図を削除」 をクリックして、データを削除する • インポートの結果は、QGIS 上でも確認できる • GRASS プラグインから「GRASS ラスタレイヤを追加」ま たは「GRASS ベクタレイヤを追加」を選択し、対象とする インポートしたデータを選択して表示 – プロジェクトを保存し、QGIS を閉じる 36 53 GRASS 3.GRASSの基礎 (60min) GRASSの起動 ユーザーインターフェース データの読み込み、表示 地図のナビゲーション メタデータ ラスタとベクタの重ね合わせ 実習 54 GRASSの起動と UIの種類 37 55 GRASSの起動 • デスクトップアイコンのダブルクリック – wxpythonのGUIが立ち上がる • OSGeo4w.exeから起動 – OSGeo4w.exeを立ちあげ • wxpython: • Tcl/Tk: • コマンドライン: grass64 -wxpython grass64 -gui grass64 -text 56 GRASS立ちあげの画面 • データベース、 ロケーション、 マップセット の選択また は新規作成 38 57 マップセット選択後の画面 58 レイヤーマネージャー • GRASSのレイヤ管理、各モジュー ルへのアクセス、プロセス情報の 表示 – メニュー • すべての機能にアクセス – ツールバー • 頻繁に使う機能に素早くアクセス – ディスプレイ • 各マップ表示(ディスプレイ)に読み 込まれたレイヤの管理 – タブ • マップレイヤー:読み込んだレイヤ の管理 • コマンドコンソール: コマンドの直 接入力、メッセージの表示 • 検索モジュール • Pythonシェル 39 59 レイヤーマネージャー:タブ マップレイヤー 検索モジュール モジュール の検索 各レイヤへ のアクセス Pythonシェル コマンドコンソール コマンドメッ セージ出力 コマンドの 直接入力 パイソン環 境の利用 60 データの読み込み 3. レイヤの順序の変更 (ドラックアンドドロップ) 1. レイヤマネージャ 読み込みレイヤーの 指定 2. マップ表示にレ イヤが表示 40 61 ラスタデータの読み込み ラスタデータの読 み込み ラスタデータのド ロップダウンリスト 62 実習3-1 • GRASSの起動 • ユーザーインターフェース – レイヤマネージャー – マップ表示 • データの表示 – データの読み込み 41 実習3 実習3-1 • GRASS の起動 – デスクトップの GRASS アイコンをクリックして GRASS を起動 – データベースとして「c:¥grassgis」、ロケーションとして「nikkko」、マップセッ トとして「class2013」を選択し、「GRASS の起動」ボタンをクリックする – • ユーザーインターフェース – レイヤマネージャー • レイヤマネージャーの上方にある各アイコンにマウスを持って行き、どの ようなツールがあるか調べてみる • • レイヤマネージャーの各タブ(マップレイヤー、コマンドコンソール、検 索モジュール、Python シェル、をクリックして内容を見てみる • • ツールバーの「新規マップ表示開始」をクリックして、新しいウィンドウ を開いてみる 42 • • レイヤーマネージャーに新しく「Display 2」というタブが加わった ことを確認したら、新しく作成したマップ表示ウィンドウはタブ右 上のバツ印をクリックして閉じる • – マップ表示 • マップ表示ウィンドウの上方にある各アイコンにマウスを持って行き、ど のようなツールがあるか調べてみる • 43 63 読み込んだラスタの表示 • カラーテーブルの設定 – データがより見やすくなるよう に、カラーテーブルを設定 • 規定のカラーテーブル • ユーザー設定 – カラーテーブルはデータに対し 設定されるので、次回呼び出 しても設定したカラーテーブル が呼び出される • 透過度の設定 64 読み込んだレイヤの設定 ボタンをクリック 44 65 レイヤのカラーテーブル: r.colors 注意! 呼び出されたモジュー ルはレイヤと関連して いないので他のレイヤ の設定もできる 66 elevation gray rainbow etopo 45 67 透過度の設定 • 複数のデータを読み込んだ時に各レイヤの 情報をまとめて表示 – 陰影図に透過度を設定すると効果的 – 使い過ぎると情報がわかりにくくなる スライダーで調整 68 陰影図の不透明度調整の例 透過度75% 透過度50% 透過度10% 46 69 地図のナビゲーション 地図情報の検索 表示位置の移動 対象レイヤ全域表示 地図の拡大・縮小 様々なズームオプション 一つ前の表示域に戻る 70 実習3-2 • データの表示 – データの読み込み – カラーテーブルの設定 – 地図ナビゲーション 47 実習3-2 • データの表示 – データの読み込み • ラスタデータの読み込み • 「レイヤマネージャー」 のツールバーから 「ラスターマップの追加」 をクリックし、PERMANENT マップセットから「dem10m」 を選択し、 「OK」をクリック – カラーテーブル • カラーテーブルの変更 • 「レイヤマネージャー」のレイヤリストから「dem10m」を右クリ ックし「カラーテーブルのセット」を選択する • • r.colors ウィンドウで、「dem10m」を選択し、「色」タブの「カラ ーテーブルのタイプ」で「elevation」を選択し、「実行」ボタンを クリックする • – マップ表示で、設定したカラーテーブルの結果を確認 • 地図ナビゲーション • マップ表示ウィンドウのツールバーの「パン」、「ズームイン」、「ズームア ウト」、「選択したマップレイヤでのズーム」、「ズームを戻す」の各機能を 使い、ラスタデータのいろいろなところを見てみる • 男体山の山頂を拡大してみる 48 71 データの検索: r.what • インタラクティブなデータの検索 • 実際はr.whatコマンド 72 メタデータ: r.info • ラスタのサイズ、SRS、コマンドヒストリなどを 表示 49 73 ラスタとベクタの重ね合わせ ラスタと同様にベクタを 読み込み、データの表 示プロパティを調節する 標高を示すラスタの上に、流域ポ リゴンを重ねあわせた例 74 日本語表示設定:エンコーディング • 日本語の属性情報を適切に表示するには、エンコーディングの設 定が必要 • インポートするデータのエンコーディングに合わせて設定 • 今回は、「レイヤーマネージャー」の「設定」メニューから「GUI設定」 を選択し、「属性」タブで「エンコード」を「utf-8」に設定 それでもたまに日本語 の属性情報が文字化 けすることがある。 GRASSの問題なのか、 入力した日本語の問 題なのかケースバイ ケース 50 75 ワークスペース • GRASS上で行った、一連の作業や各ウィンド ウの状態などは、「ワークスペース」として保 存できる – レイヤマネージャーの「ファイルメニュー」から 「ワークスペース」・「保存」を選択し、名前をつけ てプロジェクトを保存する – 次回作業を続けるときには、保存したワークス ペースファイルを呼び出す 76 実習3-3 • データの検索など – – – – データ検索 メタデータの表示 ラスタとベクタの重ね合わせ エンコーディング設定 • ワークスペースの保存 51 実習3-3 – データ検索 • 「ラスター/ベクトルマップの検索」アイコン をクリックした後、表示 されたラスタ上をクリックし、 「レイヤマネージャー」に表示される情報を 調べる • どのような情報が表示されているか?男体山の山頂あたりは標高何メータ ーか? – メタデータ • 「レイヤマネージャー」の「マップレイヤ」タブをクリックし、 「dem10m」 を右クリックし、「メタデータ」を選択する • – 「コマンドコンソール」表示された情報を調べる エンコーディング設定 • 「レイヤマネージャー」の「設定」メニューから「GUI の設定」を選択し、 表示されたウィンドウの「属性情報」タブをクリックし、 「エンコード」の 設定を確認する • 「エンコード」が設定されていなければ、 「utf-8」と入力し、設定を保存す る • 今回の実習ではあまり関係ないが、今後ベクタの属性テーブルで日 本語を取り扱う際に、エンコーディングの設定が重要になる – ラスタとベクタの重ね合わせ • ベクタデータの読み込み • 「レイヤマネージャー」のツールバーから、 「ベクトルマップレイヤ ーの追加」を探してクリックし、PERMANENT マップセットから 「vege」を選択して表示する • 地物情報の検索 • Vege レイヤーがアクティブになっている(レイヤーリストの中で選 択され、グレーになっている)ことを確かめ、マップ表示で「ラス ター/ベクトルマップの検索」ツール で地物をクリックし、 「属性 表示」ウィンドウで地物の情報を見てみる • ベクタレイヤのプロパティ設定 • ポリゴンの塗りつぶし設定を塗りつぶしなしにして、DEM の情報 が見れるようにする • Vege レイヤをリストで右クリックして「プロパティ」を選 択する • 開いた d.vect ウィンドウの「色」タブを選択し、 「エリアの 塗りつぶし色」の「透過」チェックボックスをチェックして 52 「OK」をクリックする • • – マップ表示で地図を見る ワークスペースの保存 • これまでの作業結果を保存するため、ワークスペースを保存する • レイヤマネージャーの「ファイル」メニューから「ワークスペース」 ・ 「保存」を選択し、各自適当なディレクトリに適当な名前をつけて ワークスペースを保存する。 • ファイルメニューから「GUI の終了」を選択し、GRASS を終了する • もう一度 GRASS を立ちあげ、マップセットを選択し、レイヤーマネージ ャーが立ち上がったら、先程保存したワークスペースを読み込む • ワークスペースの保存時の状態と同じか確認する 53 77 GRASS 4.GRASS ーデータ解析準備ー (30min) コマンド文法 解析環境の設定 NULL値 データタイプ 実習 78 コマンド入力とGUI操作 • GRASSはもともとコマンドラインベースのソフト • GUIでも操作できるが、コマンドを入力するこ とで、作業が格段に早くなる! • 慣れてきたらコマンドラインを使うとよい g.region -p コマンドの実行 (オプション付き) g.region コマンドウィンドウを開く (オプション無し) 54 79 コマンドの文法 d.erase r.buffer i.cluster v.buffer db.connect g.region m.proj http://grass.osgeo.org/grass64/manuals/index.html 80 ラスタ解析環境設定:g.region • GRASSが他のGISソフトと違う点 – 領域(地図の範囲) – 解像度 • 領域と解像度をあらかじめ設定してから解析 – 良い点 • 分析する範囲と解像度について気にしなくて良い • 解析、モデリング、出力の効率が良い – ちょっと面倒くさい点 • なりゆき任せの分析ができない(良い点??) 55 81 ラスタ解析環境設定:g.region ラスタA ラスタB 設定した領域 結果 プロセス • 設定した領域内でデータがプ ロセスされる • ラスタBが設定した解像度にリ サンプリングされる(最近傍) 82 ラスタ解析環境設定:g.region • 現在の領域と解像度設定の確認 – g.region -pec – 「設定」メニュー / 「領域」 / 「領域表示」 • 指定したラスタに基づき領域と解像度を設定 – g.region rast=ラスタデータ名 • 解析解像度の変更 – g.region res=解像度(地図単位) • 領域と解像度をデフォルトに戻す – g.region -dp 56 83 コマンドオプションについて • g.region -pec の 「-pec」 とは何か? • GRASSの作業に使うコマンドは、 – コマンド名 パラメータ=パラメータ名 -オプション – (例) g.region rast=elevation -p • つまり「-pec」はコマンドのオプション GRASSのコマンドは多 様なオプションを持つ 84 インタラクティブに領域を指定する 1. 目的の範囲を表 示させる 2. 「多様なズームオプ ション」から「表示域か らの解析領域を設定」 を選択 3. 指定した領域を保存する 場合は「ジオメトリを領域名 をつけて保存」 57 85 実習4-1 • 解析環境の設定 – 現在の解析領域の確認 – 領域設定の変更 • 領域の変更 • 解像度の変更 86 memo 58 実習4 実習4-1 • 解析環境の設定 – 現在の解析領域の確認 • 以下のそれぞれの方法で、現在の領域設定を調べる • レイヤーマネージャー: 「設定」 ・「領域設定(g.region -p) 」 • コマンドコンソール:g.region –p • • マップ表示: 「様々なズームオプション」 ・ 「解析領域でズーム」 • 現在の設定解像度は? • 現在の設定領域は、見た目に正しいか? • コマンドコンソールで以下のコマンドを試してみる(コマンドラインの使 い方に慣れる) • • g.region • g.region -p • g.region –pb g.region -p で表示された内容をコピーして、Notepad にペースト。後に変 更した設定と比較する – 領域設定の変更 • 領域の変更 • 地図の一部をどこでも良いので「ズーム」機能を使い、拡大表示 • 「様々なズームオプション」 • コマンドコンソールで、g.region -p と入力し、出力された内容を、 ・「表示域からの解析領域を設定」 先程 Notepad にペーストした内容と比較 • 解析領域をデフォルトに戻すため、コマンドコンソールで、g.region -d と入力し、そのあとで、g.region -p を実行し、領域がデフォ ルトに戻ったことを確認する • 解像度の変更 • 解像度を 50m とするため、コマンドコンソールで、g.region res=50 を実行し、変更された解像度を g.region -p で確認 • g.region res=50 -ap と今度は「a」をつけてコマンドを実行し、領 域と解像度を確認する • g.region res=50 -p と g.region res=50 -ap の違いを確認する • デフォルトの領域設定に戻す(g.region -d) 59 87 ラスタデータのサブセット • ラスタデータが巨大な場合、その一部を切り 取ったほうが扱いやすい場合がある 1. 領域と解像度を設定(g.region) 2. コマンド:r.mapcalc “出力名=元となるラスタ” 3. または、「ラスター」メニュー / 「ラスターマップカ リキュレーター」を利用 88 ラスタカリキュレーター • ラスターの演算 • 「ラスター」メ ニュー、「ラス ターマップカリ キュレーター」を 選択 • 使い方は、スライ ド89以降で詳しく 解説 60 89 解析マスクの設定: r.mask • ラスタデータの一部の対象地域についてのみ作業をした い場合、対象地域を示す他のレイヤを使って、分析範囲を 限定できる – 例えば、標高1000メートル以上の範囲だけ解析したい場合 – DEMの標高1000メートル以上を1、その他を0とするレイヤを作 成 • r.mapcalc ‘gt1000 = dem10m >= 1000’ • または、「ラスター」メニュー / 「ラスターカリキュレーター」 – 作成されたレイヤをマスクとして指定 • r.mask gt1000 • または「ラスター」メニュー / 「マスク」 – マスク指定後は、すべてのプロセスがマスク内だけで行われる – マスクを取り除くには • r.remove rast=MASK または r.mask -r MASK 90 NULL値について: r.null • 0とNULLは違う – 0は属性値が0 – NULLは属性値が無いことを示す • GRASSにおけるNULL値の扱い – r.null によって特定の値をNULLにしたりその逆に NULL値を特定の値に変更する • 特定の値(この例では-9999)のNULL値への変更 – r.null ラスタ名 setnull=-9999 • NULL値を特定の値(この例では0)に置き換える – r.null ラスタ名 null=0 61 91 実習4-2 • 解析環境の設定 – サブセット – マスク • マスクの作成 • マスクの設定 • マスクの解除 • NULL値の管理 92 memo 62 実習4-2 – データのサブセット作成 • ベクタ「troop_a」をレイヤに加える • 「設定」 ・ 「領域設定」で g.region のウィンドウを呼び出し、 「ベクトルマッ プに一致するように領域を設定します」で、「troop_a」を指定し、実行す る • g.region res=50 -ap をコマンドコンソールで実行し、解像度を 50m に設 定 • 「ラスタ」・「ラスターラスタカリキュレーター」でカリキュレーターを呼 び出し、 「新しいラスターマップ名」に「dem50m_a」、 「挿入する基本ラス ターマップ名」で「dem10m」を選択し、計算を実行 • • レイヤマネージャーに「dem50m_a」が加わっていることを確認した上で、 マップ表示を見る • 領域指定した以外の部分はどうなっているか? • 何か表示されているか? • 拡大した時の解像度はどのように変化しているか? • 新しく作成されたレイヤの領域以外で他のレイヤを透過させたい場合は、 対象のレイヤをレイヤリストで右クリックして「プロパティ」を選び、 「Null セル」タブで「オーバーレイ(NULL 値を除く) 」をチェックして、 「OK」 をクリックする – 解析範囲を限定するマスクの作成 • マスクの作成 • 標高 900 から 1600 メートルのマスクを作成 • 領域設定を「dem10m」に合わせる • マップカリキュレーターを呼び出し、以下の設定で実行 • 新しいラスターマップ名:elev_800_1800 • 式 : (dem10m@PERMANENT 63 > 800) & (dem10m@PERMANENT <=1800) • 作成されたラスタの値を確認する • • 標高 800~1800m の間の値は? マスクの設定 • 「ラスター」メニューから「マスク」を選択し、 「MASK を使用す るためのラスターマップ」に「elev_800_1800」 、 「MASK を使うカ テゴリ値」に「1」を指定し、コマンドを実行 • • レイヤリストで、「dem10m」、「vege」だけが表示されるようチェ ックボックスを選択し、マップ表示を見る • • DEM の表示域は?植生ポリゴンの表示域は? • マスクの解除 • 「ラスター」メニューから「マスク」を選択し、 「ぶら下がりを削除」 タブで、 「既存の MASK を削除する」をチェックし、実行ボタンを クリック • 次回マスクをセットする際に、この削除オプションがチェッ クされていないことを確認することを忘れないように! • または、コマンドコンソールで、r.mask -r を実行 • 地図表示がリフレッシュされないときは、 64 をクリック • NULL 値の取り扱い – インポートした DEM の周囲にある値 0 の部分を NULL に置き換える • 標高値が 0 ではないので、値がないことを示す NULL を割り付ける • 「ラスター」メニューの「ラスターマップの作成」から「NULL 値の管理」 を選択 • 「必須」タブで DEM を、 「変更」タブで「NULL 値をセットするセルの一 覧」に「0」を入力して、実行 • マップ表示で、DEM の周辺部にある元々値が 0 であったところの値を確認 してみる • 値が NULL になっていないとしたら、なぜか考える • ヒント:NULL 値操作の対象とした DEM はどのマップセットにあ るか?現在のマップセットは何か? • コマンドコンソールで、g.list rast (ラスタのリストを表示する)を実 行する • PERMANENT マップセットから、dem10m を現在のマップセット、nikko にコピーする • 「ファイル」メニューの「マップの管理」から「コピー」を選択す る • 「 コ ピ ー す る rast フ ァ イ ル 」 に 「 dem10m@PERMANENT, my_dem10m」と入力する • • g.copy rast=dem10m@PERMANENT,my_dem10m コピーした DEM に NULL 値の処理をする 65 93 ラスタのデータタイプ • 整数データ (CELLタイプ) – 植生タイプなどのカテゴリカルデータ、ラスタ化されたベクタデータ – データの構成 • カテゴリー番号: 整数値 • ラベル: テキスト(例えば植生タイプ名) • 浮動小数点データ (FCELL、DCELLタイプ) – – – – 標高値などの連続数 FCELL: 浮動小数点 DCELL: 倍精度浮動小数点数 データの構成 • データ値: 浮動小数点 • ラベル: 範囲で指定 • 3D 浮動小数点データ (voxel) – 今回は触れない 94 ベクター⇔ラスタの変更 • GRASSではマップタイプの変更が可能 (「ファイル」・「マップタイプの変換」) – ベクターからラスター – ラスターからベクタ 値のソースを指定:整数 2 1 属性テーブルから値 のソースを選択 この例では、 vegeベクターを vege_rasterラ スタに変更 カテゴリラベルに なる属性(テキス ト)を選択 66 95 データファイルの管理 • 「ファイル」メニューの「マップの管理」 – データのリスト • g.list: g.list type=rast – コピー • g.copy: g.copy rast=コピー元ラスタ,コピー先ラスタ名 • 他のマップセットからのコピーでは、ラスタ名の後に「@マッ プセット名」をつける – g.copy rast=dem10m@PERMANENT,my_dem – 削除 • g.remove: g.remove rast=ラスタの名前,ラスタの名前, – 名前の変更 • g.rename: g.rename rast=現在の名前,変更後の名前 96 実習4-3 • データタイプの変換 – 植生図ベクタをラスタへ • データファイルの管理 – ラスタのリストの表示 – ラスタのコピー – ラスタの名前の変更 – ラスタの削除 67 実習4-3 • ベクタからラスターへのデータ変換 – ベクタの植生図をラスタに変換する • 現在の領域設定、ラスタ解像度を、g.region -p で確認する • 今後、30m 解像度で解析を進めるため、ここで解像度設定を変更する • • g.region res=30 -ap 「ファイル」メニューの「マップタイプの変換」または、 「ベクトル」メニ ューの「マップタイプの変換」から「ベクトルラスター」を選択する • v.in.rast ウィンドウで、以下のように設定してコマンドを実行 • 「必須」入力するベクトルマップ名:vege@PERMANENT • 「必須」出力するラスタマップ名:nikko_vege • 「必須」ラスター値のソース:attr • 「属性」属性パラメーターの列名:MAJOR1 • 「属性」ラスタカテゴリーラベル:EN_NAME • マップ表示で、ラスタ化された植生図の属性を検索 • r.category map=nikko_vege で、ラスタのカテゴリーリストを出力 • • ラスタメニュー/レポートと統計/カテゴリ情報の管理でもよい データファイルの管理 – ラスタのリスト表示 • g.list rast • コマンドコンソールに、ラスタのリストを表示するコマンド、g.list.rast を 入力して実行する – ラスタレイヤのコピー • g.copy rast=from,to • マップセットを指定してコピーするなら@マークをラスタ名のあとに付け マップセット名を続ける • – – g.copy rast=dem10m@PERMANENT,dem10m_test ラスタ名の変更 • ラスタレイヤの名前を変更する以下のコマンドを実行 • g.rename rast=dem10m_test,dem10_test_test ラスタの削除 • 以下のコマンドで、先に作成した dem10_test_test を削除 • g.remove rast=dem10_test_test 68 97 GRASS 5.GRASS -データ解析- (90min) データ解析 クラス分け ラスター計算 リサンプリングと内挿 ラスタレイヤの重ね合わせ ラスタの統計 実習 98 これまでのところ。。。 • • • • • • GRASS データのインポート データの表示 データ解析の準備 ラスタデータのタイプ データ解析 – – – – – クラス分け ラスター計算 リサンプリングと内挿 重ねあわせ 統計 • データ解析 応用編 – 地形・水文解析 69 99 再クラス分け: r.reclass • 既存のカテゴリーを再区分 – カテゴリーからカテゴリーへ • コナラ林、ミズナラ林を落葉広葉樹林に – 連続数からカテゴリーへ • 斜面方位に基づき、東西南北に分ける • r.reclassでは実際にデータは再区分されない – 参照テーブルを作成するだけ • 元のデータを削除するとエラーが起こる – 結果を出力する場合は、r.mapcalc を使う • r.mapcalc “出力名=再区分されたデータ” 100 再クラス分け: r.reclass 0 thru 800 = 1 low 800 thru 1600 = 2 mid 1600 thru 3000 = 3 high 70 101 再クラス分け: r.reclass 19クラス 2014 9016 9024= 1 conifer 2017 4017 4013 5044 9931 9933= 2 others 4093 = 3 shrub 5009 = 4 decisuous 5049 5066 = 5 grass 9073 9082 9099= 6 agland 9902 9905 9919= 7 developed 7クラス 102 再クラス分けテーブルの作成作業 属性テーブルマネージャー(ベクタ) r.reclass (ラスタ) 属性テーブルマネージャー(ベクタ)、または r.category でカテゴリ値を見ながらクラス分け r.category (ラスタ) 71 103 実習5-1 • データ解析 – クラス分け • DEMの標高帯(0~800, 800~1600, 1600~3000)にクラス 分けする • クラス分けしたデータを見る 104 memo 72 実習5 実習5-1 • データ解析 – クラス分け • DEM を標高帯(0~800, 800~1600, 1600~3000)にクラス分けする • r.region -p で現在の解析環境を確認(解像度 30m) • 「ラスター」メニューから「カテゴリー値・ラベルの変更」 ・「再分 類」を選択 • • r.reclass ウィンドウで以下のように設定してコマンドを実行 • 最分類されるラスターマップ:dem10m • 出力するラスターマップ名:elev_zone • 「オプション」タブ、「対話的に値を入力」に以下を入力 • 0 thru 800 = 1 low • 800 thru 1600 = 2 mid • 1600 thru 3000 = 3 high クラス分けされたマップを見てみる • 73 105 ラスタレイヤの重ね合わせ: r.patch • 視覚的な重ね合わせ – d.rast -o – NULL値の部分を表示しないで、下にくるレイヤを表示 する • r.patch – NULL値を持つ複数のレイヤを重ねあわせ、一つのラ スタにする • r.cross – 複数のカテゴリを持つラスタを掛け合わせる • r.mapcalc – 条件文により複数のラスタを組み合わせる 106 ラスタレイヤの重ね合わせ: r.patch • r.patch in=A,B,C out=D • A、B、C、の各レイヤのNULLをその下のレイヤで 埋め合わせてDレイヤを作成 D C B A 74 107 ラスタレイヤの重ね合わせ: r.cross • 2つ以上のラスタのかけ合わせ • r.cross in=A,B out=C • 入力ラスタのカテゴリ名の組み合わせが出力ラスタ のカテゴリ名になる – 例:カテゴリ名がそれぞれ「落葉林」と「A群」ならば 結果 は「落葉林; A群」 出力 行動圏 植生 108 ラスタレイヤの重ね合わせ: r.mapcalc • ラスタBにNULLの部分があるので、その部分 だけラスタAの値を使って、NULLの無いラスタ Cを作りたい C = if (isnull(B), A, B) C B A 75 109 単一ラスタの統計 • r.category – ラスタのカテゴリ値の管理 • カテゴリ値のリストを作成 • r.univar – ラスタ値の統計値計算 • セル数、最大値、最小値、範囲、平均、分散などなど 110 ラスタ間の統計 • カテゴリラスタと定量的ラスタの間の統計 – – – – r.statistics 流域ごとの平均標高を求める 植生タイプごとの平均斜面方位を求める 行動圏内の平均標高を求める • カテゴリラスタ間の統計 – r.report – サルの行動圏内の植生タイプの面積を求める • 複数のラスタ間の面積割合 – r.stats – 標高帯ごとの各植生タイプの面積割合 • 2つのカテゴリラスタ間のクロステーブル – r.coin 76 カテゴリラスタと定量的ラスタの間の 統計: r.statistics 111 • r.statistics base=A cov=B out=C method=average • 流域ごとの平均標高を求める – r.statistics base=watershed cov=elevation out=elev_stat_avg method=average • ただし、定量的ラスタは、整数である必要がある – r.mapcalc “elev_int=round(elevation)” • 結果の数値での確認 – r.category • 結果のカテゴリラベルをカテゴリ値に変更する – r.statisticsで出力される統計値は、出力ラスタのカテゴリラベル として扱われている – r.mapcalc の中で、「@」を入力ラスタの前につけることでラベ ルを値に変更 • r.mapcalc “elev_stat_avg_val=@elev_stat_avg” 112 カテゴリラスタ間の統計: r.report • r.report A,B unit=h,p – ニホンザル5群の行動圏内の植生タイプの面積(hr)と比率 (%)を求める • r.report monkey,vegetation unit=h,p 77 113 実習5-2 • データ解析 – ラスタ統計 • 標高帯の割合計算 • 標高帯ごとの植生の割合 114 memo 78 実習5-2 – ラスタ統計 • 標高帯の面積割合を計算する(単独のラスタレイヤの統計) • 「ラスタ」メニューの「レポートと統計」から「一般統計」を選択 する • r.stats ウィンドウで、以下のように設定して、コマンドを実行 • 入力ラスタ名:elev_zone • 「出力」タブで「占有率を出力」と「カテゴリーラベルの出 力」をチェック • • 一番標高の高いゾーンの割合は? (13.04%) 標高帯ごとの植生の割合を計算(カテゴリラスタ間の統計) • ラスタ」メニューの「レポートと統計」から「ラスターマップをカ テゴリー別に集計」を選択 • r.report ウィンドウで、以下のように設定してコマンドを実行 • 報 告 す る ラ ス タ ー マ ッ プ : elev_zone@class2012,nikko_vege@class2012 • 2 つのラスタを選ぶ場合は、最初のラスタをドロッ プダウンリストで選択した後、再び同じドロップダ ウンリストで他のラスタを選択する • 「オプション」タブの「単位」で「キロメートル」と「パー セントカバー」をチェック • 各標高帯で一番割合の高い植生タイプは? • 低標高帯:Sugi-Hinoki-Sawara shokurin • 中標高帯:Kuri-Mizunara • 高標高帯:Kometsuga 79 115 GRASS 6.GRASSのモデリングと ラスタ解析 (60min) ラスタ計算機 ラスタ解像度の変更 各種モデリング 描画モデラー アドオン 実習 116 ラスターカリキュレーター: r.mapcalc • ラスターの演算 – http://grass.osgeo.org/grass64/manuals/r.mapcalc.html – 演算子: -, +, <, >, ==, !=, &, |…… – 関数 • • • • • • • abs(), sine(), cos(), squt(), exp(), log(),,, max(), min(), median(), mode(),,, rand() int(), float(), double() if() isnull(), null(), x(), y(),,, • 移動ウィンドウ解析 80 117 ラスターカリキュレーター: r.mapcalc 1.新規作成するラ スタの名前を指定 2.既存のラスタ、 演算子、関数を 使って式を作成 118 ラスターカリキュレーター: r.mapcalc • • • • • • c=a+b ndvi = 1.0 * (b4 – b3) / (b4 + b3) c = if (a == 1, 100, -999) c = if (a >=3 && b <= 5, 1, 2) c = if (a == 1, 1, 0) || if (a == 2, 1, 0) c = if (a == 1, a, b) 81 119 ラスタの解像度変更: r.resamp.interp • GRASSでは、データプロセスの際、g.regionで設 定された解像度に自動的にリサンプリングされ るが、nearest neighbor (最近傍法)が使われる – DEMのリサンプリングには向かない • 例: DEMをnearest neighborでリサンプリングすると、いわ ゆるチェッカーボード模様が出ることがある。 • そのため、最近傍法以外を指定して、手動でリ サンプリングする必要が出てくる – r.resamp.interpで用意されている内挿法 • Nearest neighbor (カテゴリカルデータ向き) • Bilinear (DEMなど連続数) • Bicubic (DEMなど連続数) 120 ラスタの解像度変更: r.resamp.interp 30mリサンプリング(nearest neighbor) 10m解像度の植生図ラスタ 30mリサンプリング(bilinear) 82 121 水文モデリング • r.watershed – DEMから河川、流域をモデル – 解析準備 • DEMをFillする(r.dill.fill) – DEM上にある、流路のSinkを除去する • 河川を発生させる流域面積を決定する – 解析後 • 発生させた河川ラスタを細線化する(r.thin) • 細線化したラスタをベクタ化する(r.to.vect) 122 地形解析 • DEMから、地形に関する パラメタを計算する • 斜面と方位 – r.slope.aspect • 陰影図 – r.shaded.relief • 各種地形インデックスの 計算 – r.param.scale 83 123 描画モデラー • GRASSの解析プロセスを視覚的にわかりやす いモデルビルダーで作る • プロセスの自動化ができる! • パイソンスクリプトとして書き出せる!! 124 GRASSのAddon • 標準の解析ツールに 加え、 – ベクタ 68種類 – ラスタ 104種類 – その他多数のアドオン が用意されている • http://grasswiki.osgeo.org /wiki/GRASS_AddOns 84 125 実習 6 • 地形解析とニホンザルの生息地環境解析 – 地形解析 • DEMを使い、地形陰影図、斜面方位、傾斜角の計算を 行う – ニホンザルの生息地解析 • 行動圏内の標高、斜面方位、傾斜の統計をとる • 行動圏内の植生タイプの割合を計算する • 行動圏内の環境を標高、傾斜方位、傾斜角、植生タイ プでクラス分けする – 描画モデラーのデモ 85 実習6 • 地形解析 – 目的:DEM を使い、陰影図の作成、斜面方位、傾斜角の計算を行い、ニホンザル の生息地環境解析の準備をする • 陰影図の作成 • 解析環境の確認(g.region -p) 、30m 解像度で、DEM 全域を領域と する • 「ラスター」メニュー、 「地形解析」、 「シェーディング」を選択し、 「入力標高マップ」として、30mDEM、「出力する陰影レリーフマ ップ名」として「hillshade30m」、他のオプションはそのままにし てコマンドを実行 • 結果の確認 • 陰影図に何か不自然な点がないかチェック • 元となる DEM に含まれるエラーをチェックするには、陰影 図を作成するのが手っ取り早い • 拡大した時に男体山あたりに現れる線は? • 10mDEM から 30mDEM を作成した時のリサンプ リングの方法は? • 別のリサンプリング方法を試すなら、 「ラスター」メニュー、 「ラスターマップの作成」 、 「複数手法による再サンプリング [r.resamp.interp]」を選択し、オプションタブの「補間方法」 で「bilinear」、 「bicubic」を選択し、新しく 30mDEM を作 成 • リサンプリングした DEM で陰影図を作成して、リサンプリ ング前の陰影図と比較 • • 陰影図の不透明度を調整(10%, 50%, 75%)して、見栄えの良い標 高、地形図を作る 86 • • 斜面方位、傾斜の計算 • 解析環境の確認(g.region -p) • 「ラスター」メニュー、 「地形解析」、 「傾斜と方位」を選択し、「標 高ラスターマップ名」として、30mDEM、「出力する傾斜ラスター マップ名」として「slope30m」 、 「出力する傾斜方位ラスターマップ 名」として「aspect30m」 、と入力してコマンドを実行 • • 作成されたラスタをマップ表示上で確認 ニホンザル A 群の行動圏内の標高、斜面方位、傾斜、植生タイプの割合は? – A 群の行動圏ラスターを使って、標高、斜面方位、傾斜の統計を取る • 標高ラスタのデータタイプ(CELL, FCELL, DCELL)をメタデータで確認 する • 現在のところ、カテゴリラスタと定量的ラスタ間の集計を行う際には、定 量的ラスタのデータタイプは、CELL(整数)である必要がある。 • データタイプが CELL 以外のデータがあれば、マップカリキュレーターを 使いデータタイプを CELL に変更 • 例えば、elev_int=round(elevation) のように、浮動小数点値を整 数に変換 • 行動圏内の平均標高、最頻出斜面方位、傾斜のメディアンを計算する • r.statistics を利用し、オブジェクトベース統計方法を指定する • 例えば、 「基本ラスターマップ名」として、ラスターに変換した、A 群の行動圏ラスタ、 「重ねるラスターマップ名」として、DEM、 「オ ブジェクトベース統計方法」に average、「結果のラスターマップ」 に troopA_avg_elev を指定しコマンドを実行 • r.category で 、 作 成 さ れ た レ イ ヤ の カ テ ゴ リ ー 情 報 を 見 る (r.category) • – 1315.931 m A 群の行動圏ラスターを使って、行動圏内の植生タイプの割合を計算する • 「ラスター」メニュー、 「レポートと統計」から「ラスターマップをカテゴ 87 リ別に集計」を選択し、報告するラスターマップに、A 群の行動圏ラスタ、 植生ラスタの順に入力を指定する。 • 引き続き r.report ウィンドウのオプションタブで、NULL 値を対象から外 し、単位をヘクタールとパーセントカバーに指定して、コマンドを実行 – • どの植生タイプが行動圏内に最も多いか? • |5009|Kuri-Mizunara. . . . . . . . . . . . . . . . . . . .|319.320000| 34.62| A 群の行動圏内の標高帯別の植生タイプ割合を計算する • どの機能を利用するか? • • • • r.report いくつのレイヤのインプットが必要か? • A 群行動圏ラスタ • 標高帯ラスタ • 植生ラスタ 中標高帯、高標高帯で一番割合の高い植生は? • |Buna-Miyakozasa. . . . . . . . . . . . . . . . . .|448.290000| 51.38| • |Buna-Miyakozasa. . . . . . . . . . . . . . . . . .| 35.730000| 71.66| 描画モデラー(オプションで時間があればデモ) – ニホンザル OG 群の行動圏内の標高、斜面方位、傾斜、植生タイプの割合は?ニホ ンザル GO 群の行動圏内の標高、斜面方位、傾斜、植生タイプの割合は?と言った、 繰り返しの作業をする場合なにかいい方法があるか? – 作業の自動化 • 描画モデラーの利用とパイソンスクリプト 88 オープンソースGISを用いた自然環境解析講座 ラスタ解析コース テキストブック <執筆・編集・デザイン> 今木 洋大 PacificTSpatialTSolutions,TLLC Email:Thiroo@angeli.org URL:Twww.pacificspatial.com URL:Twww.geopacific.org <発行> 2013年4月 <発行者> 特定非営利活動法人 地域自然情報ネットワーク TheTGeoecologicalTConservationTNetworkT(GCN) Email:Tgcn-office@geo-eco.net URL:Thttp://www.geo-eco.net 本書は、2013年4月にGCN主催で開催したGIS講座のテキストとして作成された ものです。複写や転載が必要な場合は、著者または発行者にご相談下さい。
© Copyright 2024 Paperzz