LoginSignup
0
お題は不問!Qiita Engineer Festa 2023で記事投稿!

QGISで雲がかかった「天国から視点」っぽい画像を作る

Last updated at Posted at 2023-07-20

QGISで「天国から視点」っぽい雲がかった画像を作る - 作例

Anita Graser & Gretchen N. Peterson "QGIS Map Design (2nd Ed.)" という本にあった作法を参考に、ちょっと違うやり方で作りました(p.65 “8. Genearating Cloudy Masks”):

この書籍は、以下の過去事例(by Dylan Moriarty)を参考にしたそうです。Coolです:

手順

QGISで「衛星画像」を表示

こちらが参考になります↓

今回は「地理院写真」を利用しました。

たくさんの「点」をランダムにつくる

これが「雲」になります。

  • メニュー → 「プロセシング」 → 「ベクタ作成」→「ランダム点群」
    • 作成範囲: キャンバス領域を使用
    • 点の数: 10000 (適宜調整)
    • 点距離感の最小距離: 0

image.png

  • いい感じのスタイルにする
    • グレーで透過
    • #ededed, 透過率20%

「雲のないところ」をつくる

  • エリアのポリゴンを持ってくる
  • 雲がない場所を指定する
    • Layer: N03-21_01_210101
    • Polygons: ("N03_004" = '中央区') OR ("N03_004" = '厚別区')
scale_exp(
	distance(
		$geometry,
		union(
			geometry(get_feature('N03-21_01_210101_geo', 'N03_004', '中央区')),
			geometry(get_feature('N03-21_01_210101_geo', 'N03_004', '厚別区'))
		)
	),
	16616000, 16666847,
	0, 500,
	0.5
)

参考: scale_exp 関数↓

指数曲線を用いて、与えられた値を入力範囲から出力範囲に変換します。この関数は、指定された出力範囲へ値をイージングするために使用します。

構文 scale_exp(value, domain_min, domain_max, range_min, range_max, exponent)

↑の想定: 対象エリアから離れるにつれ円の半径を大きくする

... うまくいかない

  • geometry() → ジオメトリツールでポリゴンに「ジオメトリ属性を追加」しておく必要あった
    • distance() が、思ったような数字ではない
    • 「ポリゴンとポイントの距離」とは?

→ 別案

  • 「そのエリアなしのレイヤー」で「ランダムな点のレイヤー」を切り抜く(クリップ)
  • 円のサイズを、 rand(100, 500) みたいにしてそれっぽくする
  • ⇒ それなりにできたが、雲が切れるところで、「円」という感じに見える
  • (書籍での方法だと、切れるところ=縁に近づくにつれ、半径が小さくなるので、より自然では)

QGISで「天国から視点」っぽい雲がかった画像を作る - 作例

参考: 書籍 ""QGIS Map Design" でのオリジナル

本のダウンロード可能なリソース:

「memory layer」なるものを使っているので、プラグインが必要:

image.png

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0