[Qgis-user] PyQGIS to add PostGIS raster layer?

Yann Voté ygversil at lilo.org
Thu Apr 30 00:45:53 PDT 2020


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 at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-user
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-user
> 


More information about the Qgis-user mailing list