<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Hi All,
<div class=""><br class="">
</div>
<div class="">Is it possible to write a layer w/ a custom CRS to a spatialite database with pyQgis?  Here’s what I’ve tried:</div>
<div class=""><br class="">
</div>
<div class="">1) create an empty spatialite database</div>
<div class=""><br class="">
</div>
<div class="">2) add custom QGIS crs to spatial_ref_sys table in spatialite database using the following sql command:</div>
<div class=""><br class="">
</div>
<div class="">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())</div>
<div class=""><br class="">
</div>
<div class="">3) write layer to database using the following:</div>
<div class="">
<div style="margin: 0px;" class=""><!--StartFragment-->def loadVectorsIntoDB(layers, dbase):</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>#database import options</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>options = {}</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>options['overwrite'] = True</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>options['forceSinglePartGeometryType'] = True</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>uri = QgsDataSourceURI()</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>uri.setDatabase(dbase)</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>for layer in layers:</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>uri.setDataSource('',layer.name(),'the_geom')</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>ret, errMsg = QgsVectorLayerImport.importLayer(layer, uri.uri(), 'spatialite', layer.crs(), False, False, options)</div>
<div style="margin: 0px;" class=""><span class="Apple-tab-span" style="white-space:pre"></span>del uri<!--EndFragment--></div>
</div>
<div style="margin: 0px;" class=""><br class="">
</div>
<div style="margin: 0px;" class="">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.</div>
<div style="margin: 0px;" class=""><br class="">
</div>
<div style="margin: 0px;" class="">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?</div>
<div style="margin: 0px;" class=""><br class="">
</div>
<div style="margin: 0px;" class="">Any hints would be great!</div>
<div class="">
<div class=""><br class="">
</div>
<div class="">Thanks,</div>
<div class=""><br class="">
</div>
<div apple-content-edited="true" class="">
<div style="color: rgb(0, 0, 0); font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " class="">
<div style="color: rgb(0, 0, 0); font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " class="">
Mitch</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " class="">
<br class="">
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica;  font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " class="">
Mitchell Weier, P.E.<br class="">
Water Resource Engineer<br class="">
North Dakota State Water Commission<br class="">
900 E Boulevard Avenue, Dept.770<br class="">
Bismarck, ND 58505-0850<br class="">
(701) 328 1402 phone<br class="">
(701) 328 3696 fax<br class="">
<a href="mailto:mweier@nd.gov" class="">mweier@nd.gov</a></div>
</div>
</div>
<br class="">
</div>
</body>
</html>