QGIS 3.4 - Проблема добавления слоев с помощью QgsProject.instance (). AddMapLayer () - PullRequest
0 голосов
/ 27 января 2020

Я пытаюсь добавить слой из Postgis в проект Qgis. Мой скрипт, кажется, работает, потому что у меня нет ошибок, но слои не добавляются в проект. Каждая таблица, которую я пытаюсь добавить, имеет уникальный ключ.

Вот мой сценарий:

uri = QgsDataSourceUri()
try:
    uri.setConnection("my_host", "my_port", "my_dbase_name", "my_user", "my_password")
except:
    'Unable to connect database !'

uri.setDataSource("my_schema", "my_table", "geom","","my_unique_id")
vlayer = QgsVectorLayer(uri.uri(), "my_layer_name", "my_user_name")
QgsProject.instance().addMapLayer(vlayer)

Я не знаю, откуда возникла проблема? Если кто-то как идея или видит явную ошибку ... меня интересует.

Спасибо

1 Ответ

0 голосов
/ 28 января 2020

Вам нужно проверить, что возвращается при создании слоя, будет None, если произойдет ошибка. Я также думаю, что вам нужно указать драйвер, который вы хотите использовать (postgres), а не ваше имя пользователя.

Я бы использовал такой код:

tablename = "thetable"
geometrycol = "geom"

from qgis.core import QgsVectorLayer, QgsDataSourceUri
uri = QgsDataSourceUri()
uri.setConnection("host", "5432", "db", "user", "pass")
uri.setDataSource ("schema", tablename, geometrycol)
vlayer=QgsVectorLayer (uri.uri(False), tablename, "postgres")
QgsProject.instance().addMapLayer(vlayer)
...