サイトマップ
お知らせ、メモ
案内板
うちのヘッドライン
 




トップ  >  ソフトウェア豆知識  >  QGIS豆知識  >  QGIS API マルチバンドデータの取り扱い

QGIS API マルチバンドデータの取り扱い

3つ以上のチャンネルを持つラスタデータを表示する場合は、 3つのチャンネルを選んでRGBに割り振って表示したいところです。

QGIS本体では、読み込んだ後でProperty画面で選択することができます

ラスタデータのプロパティ画面
ラスタデータのプロパティ画面

APIではどうなっているでしょうか。 ここではENVI Rasterデータの例を使いました。

  def addRasterLayer(self):
    file = QFileDialog.getOpenFileName(self, "Open ENVI Raster file", ".", "ENVI Raster(*.dat)")
    fileInfo = QFileInfo(file)

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

    if not layer.isValid():
      return

    # マルチバンド描画モードにセット
    layer.setDrawingStyle(QgsRasterLayer.MultiBandColor)
    
    # コントラストを自動的に最大値、最小値に設定
    layer.setContrastEnhancementAlgorithm(QgsContrastEnhancement.StretchToMinimumMaximum, False)
    
    # RGBに選択したチャンネルを割り当てる
    # 割り当てはバンド名を使うので、このようにする
    # バンド番号は1スタート
    layer.setRedBandName(layer.bandName(21))
    layer.setGreenBandName(layer.bandName(13))
    layer.setBlueBandName(layer.bandName(7))

    # あとは一緒
    QgsMapLayerRegistry.instance().addMapLayer(layer);

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

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

ピクセル深度が8bit以上でもQgsContrastEnhancement.StretchToMinimumMaximum を指定することで、ちゃんと表示してくれます。


クリエイティブ・コモンズ・ライセンス
This documents by Yamate,N is licensed under a Creative Commons 表示 - 継承 3.0 非移植 License.
login