[QGIS-Developer] Creating a spatial index on a table created with QgsVectorLayerExporter Python function

Bo Victor Thomsen bo.victor.thomsen at gmail.com
Sun Mar 14 01:38:44 PST 2021


Hi list -

I have a problem with the "QgsVectorLayerExporter" function in Python.

When I create a table like this (All parameter is of course set 
correctly and "options" is an empty dictionary {}):

vle = QgsVectorLayerExporter(uri.uri(), 'postgres' , myFields, myGeom, 
QgsCoordinateReferenceSystem("EPSG:4326"),False,options)

I get a nice table in my Postgres database with the correct fields, 
primary key and geometry field with the correct type. However I'm 
missing a spatial index on my geometry field.

I've tried with setting the "options" dictionary like this:

# Experiment for getting spatial index. Tried with 1, True ...
options = {}
options['spatial_index'] = 'on'

But that doesn't work either. As far as I can decipher the c++ code 
behind "QgsVectorLayerExporter", all tables created with the function 
*should* be created with a spatial index - except for dataprovider types 
ogr/GPKG  and ogr/Spatialite

So my question is: How can I get a spatial index on my new created table 
(or during creation) *without* having some database-type specific code 
directly creating the index using SQL ?

-- 
Med venlig hilsen / Kind regards

Bo Victor Thomsen



More information about the QGIS-Developer mailing list