Hi,

Something like this should do.

pg_layer = QgsVectorLayer(
    "host=db.priv.example.org port=5432 authcfg=expauth srid=4326 "
    "dbname=exampledb table='schema'.'table_name' (geometry) "
    "type=MULTIPOLYGON sql=",
    baseName='table_name',
    providerLib='postgres',
)
QgsProject.instance().addMapLayer(pg_layer)

Of course, adapt with your values. In particular, authcfg is the 7-chars identifier of the auth configuration that contains your login and password (or cert) to authenticate to PostgreSQL.

See https://qgis.org/pyqgis/master/core/QgsVectorLayer.html

See also https://qgis.org/pyqgis/master/core/QgsDataSourceUri.html#qgis.core.QgsDataSourceUri for more options to build database connection strings.

Regards.

Yann


Le 30/04/2020 à 00:24, thayeray a écrit :
Is it possible to add a PostGIS raster layer to a project using PyQGIS?
The PyQGIS Developer Cookbook mentions adding rasters from files,
geopackages and WCS services.
If I try using a QgsDataSourceUri by feeding it a raster column instead of a
geometry column, the PostGIS error that is generated shows that is not going
to work because raster is not a geometry:
WARNING Erroneous query: SELECT 0, array_agg(DISTINCT
st_srid("rast")::text || ':' || UPPER(geometrytype("rast"))) FROM
"public"."indicators__g_economic_rebal_r_62ft" returned 7 [ERROR: function
geometrytype(raster) does not exist

Any ideas of what I can do? Do I just have to give up on PostGIS rasters and
just turn it into WCS on the server?




--
Sent from: http://osgeo-org.1560.x6.nabble.com/QGIS-User-f4125267.html
_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

_______________________________________________
Qgis-user mailing list
Qgis-user@lists.osgeo.org
List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user

Reply via email to