QGIS API: ラスタデータの読み込み・表示

ラスタデータの読み込みもベクタデータのと大体同じですが、
ベクタデータではシンボルの色や線幅を指定する部分が、
ラスタデータでは自動的な色調整や配色、パレットなどを指定するものに変わるところです。

特に何もしなくても問題ない場合は、以下のような感じでしょうか。

  def addRasterLayer(self):
    file = QFileDialog.getOpenFileName(self, "Open TIFF file", ".", "TIFF Images(*.tif)")
    fileInfo = QFileInfo(file)

    layer = QgsRasterLayer(fileInfo.filePath(), fileInfo.completeBaseName())

    if not layer.isValid():
      return

    # 2.x
    QgsMapLayerRegistry.instance().addMapLayer(layer);
    # 3.x
    QgsProject.instance().addMapLayer(layer)

    self.canvas.setExtent(layer.extent())

    # 2.x
    cl = QgsMapCanvasLayer(layer)
    self.layers.append(cl)
    self.canvas.setLayerSet(self.layers)

    # 3.x
    self.layers.append(layer)
    self.canvas.setLayers(self.layers)

QgsVectorLayerでも同じですが、コンストラクタの2番目の引数はレイヤー名として
使われる文字列なので、ファイル名である必要はありません。

ラスタレイヤでは色調整や配色などを設定する関数が多数用意されています。
これらは当然カラーフォーマットによって使い分ける必要があるので、
事前に調べてから適用する必要があります。
ドキュメント
にある使用例のとおりにすれば良いんではないでしょうか。

カラーフォーマットと異なる色調節関数を呼び出したりすると
何も表示されなくなったりするので、気をつけましょう。

アーカイブ