大量のラスタファイルを扱う方法

1,881 views
Skip to first unread message

well...@gmail.com

unread,
Mar 15, 2019, 2:50:47 AM3/15/19
to QGIS初心者質問グループ
QGIS初心者です。よろしくお願い致します。

現在、QGIS3.6を使用しております。

タイルになったラスタファイルをメモリ消費を抑えつつ表示させたいのですが、
標準機能でできるのか、プラグインが必要なのか分かりません。

試しに”仮想ラスタを構築”を使うと、
一度にすべての画像を読み込んでしまってスクロールに時間が掛かってしまいます。

SISでいう”インデックスデータセット機能”

(複数枚に分かれたタイル状のファイル群をシームレスな 1つのデータセットとして扱い、必要なファイルのみを自動開閉することで、メモリ消費量を抑えた高速な操作ができます。ファイル群の再帰検索機能もサポートします。)

みたいなのがあると助かるのですが。。。


アドバイス、よろしくお願い致します。

福岡

unread,
Mar 15, 2019, 3:19:37 AM3/15/19
to QGIS初心者質問グループ
こんにちは

縮尺によって表示させるラスタの解像度を変えるとスクロールがスムーズになります。
このことを可能にするためには、各ラスタファイルでピラミッドを作成してあげると良いです。

2.xですとラスタ - その他 -オーバービューの作成(ピラミッド)
3.xですと、プロセッシングツール - GDal - ラスタ その他 - オーバービューの作成(ピラミッド)

大量にラスタがあるとのことですので、バッチ処理することになると思います。
バッチ処理は2.x版の方が使いやすいと思いますので、2.18をお使いになることをお勧めいたします。

adachi

unread,
Mar 15, 2019, 3:31:35 AM3/15/19
to QGIS初心者質問グループ
福岡様のご回答に沿った蛇足的な補足ですが

・3.6だとプロセッシングツールにもありますが、ラスタ→その他→全体図の作成 にもあるようです
・バーチャルラスタの構築 で全体ラスタを作ってからピラミッド作成、でも同じ効果が得られる、とあります。
 ただしこれは後からラスタを追加する必要のない場合で、ラスタを追加する可能性があるのであれば福岡さまご提示のように個別にバッチ処理しておいたほうが良いかと思います
・レイヤパネル上でラスタファイルをダブルクリック→「ピラミッド」タブ からも作成できます
 ただこれも全体ラスタを先に作った場合には有用ですが、バッチ処理はできません…

well...@gmail.com

unread,
Mar 15, 2019, 5:43:42 AM3/15/19
to QGIS初心者質問グループ
ご回答ありがとうございます。

全体図作成はスケールフィルタをかけるイメージでいいのでしょうか?

一度試してみます。

ありがとうございました。

ありた

unread,
Mar 15, 2019, 10:54:57 AM3/15/19
to QGIS初心者質問グループ
こんにちは

まず、「設定→オプション→レンダリングタブ」で「複数の CPU コアを使用する」にチェックが
入っていますでしょうか。また、ラスタデータの座標系とプロジェクト(表示)の座標系が不一致の
場合、画像を歪めて表示させる必要があるため、ベクタデータにくらべて描画に時間がかかります。
そのため(作業中は)できるだけプロジェクトの座標系はラスタデータのものと合わせることをおすすめします。
根本的な解決策ではありませんが、問題の解消につながる場合がありますので、まずはアドバイスしました。



さて。
以前、タイル画像(ここでは地理院タイルのように、各ズームレベルにおける 256x256 画像)を作成し、
出来上がった大量のタイル画像を MBTiles 形式という、単ファイル形式にしたことがありました。
参考:地理院タイル仕様 https://maps.gsi.go.jp/development/siyou.html

そのかわり、(一般に都市計画図等の大縮尺地図で使われる)平面直角座標系のラスタデータから
タイル画像で使われる疑似(真球)メルカトル図法への座標系の変換を行う必要があるため、
画像の生成には、そこそこのスペックのサーバで、そこそこの時間をかける必要がありました。

あらかじめ最適化された画像を、大量の 256x256 の画像データとして格納しているため
ファイル自体が数ギガバイトあっても QGIS 上での動作は軽快でした。


気軽に作れる方法ではありませんが、このような手法もあることを記しておきます。



参考までに、
1. ラスタデータに位置情報が付加されていない場合は、ワールドファイル等で付与する。
2. gdalbuildvrt で複数のラスタをひとつの仮想ラスタにする
3. gdal_translate-a_srs を使って座標系をもたない仮想ラスタから座標系をもつ仮想ラスタに変換する
3'. 場合によっては gdal_translate-expand rgba でマルチバンドの仮想ラスタにする必要があるかも
4. gdal2tiles.py でタイル画像化を行う
5. mb-util で MBTiles ファイルに変換

元のラスタデータが原因で 2. とか 3. でうまくいかないことがあったりして、かなり試行錯誤しました。
(そのときは確かタグの解像度情報がおかしな値のファイルがいくつかあった。)

ありた

unread,
Mar 15, 2019, 11:04:52 AM3/15/19
to QGIS初心者質問グループ
あ、すみません。

QGIS で操作して、このファイルが作成できるものではありません。
(このようなファイル形式もありますよと)ご参考までに。

adachi

unread,
Mar 16, 2019, 12:50:14 AM3/16/19
to QGIS初心者質問グループ
ありた様ご紹介のMBTilesについて、QGISでも現在はラスタの右クリック→エクスポートの形式選択でサポートされています。
(どのバージョンかわかりませんが、3.4あたりから?)

これも一案かと思ったのですが、高速化される確証がなかったのと
もともとタイル状であるラスタからバーチャルラスタを作ってまたタイル状にするのは何か二度手間のような気がして控えてしまったのですが
ありた様のように高速化される感触があるのであれば試してみても良いかもしれません。
Reply all
Reply to author
Forward
0 new messages