座標を持たない画像に座標を与えるには

地図画像が合わせようとしている地図に対して歪みがある場合はGRASSのGeoRectifierツールを使います。
これは、i.pointi.targeti.rectifyの一連のコマンドに対応したものです。

準備

このツールを使う場合は座標値を持たない地図画像用のLocation/Mapsetと、合わせる対象となる地図用の
Location/Mapsetの2つが必要になります。

座標値を持たない地図画像用のLocation/Mapsetは、座標系、投影法を特に指定せず”x,y”で作成します。
合わせる対象となる地図用のほうは、その地図の座標系、投影法に従って作成します。

Location/Mapsetを作成したら、まず座標値を持たない地図画像をそれ用のLocation/Mapsetに取り込みます。
取り込んだら、i.groupで画像グループを作成します。
画像グループは画像が1つだけの場合でも作成する必要があります。
カラー画像を取り込んだ場合はそれぞれのチャンネルごとに画像データが出来るので、すべてを同じグループに加えます。

画像グループを作成したら、いったんGRASSを終了します。

GeoRectifierの使い方(wxPython)

合わせる対象の地図用のLocation/Mapsetを指定してGRASSを起動し、
合わせる対象となる地図データをあらかじめ表示しておきます。。

起動後、LayerManagerのファイルメニューの中にある「Georectify」を選択します。
選択すると、以下のようなダイアログが表示されます。

Georectifyダイアログ1

位置合わせを行うデータが画像の場合は”Georeference Raster”を選択します。

“Select Mapset”ボタンを押して、座標値を持たない画像用のマップセットを指定します。
“Select Group”で、その画像グループを指定します。

「次へ」を押すと、以下のような変換元のイメージグループを選択する画面になります。
ここで、「Create/edit group」ボタンを押すと、変換元のマップセットにグループを作成することもできます。
未だ作成していない場合はここからグループを作成することができます。
「Extention for output maps:」は変換先のレイヤー名に付加される文字列です。

Georectifyダイアログ2

「次へ」を押すと、今度は位置あわせに使用する変換元のレイヤーを指定するダイアログにが表示されます。
変換元グループ以外の画像を指定することもできるので注意!

Georectifyダイアログ3

「終了」を押すと、以下のように変換元のデータが表示されます。

変換もとのデータGCPダイアログ

上部にある”Select rectification method for raster”は変換に用いる式の次数で、
チェックを入れると必要な点数分空のGCPの行が追加されます。
(ただし、既に取得したGCPを消すことが無いようにするために、一度高い次数を選択した後再び低い次数を選択しても点は減りません)。
必要な点数は”Select rectification method for raster”のところで”1st order”を選択した場合は4点以上、
“2nd order”を選択した場合は6点、”3rd order”を選択した場合は10点です。

参照点は座標値を持たない画像→地図データの順で取得します。

座標値を持たない画像が表示されているウィンドウのツールバーから下図のボタンを押して、
画像上の1点を指定します。

GCP追加ボタン

指定するとその点の位置がウィンドウに記録されます。
続いて対応する地図上の点を指定します。
変換元の点を選択直後は自動的に選択ツールがセットされますが、
拡大・縮小などのほかのボタンを押した後選択を行うには、ツールバーから下図のボタンを押してから指定します。

選択ボタン

次の点を指定するときは、あらかじめカーソルを空欄のところに移動してから指定しないと、
以前の結果を上書きしてしまいます。

必要な点数の組以上を指定したら、”Calculate RMS Error”ボタンを押して残差を確認します。
残差が大きいなどの理由で採用したくない場合は左側のチェックをはずします。

残差計算ボタン

なお、以下のボタンの左側はGCPを消去するボタンで、右側はGCPの値を全て0にするボタンです。

GCP削除ボタンとクリアボタン

GCP取得結果を保存するには、「Save GCPs to POINTS file」ボタンを押します。
変換の前に必ず保存しておくようにします。

GCP保存ボタン

結果が良好なら、”Rectify”ボタンを押し、変換を実行します。

変換実行ボタン

変換が完了すると、以下のようなダイアログが表示され、実行結果がレイヤーマネージャに表示されます。

レイヤーマネージャにログが出力される完了ダイアログ

続いて以下のダイアログが表示されます。
どうやら、ベクタレイヤーの属性を変換元からコピーするよう促す警告のようです。

ベクタレイヤー属性に関する警告ダイアログ


実行結果

実行結果

GeoRectifierの使い方(Tcl/TK)

合わせる対象の地図用のLocation/Mapsetを指定してGRASSを起動し、
合わせる対象となる地図データをあらかじめ表示しておきます。。

起動後、gis.mのファイルメニューの中にある「Georectify」を選択します。
選択すると、以下のようなダイアログが表示されます。

Georectifyダイアログ

位置合わせを行うデータが画像の場合は”Georeference Raster”を選択します。

“Select Mapset”ボタンを押して、座標値を持たない画像用のマップセットを指定します。
“Select Group”で、その画像グループを指定します。

“Select map”では、位置合わせを行うときに表示するデータを指定します。
データが1つしかない場合はその画像を指定します。

すべての設定が完了したら”Start georectifying”ボタンを押します。
ボタンを押すと、下図のように新しいウィンドウに座標値を持たない画像が表示され、
GCPの情報を表示するダイアログが表示されます。

参照点は座標値を持たない画像→地図データの順で取得します。

座標値を持たない画像が表示されているウィンドウのツールバーから下図のボタンを押して、
画像上の1点を指定します。

指定するとその点の位置がウィンドウに記録されます。
続いて対応する地図上の点を指定します。指定するときはツールバーから下図のボタンを押してから指定します。

次の点を指定するときは、あらかじめカーソルを空欄のところに移動してから指定しないと、
以前の結果を上書きしてしまいます。

必要な点数の組以上を指定したら、”Calculate RMS Error”ボタンを押して残差を確認します。
なお、必要な点数は”Select rectification method for raster”のところで”1st order”を選択した場合は4点以上、
“2nd order”を選択した場合は6点、”3rd order”を選択した場合は10点です。
残差が大きいなどの理由で採用したくない場合は左側のチェックをはずします。
消しゴムマークのツールボタンはチェックマークをはずした点をすべて消去するコマンドです。

結果が良好なら、”Rectify maps in group”ボタンを押し、変換を実行します。
すると、グループに登録されているすべての画像に対して変換が実行されます。

実行結果

注意点など

“Select rectification method for raster”の”1st order”などの変換方法が何をさしているのかはよくわかりません。
(次数だとしてどのような数式のものなのか、、)

WinGRASS 6.3.0では、Georectifierダイアログの2番目の”Create/edit group”ボタンが機能しません。

アーカイブ