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
を指定することで、ちゃんと表示してくれます。