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

PostGISデータベースからデータを読み込み場合も、
ベクタデータファイルと同じようにQgsVectorLayerクラスを使いますが、
当然いくつか違いがあります。

下記のコードサンプルで、太字の部分がベクタファイルと異なる部分です。

def addPostGISLayer(self):
	uri = QgsDataSourceURI()
	uri.setConnection("ホスト名", "ポート番号",
		 "データベース名", "ユーザ名", "パスワード")
	uri.setDataSource("スキーマ名", "テーブル名", "the_geom", "")
	layer = QgsVectorLayer(uri.uri(), "points", "postgres")

	if not layer.isValid():
		return

	QgsMapLayerRegistry.instance().addMapLayer(layer);

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

シンボルの設定なんかはベクタファイルと同じようにできます。

上記のコードは図形データを表示する部分だけです。
当然属性の取得も必要になるかと思われます。
この部分については別のページで紹介します。

アーカイブ