Skip to content

Commit 15c2c9b

Browse files
committedMay 14, 2018
[processing][gdal] Fix conversion of non-EPSG crs parameters
to GDAL compatible strings (cherry-picked from 0d52045)
1 parent cd6a14b commit 15c2c9b

File tree

10 files changed

+321
-34
lines changed

10 files changed

+321
-34
lines changed
 

‎python/plugins/processing/algs/gdal/AssignProjection.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,11 +80,11 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
8080
inLayer = self.parameterAsRasterLayer(parameters, self.INPUT, context)
8181
fileName = inLayer.source()
8282

83-
crs = self.parameterAsCrs(parameters, self.CRS, context).authid()
83+
crs = self.parameterAsCrs(parameters, self.CRS, context)
8484

8585
arguments = []
8686
arguments.append('-a_srs')
87-
arguments.append(crs)
87+
arguments.append(GdalUtils.gdal_crs_string(crs))
8888

8989
arguments.append(fileName)
9090

‎python/plugins/processing/algs/gdal/GdalUtils.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737

3838
from qgis.core import (Qgis,
3939
QgsApplication,
40+
QgsCoordinateReferenceSystem,
4041
QgsVectorFileWriter,
4142
QgsProcessingFeedback,
4243
QgsProcessingUtils,
@@ -411,3 +412,17 @@ def writeLayerParameterToTextFile(filename, alg, parameters, parameter_name, con
411412
layers.append(l.source())
412413
f.write('\n'.join(layers))
413414
return listFile
415+
416+
@staticmethod
417+
def gdal_crs_string(crs: QgsCoordinateReferenceSystem) -> str:
418+
"""
419+
Converts a QgsCoordinateReferenceSystem to a string understandable
420+
by GDAL
421+
:param crs: crs to convert
422+
:return: gdal friendly string
423+
"""
424+
if crs.authid().upper().startswith('EPSG:'):
425+
return crs.authid()
426+
427+
# fallback to proj4 string
428+
return crs.toProj4()

‎python/plugins/processing/algs/gdal/OgrToPostGis.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ def getConnectionString(self, parameters, context):
190190
def getConsoleCommands(self, parameters, context, feedback, executing=True):
191191
ogrLayer, layername = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback, executing)
192192
shapeEncoding = self.parameterAsString(parameters, self.SHAPE_ENCODING, context)
193-
ssrs = self.parameterAsCrs(parameters, self.S_SRS, context).authid()
194-
tsrs = self.parameterAsCrs(parameters, self.T_SRS, context).authid()
195-
asrs = self.parameterAsCrs(parameters, self.A_SRS, context).authid()
193+
ssrs = self.parameterAsCrs(parameters, self.S_SRS, context)
194+
tsrs = self.parameterAsCrs(parameters, self.T_SRS, context)
195+
asrs = self.parameterAsCrs(parameters, self.A_SRS, context)
196196
table = self.parameterAsString(parameters, self.TABLE, context)
197197
schema = self.parameterAsString(parameters, self.SCHEMA, context)
198198
pk = self.parameterAsString(parameters, self.PK, context)
@@ -261,15 +261,15 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
261261
table = '{}.{}'.format(schema, table)
262262
arguments.append('-nln')
263263
arguments.append(table)
264-
if len(ssrs) > 0:
264+
if ssrs.isValid():
265265
arguments.append('-s_srs')
266-
arguments.append(ssrs)
267-
if len(tsrs) > 0:
266+
arguments.append(GdalUtils.gdal_crs_string(ssrs))
267+
if tsrs.isValid():
268268
arguments.append('-t_srs')
269-
arguments.append(tsrs)
270-
if len(asrs) > 0:
269+
arguments.append(GdalUtils.gdal_crs_string(tsrs))
270+
if asrs.isValid():
271271
arguments.append('-a_srs')
272-
arguments.append(asrs)
272+
arguments.append(GdalUtils.gdal_crs_string(asrs))
273273
if not spat.isNull():
274274
arguments.append('-spat')
275275
arguments.append(spat.xMinimum())

‎python/plugins/processing/algs/gdal/gdal2tiles.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -187,7 +187,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
187187
crs = self.parameterAsCrs(parameters, self.SOURCE_CRS, context)
188188
if crs.isValid():
189189
arguments.append('-s')
190-
arguments.append(crs.authid())
190+
arguments.append(GdalUtils.gdal_crs_string(crs))
191191

192192
if self.NODATA in parameters and parameters[self.NODATA] is not None:
193193
nodata = self.parameterAsDouble(parameters, self.NODATA, context)

‎python/plugins/processing/algs/gdal/gdaltindex.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,8 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
153153
arguments.append('-src_srs_format {}'.format(self.modes[crs_format][1]))
154154

155155
if target_crs.isValid():
156-
arguments.append('-t_srs {}'.format(target_crs.authid()))
156+
arguments.append('-t_srs')
157+
arguments.append(GdalUtils.gdal_crs_string(target_crs))
157158

158159
if outFormat:
159160
arguments.append('-f {}'.format(outFormat))

‎python/plugins/processing/algs/gdal/ogr2ogrtopostgislist.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,9 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
188188

189189
ogrLayer, layername = self.getOgrCompatibleSource(self.INPUT, parameters, context, feedback, executing)
190190
shapeEncoding = self.parameterAsString(parameters, self.SHAPE_ENCODING, context)
191-
ssrs = self.parameterAsCrs(parameters, self.S_SRS, context).authid()
192-
tsrs = self.parameterAsCrs(parameters, self.T_SRS, context).authid()
193-
asrs = self.parameterAsCrs(parameters, self.A_SRS, context).authid()
191+
ssrs = self.parameterAsCrs(parameters, self.S_SRS, context)
192+
tsrs = self.parameterAsCrs(parameters, self.T_SRS, context)
193+
asrs = self.parameterAsCrs(parameters, self.A_SRS, context)
194194
table = self.parameterAsString(parameters, self.TABLE, context)
195195
schema = self.parameterAsString(parameters, self.SCHEMA, context)
196196
pk = self.parameterAsString(parameters, self.PK, context)
@@ -261,15 +261,15 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
261261
table = '{}.{}'.format(schema, table)
262262
arguments.append('-nln')
263263
arguments.append(table)
264-
if len(ssrs) > 0:
264+
if ssrs.isValid():
265265
arguments.append('-s_srs')
266-
arguments.append(ssrs)
267-
if len(tsrs) > 0:
266+
arguments.append(GdalUtils.gdal_crs_string(ssrs))
267+
if tsrs.isValid():
268268
arguments.append('-t_srs')
269-
arguments.append(tsrs)
270-
if len(asrs) > 0:
269+
arguments.append(GdalUtils.gdal_crs_string(tsrs))
270+
if asrs.isValid():
271271
arguments.append('-a_srs')
272-
arguments.append(asrs)
272+
arguments.append(GdalUtils.gdal_crs_string(asrs))
273273
if not spat.isNull():
274274
arguments.append('-spat')
275275
arguments.append(spat.xMinimum())

‎python/plugins/processing/algs/gdal/retile.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
177177
crs = self.parameterAsCrs(parameters, self.SOURCE_CRS, context)
178178
if crs.isValid():
179179
arguments.append('-s_srs')
180-
arguments.append(crs.authid())
180+
arguments.append(GdalUtils.gdal_crs_string(crs))
181181

182182
arguments.append('-r')
183183
arguments.append(self.methods[self.parameterAsEnum(parameters, self.RESAMPLING, context)][1])

‎python/plugins/processing/algs/gdal/translate.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
126126
crs = self.parameterAsCrs(parameters, self.TARGET_CRS, context)
127127
if crs.isValid():
128128
arguments.append('-a_srs')
129-
arguments.append(crs.authid())
129+
arguments.append(GdalUtils.gdal_crs_string(crs))
130130

131131
if nodata is not None:
132132
arguments.append('-a_nodata')

‎python/plugins/processing/algs/gdal/warp.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -175,11 +175,11 @@ def getConsoleCommands(self, parameters, context, feedback, executing=True):
175175
arguments = []
176176
if sourceCrs.isValid():
177177
arguments.append('-s_srs')
178-
arguments.append(sourceCrs.authid())
178+
arguments.append(GdalUtils.gdal_crs_string(sourceCrs))
179179

180180
if targetCrs.isValid():
181181
arguments.append('-t_srs')
182-
arguments.append(targetCrs.authid())
182+
arguments.append(GdalUtils.gdal_crs_string(targetCrs))
183183

184184
if nodata is not None:
185185
arguments.append('-dstnodata')

0 commit comments

Comments
 (0)
Please sign in to comment.