|
32 | 32 |
|
33 | 33 | from qgis.core import (QgsCoordinateTransform,
|
34 | 34 | QgsField,
|
| 35 | + QgsFields, |
35 | 36 | QgsWkbTypes,
|
36 | 37 | QgsFeatureSink,
|
37 | 38 | QgsDistanceArea,
|
| 39 | + QgsProcessingUtils, |
38 | 40 | QgsProcessingParameterFeatureSource,
|
39 | 41 | QgsProcessingParameterEnum,
|
40 | 42 | QgsProcessingParameterFeatureSink)
|
@@ -89,28 +91,23 @@ def processAlgorithm(self, parameters, context, feedback):
|
89 | 91 | wkb_type = source.wkbType()
|
90 | 92 | fields = source.fields()
|
91 | 93 |
|
| 94 | + new_fields = QgsFields() |
92 | 95 | if QgsWkbTypes.geometryType(wkb_type) == QgsWkbTypes.PolygonGeometry:
|
93 |
| - areaName = vector.createUniqueFieldName('area', fields) |
94 |
| - fields.append(QgsField(areaName, QVariant.Double)) |
95 |
| - perimeterName = vector.createUniqueFieldName('perimeter', fields) |
96 |
| - fields.append(QgsField(perimeterName, QVariant.Double)) |
| 96 | + new_fields.append(QgsField('area', QVariant.Double)) |
| 97 | + new_fields.append(QgsField('perimeter', QVariant.Double)) |
97 | 98 | elif QgsWkbTypes.geometryType(wkb_type) == QgsWkbTypes.LineGeometry:
|
98 |
| - lengthName = vector.createUniqueFieldName('length', fields) |
99 |
| - fields.append(QgsField(lengthName, QVariant.Double)) |
| 99 | + new_fields.append(QgsField('length', QVariant.Double)) |
100 | 100 | else:
|
101 |
| - xName = vector.createUniqueFieldName('xcoord', fields) |
102 |
| - fields.append(QgsField(xName, QVariant.Double)) |
103 |
| - yName = vector.createUniqueFieldName('ycoord', fields) |
104 |
| - fields.append(QgsField(yName, QVariant.Double)) |
| 101 | + new_fields.append(QgsField('xcoord', QVariant.Double)) |
| 102 | + new_fields.append(QgsField('ycoord', QVariant.Double)) |
105 | 103 | if QgsWkbTypes.hasZ(source.wkbType()):
|
106 | 104 | self.export_z = True
|
107 |
| - zName = vector.createUniqueFieldName('zcoord', fields) |
108 |
| - fields.append(QgsField(zName, QVariant.Double)) |
| 105 | + new_fields.append(QgsField('zcoord', QVariant.Double)) |
109 | 106 | if QgsWkbTypes.hasM(source.wkbType()):
|
110 | 107 | self.export_m = True
|
111 |
| - zName = vector.createUniqueFieldName('mvalue', fields) |
112 |
| - fields.append(QgsField(zName, QVariant.Double)) |
| 108 | + new_fields.append(QgsField('mvalue', QVariant.Double)) |
113 | 109 |
|
| 110 | + fields = QgsProcessingUtils.combineFields(fields, new_fields) |
114 | 111 | (sink, dest_id) = self.parameterAsSink(parameters, self.OUTPUT, context,
|
115 | 112 | fields, wkb_type, source.sourceCrs())
|
116 | 113 |
|
|
0 commit comments