From 5d37cc3549ede59772f90383095f7e2e9e8ab484 Mon Sep 17 00:00:00 2001 From: "arnaud.morvan@camptocamp.com" Date: Sat, 28 May 2016 16:11:02 +0200 Subject: [PATCH] Add SHAPE_ENCODING parameter in GDAL "to postgis" algorithms --- .../processing/algs/gdal/ogr2ogrtabletopostgislist.py | 8 ++++++++ python/plugins/processing/algs/gdal/ogr2ogrtopostgis.py | 8 ++++++++ .../plugins/processing/algs/gdal/ogr2ogrtopostgislist.py | 8 ++++++++ 3 files changed, 24 insertions(+) diff --git a/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py b/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py index a1409b17cc9..cc023dbfab4 100644 --- a/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py +++ b/python/plugins/processing/algs/gdal/ogr2ogrtabletopostgislist.py @@ -44,6 +44,7 @@ class Ogr2OgrTableToPostGisList(GdalAlgorithm): DATABASE = 'DATABASE' INPUT_LAYER = 'INPUT_LAYER' + SHAPE_ENCODING = 'SHAPE_ENCODING' HOST = 'HOST' PORT = 'PORT' USER = 'USER' @@ -76,6 +77,8 @@ class Ogr2OgrTableToPostGisList(GdalAlgorithm): self.tr('Database (connection name)'), self.DB_CONNECTIONS)) self.addParameter(ParameterTable(self.INPUT_LAYER, self.tr('Input layer'))) + self.addParameter(ParameterString(self.SHAPE_ENCODING, + self.tr('Shape encoding'), "", optional=True)) self.addParameter(ParameterString(self.SCHEMA, self.tr('Schema name'), 'public', optional=True)) self.addParameter(ParameterString(self.TABLE, @@ -120,6 +123,7 @@ class Ogr2OgrTableToPostGisList(GdalAlgorithm): password = settings.value(mySettings + '/password') inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = ogrConnectionString(inLayer)[1:-1] + shapeEncoding = self.getParameterValue(self.SHAPE_ENCODING) schema = unicode(self.getParameterValue(self.SCHEMA)) table = unicode(self.getParameterValue(self.TABLE)) pk = unicode(self.getParameterValue(self.PK)) @@ -140,6 +144,10 @@ class Ogr2OgrTableToPostGisList(GdalAlgorithm): arguments = [] arguments.append('-progress') arguments.append('--config PG_USE_COPY YES') + if len(shapeEncoding) > 0: + arguments.append('--config') + arguments.append('SHAPE_ENCODING') + arguments.append('"' + shapeEncoding + '"') arguments.append('-f') arguments.append('PostgreSQL') arguments.append('PG:"host=') diff --git a/python/plugins/processing/algs/gdal/ogr2ogrtopostgis.py b/python/plugins/processing/algs/gdal/ogr2ogrtopostgis.py index a565975ff98..0a1b871b63d 100644 --- a/python/plugins/processing/algs/gdal/ogr2ogrtopostgis.py +++ b/python/plugins/processing/algs/gdal/ogr2ogrtopostgis.py @@ -43,6 +43,7 @@ from processing.tools.vector import ogrConnectionString, ogrLayerName class Ogr2OgrToPostGis(GdalAlgorithm): INPUT_LAYER = 'INPUT_LAYER' + SHAPE_ENCODING = 'SHAPE_ENCODING' GTYPE = 'GTYPE' GEOMTYPE = ['', 'NONE', 'GEOMETRY', 'POINT', 'LINESTRING', 'POLYGON', 'GEOMETRYCOLLECTION', 'MULTIPOINT', 'MULTIPOLYGON', 'MULTILINESTRING'] S_SRS = 'S_SRS' @@ -81,6 +82,8 @@ class Ogr2OgrToPostGis(GdalAlgorithm): self.group, self.i18n_group = self.trAlgorithm('[OGR] Miscellaneous') self.addParameter(ParameterVector(self.INPUT_LAYER, self.tr('Input layer'), [ParameterVector.VECTOR_TYPE_ANY], False)) + self.addParameter(ParameterString(self.SHAPE_ENCODING, + self.tr('Shape encoding'), "", optional=True)) self.addParameter(ParameterSelection(self.GTYPE, self.tr('Output geometry type'), self.GEOMTYPE, 0)) self.addParameter(ParameterCrs(self.A_SRS, @@ -153,6 +156,7 @@ class Ogr2OgrToPostGis(GdalAlgorithm): def getConsoleCommands(self): inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = ogrConnectionString(inLayer)[1:-1] + shapeEncoding = self.getParameterValue(self.SHAPE_ENCODING) ssrs = unicode(self.getParameterValue(self.S_SRS)) tsrs = unicode(self.getParameterValue(self.T_SRS)) asrs = unicode(self.getParameterValue(self.A_SRS)) @@ -192,6 +196,10 @@ class Ogr2OgrToPostGis(GdalAlgorithm): arguments = [] arguments.append('-progress') arguments.append('--config PG_USE_COPY YES') + if len(shapeEncoding) > 0: + arguments.append('--config') + arguments.append('SHAPE_ENCODING') + arguments.append('"' + shapeEncoding + '"') arguments.append('-f') arguments.append('PostgreSQL') arguments.append('PG:"host=' + host) diff --git a/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py b/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py index 7364573d860..0f582ebffe6 100644 --- a/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py +++ b/python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py @@ -47,6 +47,7 @@ class Ogr2OgrToPostGisList(GdalAlgorithm): DATABASE = 'DATABASE' INPUT_LAYER = 'INPUT_LAYER' + SHAPE_ENCODING = 'SHAPE_ENCODING' GTYPE = 'GTYPE' GEOMTYPE = ['', 'NONE', 'GEOMETRY', 'POINT', 'LINESTRING', 'POLYGON', 'GEOMETRYCOLLECTION', 'MULTIPOINT', 'MULTIPOLYGON', 'MULTILINESTRING'] S_SRS = 'S_SRS' @@ -93,6 +94,8 @@ class Ogr2OgrToPostGisList(GdalAlgorithm): self.tr('Database (connection name)'), self.DB_CONNECTIONS)) self.addParameter(ParameterVector(self.INPUT_LAYER, self.tr('Input layer'), [ParameterVector.VECTOR_TYPE_ANY], False)) + self.addParameter(ParameterString(self.SHAPE_ENCODING, + self.tr('Shape encoding'), "", optional=True)) self.addParameter(ParameterSelection(self.GTYPE, self.tr('Output geometry type'), self.GEOMTYPE, 0)) self.addParameter(ParameterCrs(self.A_SRS, @@ -164,6 +167,7 @@ class Ogr2OgrToPostGisList(GdalAlgorithm): password = settings.value(mySettings + '/password') inLayer = self.getParameterValue(self.INPUT_LAYER) ogrLayer = ogrConnectionString(inLayer)[1:-1] + shapeEncoding = self.getParameterValue(self.SHAPE_ENCODING) ssrs = unicode(self.getParameterValue(self.S_SRS)) tsrs = unicode(self.getParameterValue(self.T_SRS)) asrs = unicode(self.getParameterValue(self.A_SRS)) @@ -198,6 +202,10 @@ class Ogr2OgrToPostGisList(GdalAlgorithm): arguments = [] arguments.append('-progress') arguments.append('--config PG_USE_COPY YES') + if len(shapeEncoding) > 0: + arguments.append('--config') + arguments.append('SHAPE_ENCODING') + arguments.append('"' + shapeEncoding + '"') arguments.append('-f') arguments.append('PostgreSQL') arguments.append('PG:"host=' + host)