QGISのpythonコンソールの使って、ラスタレイヤーの読み込みを行う。
この記事では、pythonによるQGISのラスタレイヤーを読み込む方法を紹介したいと思います。
pythonコンソールの場所や使い方についてはこちらの記事で紹介しています。
shpファイルなどのベクタレイヤーについてはこちらを記載しています。
pythonを使ってラスタレイヤーの読み込みを行う。
pythonを使ってQGIS上にラスタレイヤーの読み込みを行ってみましょう。この辺はベクタレイヤーと同様です。
まずは、作業をしやすいようにテキストエディタを立ち上げるとよいと思います。
エディタの場所は以下になります。押すテキストエディタが立ち上がります。
1つのラスターデータを読み込む
テキストエディタに以下のコードを入力するとレイヤーファイルを読み込むことができます。変数は、どのように使われるかをなんとなく書いているので、実際は短くわかりやすいものが見やすく良いと思います(例えば「yomikomu_Rasterlayer」を「rlayer」に変える等)。
#必要なモジュールをインポート
import os
from qgis.core import QgsProject, QgsRasterLayer
#読み込むラスターデータのURLを指定し変数に定義
yomikomu_Rasterlayer_url = r"C:\python\アイコン.tif"
#QgsRasterLayer(先ほど作成した変数, "レイヤー名をわかりやすいように入力")
yomikomu_Rasterlayer = QgsRasterLayer(yomikomu_Rasterlayer_url, "GISつかいかた辞典")
#ラスターレイヤーをマップに追加
QgsProject.instance().addMapLayer(yomikomu_Rasterlayer)
ラスタレイヤーを読み込むだけでは手で作業した方が早いですが、これから様々な処理を行う上で利用することもあると思います。
いくつかのラスターデータを読み込む
いくつかのデータを読み込む場合は色々方法はあると思います。
この記事ではglobでリストを取得しfor文で処理を行って、ラスタレイヤーを追加します。
ラスターは、「.jpg」「.png」「.tif」の3種類を追加します。今回は、globで取得したURLの拡張子のみで検索をかけて、画像ファイルのみ抽出しています。
#必要なモジュールをインポート
import os
from qgis.core import QgsProject, QgsRasterLayer
import glob
#ラスターファイルの拡張子を指定
gazoukakucyoushi = ('.jpg','.png','.tif')
#ラスターファイルを入れる空のリストを作成
yomikomu_Rasterlayer_list = []
#globで全てのファイルのURLを取得
for file in glob.glob(r"C:\python\\" + "*"):
kakucyoushi = os.path.splitext(file)
#拡張子でラスターファイルのみ抽出しリストに追加
if kakucyoushi[-1] in ('.jpg','.png','.tif'):
yomikomu_Rasterlayer_url = ''.join(kakucyoushi)
yomikomu_Rasterlayer_list.append(yomikomu_Rasterlayer_url)
#リスト内のデータに関して以下のコードを実行
for yomikomu_Rasterlayer in yomikomu_Rasterlayer_list:
#レイヤー名をファイル名にする変数を定義
Rasterlayermei = os.path.splitext(os.path.basename(yomikomu_Rasterlayer))[0]
#QgsRasterLayer(先ほど作成した変数, "レイヤー名をわかりやすいように入力")
yomikomu_Rasterlayer = QgsRasterLayer(yomikomu_Rasterlayer, Rasterlayermei)
#ラスターレイヤーをマップに追加
QgsProject.instance().addMapLayer(yomikomu_Rasterlayer)
ラスターデータに位置情報がなければ、重なって表示されます。今回はわかりやすいようにラスターデータごとに重ならないように位置情報をつけて横並びになるようにしています。
最後にまとめ
この記事では、pythonコンソールを使用したラスタレイヤーデータの読み込みを紹介しました。今回は拡張子による検索も追加で紹介しました。この方法はQGISでは、ベクターレイヤーにも使用することができたりします。
QGISのpythonコンソールを使ってQGISの用途以外の使い方(例えば、今回のものだと、欲しい画像ファイルのみ抽出してフォルダに整理)等もできたりします。このようなこともpythonによって行うことができるようになるので、ぜひ色々と試していただければと思います。
- globでファイル名を取得し、for文で処理するといくつかのファイルを一度に読み込める。
- 複数の拡張子のラスターデータを追加したい場合は追加したい拡張子のラスターデータを抽出する必要がある。
- pythonコンソールを使用したラスタレイヤーデータの読み込みができるとその後の様々な処理に使える。