【天気予報】島の場所を移動させた地図をQGISで作成する
この記事でわかること
- 本来の場所とは異なる場所に地物を移動させて表示する方法
こんな人におすすめ
- 主題図作成の際に、地図上の地物を本来と違う場所に移動させたい方
はじめに
みなさんは、QGISを使っていて離れた場所にある地物を地図上の空いているところに移動させたいと思ったことはないでしょうか?たとえば、天気予報では日本海側に琉球諸島が描かれている地図をよく見かけます。
QGISでこれを再現しようとすると、地物を直接移動させることで実現することは可能ですが、位置情報が正しい場所ではなくなるのであまり望ましい方法とはいえません。このようなニーズに応えるために、ジオメトリジェネレータを使ってそれを実現する方法について紹介します!
ジオメトリジェネレータとは
ジオメトリジェネレータは、式を使ってジオメトリの表示方法を制御する機能です。既存レイヤのシンボルとしてジオメトリが表示できるので、地物の位置情報を変更することなく地物の表示位置を変更することが可能です。
ジオメトリジェネレータの使い方
今回は、行政区域データを使用して、天気予報でよく見る地図を作成してみましょう。
まずは、国土数値情報から全国の行政区域データ(平成31年)をダウンロードします。
データを解凍後、QGISに「N03-19_190101.shp」をインポートすると、日本列島が表示されます。
ここで、プロジェクトの座標系をEPSG:3857
に変更しておきましょう。
続いて、レイヤパネルより、「N03-19_190101」を右クリックして「プロパティ」を選択します。「シンボロジ」のタブから「シンプル塗りつぶし」を選択し、「シンボルレイヤ型」のプルダウンを開き「ジオメトリジェネレータ」を選択します。
「単位」の下部に式を入力する欄が表示されるので、次の式をコピペしましょう。
case
when "N03_001" = '沖縄県' then
translate($geometry, 5, 15)
else
$geometry
end
マップキャンバスを見てみると、琉球諸島が本州から見て左上の位置に移動したことが確認できます。
今回使用した式について簡単に説明すると、CASE文を使って「N03_001」フィールドが「沖縄県」の地物をtranslate関数を使って平行移動させています。
translate(geometry,dx,dy)
geometry:ジオメトリ
dx:x方向の移動
dy:y方向の移動
せっかくなので、「レイヤ」→「新規レイヤ」→「新規一時スクラッチレイヤ」を追加より、ラインも追加してみましょう!
マップを確認してみると、天気予報さながらの地図が簡単に作成できました。また、scale関数を組み合わせて使うことで、地物の大きさを変更させることも可能です。
今回は上記のデータを都道府県単位でディゾルブしたレイヤに対して、次の式を入力します。なお、ディゾルブせずにscale関数を使用すると地物同士が重なりあってしまうため注意が必要です。
case
when "N03_001" = '北海道' then
scale(translate($geometry, -8,-2),2,2)
else
$geometry
end
やっぱり本州と比べてみても北海道ってでっかいですね!
*北海道を二倍のサイズで表現しているため実際のサイズとは異なります。
おわりに
今回紹介した機能は、こちらのX(旧Twitter)の投稿を参考にしました。この機能は、成果図面を作成する際などにも有効かと思うので、みなさんもぜひ試してみてください!