[processing] add ability to choose encoding when importing into PostGIS (fix #14687)

This commit is contained in:
Alexander Bruy 2016-05-24 19:32:58 +03:00
parent 9928980851
commit 8ad1e3c8bc

View File

@ -51,6 +51,7 @@ class ImportIntoPostGIS(GeoAlgorithm):
LOWERCASE_NAMES = 'LOWERCASE_NAMES' LOWERCASE_NAMES = 'LOWERCASE_NAMES'
DROP_STRING_LENGTH = 'DROP_STRING_LENGTH' DROP_STRING_LENGTH = 'DROP_STRING_LENGTH'
PRIMARY_KEY = 'PRIMARY_KEY' PRIMARY_KEY = 'PRIMARY_KEY'
ENCODING = 'ENCODING'
def defineCharacteristics(self): def defineCharacteristics(self):
self.name, self.i18n_name = self.trAlgorithm('Import into PostGIS') self.name, self.i18n_name = self.trAlgorithm('Import into PostGIS')
@ -69,6 +70,9 @@ class ImportIntoPostGIS(GeoAlgorithm):
self.tr('Primary key field'), self.INPUT, optional=True)) self.tr('Primary key field'), self.INPUT, optional=True))
self.addParameter(ParameterString(self.GEOMETRY_COLUMN, self.addParameter(ParameterString(self.GEOMETRY_COLUMN,
self.tr('Geometry column'), 'geom')) self.tr('Geometry column'), 'geom'))
self.addParameter(ParameterString(self.ENCODING,
self.tr('Encoding'), 'UTF-8',
optional=True))
self.addParameter(ParameterBoolean(self.OVERWRITE, self.addParameter(ParameterBoolean(self.OVERWRITE,
self.tr('Overwrite'), True)) self.tr('Overwrite'), True))
self.addParameter(ParameterBoolean(self.CREATEINDEX, self.addParameter(ParameterBoolean(self.CREATEINDEX,
@ -86,6 +90,7 @@ class ImportIntoPostGIS(GeoAlgorithm):
convertLowerCase = self.getParameterValue(self.LOWERCASE_NAMES) convertLowerCase = self.getParameterValue(self.LOWERCASE_NAMES)
dropStringLength = self.getParameterValue(self.DROP_STRING_LENGTH) dropStringLength = self.getParameterValue(self.DROP_STRING_LENGTH)
primaryKeyField = self.getParameterValue(self.PRIMARY_KEY) primaryKeyField = self.getParameterValue(self.PRIMARY_KEY)
encoding = self..getParameterValue(self.ENCODING)
settings = QSettings() settings = QSettings()
mySettings = '/PostgreSQL/connections/' + connection mySettings = '/PostgreSQL/connections/' + connection
try: try:
@ -138,6 +143,9 @@ class ImportIntoPostGIS(GeoAlgorithm):
else: else:
uri.setDataSource(schema, table, geomColumn, '') uri.setDataSource(schema, table, geomColumn, '')
if encoding:
layer.setProviderEncoding(encoding)
(ret, errMsg) = QgsVectorLayerImport.importLayer( (ret, errMsg) = QgsVectorLayerImport.importLayer(
layer, layer,
uri.uri(), uri.uri(),