2015年6月3日水曜日

GRASS GIS 7 を使ったShapefileのエラーチェック&修正

GRASS GISではデータを処理する際、一般的に多く使われているShapefileやGeoTIFFなどのファイル形式からGRASS GIS独自のファイル形式に変換をします。

ベクターデータの変換の際にはトポロジーなどのデータのエラーを自動的に検知して修正してくれるため、GRASS GISにベクターデータをインポートして、そのままエクスポートするだけで、エラーのないきれいなShapefileを作成することができます。

デジタイズなどでShapefileを編集して作成する場合、途中切り取ったり穴あきポリゴンにしたり、マルチポリゴンにしたりなどの作業をしていくうちにエラーの含まれたShapefileとなってしまい、様々なソフトウェアでジオメトリを計算する際に正しい値が算出されない場合があります(ドーナツポリゴンの面積が正しくないなど)。
そのためにもShapefileのエラーチェックは必要となってきます。

以下が作業手順です。
GRASS GIS 7で"gcs"という名前の地理座標系のLocationを作成し、"nuimura"という名前のマップセットを作成したとして説明していきます。
マップセットの作成などの手順は以前の投稿を参考にして下さい。

ベクターデータ(Shapefile) のインポート

こちらの図のように、「File」-> 「Import vector data」 -> 「Common import formats [v.in.ogr]」を選択します。


「Source settings」で「Browse」から読み込みたいShapefileを指定して、「Import」をクリックします。(こちらの例では、Dドライブ直下にあるaaa.shp)

その後、「File」-> 「Export vector map」 -> 「Common export formats [v.out.ogr]」を選択します。


「Name of input vector map to export」にファイル名@マップセット名を選び、「Name of output OGR datasource」に出力先のパスを指定して「Run」をクリックします。

これでエラーチェックしたきれいなShapefileは出力出来ました。
最後にGRASS GIS内に残ったファイルを削除して終了です。


「File」-> 「Manage maps」 -> 「Delete [g.remove]」を選択します。

「Data type」にvector mapを選択して「Force removal」にチェックを入れて
消したいファイル名を選択してRunをクリックすると削除されます。





2015年6月2日火曜日

GRASS GIS 7 でのbatファイル実行までのメモ

共同研究者の方への説明メモを作成したので、ついでにブログにも投稿します。



GRASS GIS 7のインストール(Windows)

GRASS GISのサイトよりインストーラをダウンロード&インストール

初期設定

GRASS GISのデータ置き場

GRASS GISでは一時的なデータ置き場を指定する必要があるため、予めWindows上でフォルダを作成しておく必要がある。今回の場合はDドライブ直下にgrassdataという名前のフォルダを作成して進める。

GRASS GIS上での初期設定

GRASS GIS 7を起動すると以下のようなスタート画面とコマンドプロンプトの2つが立ち上がる。

ここではまず、GRASS GISのデータ置き場を上記のように入力する(今回の例ではD:\grassdata)。
その後、GRASS Locationを設定する。GRASS Locationでは座標系を設定するので自分が使用するデータに応じて設定をする必要がある。
以下に地理座標系の場合の設定方法を記す。

  • “Selectg GRASS Location”で「New」をクリック
  • “Project Location”で適当な名前を指定する(スペースを空けずに英数字のみが無難)今回は地理座標系を扱うので”gcs”(←Geographic Coordinate System)としておく
  • 「Next」をクリック


  • “Select coordinate system ~”を選択して「Next」をクリック

  • “Projection code”に ll と入力(小文字のLが2つ:Longitude Latitudeの略で地理座標系の場合はこれを指定)して、「Next」をクリック
  • ここでは何も変更せず「Next」をクリック

  • ここでは楕円体の指定をする必要があるので、”wgs84” と入力して「Next」をクリック

  • ここでは何も変更せず「OK」をクリック

  • 「Finish」をクリック

  • その後、デフォルトの範囲と解像度を指定するかと聞いてきますが、こちらは後で変更できるので指定しないでかまいません(NoをクリックしてOK)。こちらの解像度指定はラスターデータの処理の場合に重要となりますが、ベクターデータの処理のみの場合は関係がありません。Yesをクリックしてしまった場合でも何もせずに「Set region」をクリックして終了させてかまいません。

最後にマップセットの名前を決めるように行ってきますが、こちらは好きな名前でかまいません。一つのPCを複数ユーザーで使う場合にユーザーごとに分けるためにある機能だと思います。おそらく。今回の例では “nuimura” としておきます。

ここまでの設定が済むと、以下の画面のようにLocationには”gcs”、mapsetには”nuimura”と”PERMANENT”の2つが表示されていると思います。mapsetの”nuimura”の部分をクリックして選択された状態にしてからウィンドウ下部の”Start GRASS session”をクリックすると、GRASSが起動します。


GRASS GIS 7 起動後

正しく起動すると以下の3つのウィンドウがたちあがります。左から「コマンドプロンプト」、「レイヤマネージャー」、「マップディスプレイ」です。使用するPCのディスプレイサイズによっていは「コマンドプロンプト」ウィンドウは他のウィンドウの裏側に隠れているかもしれません。

GRASS GIS 7 では、「レイヤマネージャー」からはメニューをクリックすることで様々なGIS処理を行うことができます。「コマンドプロンプト」からはGRASS のコマンドを入力することで様々なGIS処理を行うことができます。「マップディスプレイ」にはそれらの処理結果を表示して確認することができます。

GRASS GIS 7でのスクリプト処理

GRASS GIS 7でも以前のバージョン同様にスクリプトを使った自動処理を行うことができます。
スクリプトの種類としては、
  • bash
  • bat
  • python
などがあり、”bash”は「コマンドプロンプト」で”bash”と入力してbashモードに入ると使用でき、”bat”は「コマンドプロンプト」からそのまま使用可能で、”python”は「レイヤマネージャー」の”Python shell”タブから入力ができます。今回はすでにGRASS の処理を記述した”bat”ファイルがあるとして説明をしていきます。

GRASS GIS の処理を記述したbatファイルの読み込み

  1. batファイル(ファイル名:cleaningShapefile.bat)が、以下の場所にあるとします。
    D:\gamdam
  2. コマンドプロンプトでは最初は以下の場所にいますので、batファイルのある場所に移動する必要があります。
    C:\Users\[ユーザー名]
    (今回の例では、C:\Users\nuimura)
  3. Dドライブに移動するために以下のコマンドを入力
    D:
  4. Dドライブ直下のgamdamという名前のフォルダに移動するので以下のコマンドを入力
    cd gamdam
  5. 移動後に dir というコマンドを入力するとそのフォルダ内のファイルがリストアップされます。使用したいbatファイルもあるか確認をして下さい。

    dir
  6. その後、batファイルの実行のためにbatファイル名を入力します。
    cleaningShapefile.bat


以上で一連の手順は終わりです。