Hi All,

Is it possible to write a layer w/ a custom CRS to a spatialite database with 
pyQgis?  Here’s what I’ve tried:

1) create an empty spatialite database

2) add custom QGIS crs to spatial_ref_sys table in spatialite database using 
the following sql command:

sql = """INSERT INTO spatial_ref_sys(srid, auth_name, auth_srid, ref_sys_name, 
proj4text, srtext) VALUES({0}, '', '', '{3}', '{1}', 
'{2}')""".format(layer.crs().authid()[5:], layer.crs().toProj4(), 
layer.crs().toWkt(), layer.crs().description())

3) write layer to database using the following:
def loadVectorsIntoDB(layers, dbase):
#database import options
options = {}
options['overwrite'] = True
options['forceSinglePartGeometryType'] = True
uri = QgsDataSourceURI()
uri.setDatabase(dbase)
for layer in layers:
uri.setDataSource('',layer.name(),'the_geom')
ret, errMsg = QgsVectorLayerImport.importLayer(layer, uri.uri(), 'spatialite', 
layer.crs(), False, False, options)
del uri

The layer will be written to the database, but it is imported with an srid of 0 
which is an Undefined - Geographic Long/Lat coordinate system, not the custom 
CRS.

I have also tried to write a layer using DB manager instead of step 3 and got 
the same result.  Is it possible to add the CRS to the spatial_ref_sys table in 
such a way it will match the  layer.crs() argument in the 
QgsVectorLayerImport.importLayer() function?

Any hints would be great!

Thanks,

Mitch

Mitchell Weier, P.E.
Water Resource Engineer
North Dakota State Water Commission
900 E Boulevard Avenue, Dept.770
Bismarck, ND 58505-0850
(701) 328 1402 phone
(701) 328 3696 fax
[email protected]<mailto:[email protected]>

_______________________________________________
Qgis-developer mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/qgis-developer

Reply via email to