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




トップ  >  ソフトウェア豆知識  >  QGIS豆知識  >  QGIS API ベクタデータの読み込み・表示

QGIS API ベクタデータの読み込み・表示

ベクタデータの読み込み・表示はマニュアルにあるコードのとおりです。 ラスタデータやPostGISデータの読み込みも基本的には同じですが、 それぞれちょっとずつ違いがあります。

以下は典型的な読み込み方法の抜粋です。 ここではレイヤーセットをメンバ変数としています。


class MainWindow(QMainWindow, Ui_MainWindow):

	layers = []
	
	def __init__(self):
		
		QMainWindow.__init__(self)
		
		self.setupUi(self)
		
		self.setWindowTitle("QGIS Application test")
		
		# QgsMapCanvasの作成
		self.canvas = QgsMapCanvas()
		
		# QgsMapCanvasの設定
		self.canvas.setCanvasColor(QColor(200,200,255))
		self.canvas.enableAntiAliasing(True)
		
		# 下の関数は1.0からは無い
		# self.canvas.useQImageToRender(False)
		self.canvas.show()

	def addVectorLayer(self):
		file = QFileDialog.getOpenFileName
			(self, "Open Shapefile", ".", "Shapefiles(*.shp)")
		fileInfo = QFileInfo(file)

		# ベクタレイヤーの作成
		layer = QgsVectorLayer(file, fileInfo.fileName(), "ogr")
		
		if not layer.isValid():
			return
		
		# ベクタレイヤーの表示設定
		symbols = layer.renderer().symbols()
		symbol = symbols[0]
		symbol.setFillColor(QColor.fromRgb(192,192,192))
		
		# レジストリへレイヤを登録
		QgsMapLayerRegistry.instance().addMapLayer(layer);
		
		# レイヤ全体を表示
		self.canvas.setExtent(layer.extent())
		
		# QgsMapCanvasにレイヤセットを登録
		cl = QgsMapCanvasLayer(layer)
		self.layers.append(cl)
		self.canvas.setLayerSet(self.layers)

データの読み込みは大体上記のような手順になります。 まず、ファイル名からレイヤーを作成し、作成されたレイヤーを QgsMapLayerRegistryに登録、 QgsMapCanvasLayerクラスにレイヤーをセットした後、 QgsMapCanvasLayerのセットに追加して、そのレイヤーセットを QgsMapCanvasにセットという手順です。

表示順はQgsMapCanvasLayerセットの最初の要素が最前面に表示されるので、 セットの末尾に追加すると背面に追加されることになります。 セットの順番を入れ替えてQgsMapCanvas.setLayerSet()関数で再設定すれば 簡単に表示順を切り替えることができます。

QgsVectorLayer()関数の3番目の引数は"ogr"か"postgres"のどちらかを指定します。 普通のファイルならば"ogr"を指定すると、OGRがサポートするファイルであれば判別して読み込んでくれます。


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