|
25 | 25 |
|
26 | 26 | __revision__ = '$Format:%H$' |
27 | 27 |
|
28 | | -from qgis.core import QGis, QgsProject, QgsCoordinateTransform, QgsFeature, QgsGeometry |
| 28 | +from qgis.core import QGis, QgsProject, QgsCoordinateTransform, QgsFeature, QgsGeometry, QgsField |
| 29 | +from PyQt4.QtCore import QVariant |
29 | 30 | from qgis.utils import iface |
30 | 31 | from processing.core.GeoAlgorithm import GeoAlgorithm |
31 | 32 | from processing.core.parameters import ParameterVector |
@@ -59,29 +60,24 @@ def processAlgorithm(self, progress): |
59 | 60 | method = self.getParameterValue(self.METHOD) |
60 | 61 |
|
61 | 62 | geometryType = layer.geometryType() |
62 | | - |
63 | | - idx1 = -1 |
64 | | - idx2 = -1 |
65 | 63 | fields = layer.pendingFields() |
66 | 64 |
|
67 | 65 | if geometryType == QGis.Polygon: |
68 | | - (idx1, fields) = vector.findOrCreateField(layer, fields, 'area', |
69 | | - 21, 6) |
70 | | - (idx2, fields) = vector.findOrCreateField(layer, fields, |
71 | | - 'perimeter', 21, 6) |
| 66 | + areaName = vector.createUniqueFieldName('area', fields) |
| 67 | + fields.append(QgsField(areaName, QVariant.Double)) |
| 68 | + perimeterName = vector.createUniqueFieldName('perimeter', fields) |
| 69 | + fields.append(QgsField(perimeterName, QVariant.Double)) |
72 | 70 | elif geometryType == QGis.Line: |
73 | | - (idx1, fields) = vector.findOrCreateField(layer, fields, 'length', |
74 | | - 21, 6) |
75 | | - idx2 = idx1 |
| 71 | + lengthName = vector.createUniqueFieldName('length', fields) |
| 72 | + fields.append(QgsField(lengthName, QVariant.Double)) |
76 | 73 | else: |
77 | | - (idx1, fields) = vector.findOrCreateField(layer, fields, 'xcoord', |
78 | | - 21, 6) |
79 | | - (idx2, fields) = vector.findOrCreateField(layer, fields, 'ycoord', |
80 | | - 21, 6) |
| 74 | + xName = vector.createUniqueFieldName('xcoord', fields) |
| 75 | + fields.append(QgsField(xName, QVariant.Double)) |
| 76 | + yName = vector.createUniqueFieldName('ycoord', fields) |
| 77 | + fields.append(QgsField(yName, QVariant.Double)) |
81 | 78 |
|
82 | | - writer = self.getOutputFromName( |
83 | | - self.OUTPUT).getVectorWriter(fields.toList(), |
84 | | - layer.dataProvider().geometryType(), layer.crs()) |
| 79 | + writer = self.getOutputFromName(self.OUTPUT).getVectorWriter( |
| 80 | + fields.toList(), layer.dataProvider().geometryType(), layer.crs()) |
85 | 81 |
|
86 | 82 | ellips = None |
87 | 83 | crs = None |
@@ -120,9 +116,9 @@ def processAlgorithm(self, progress): |
120 | 116 |
|
121 | 117 | outFeat.setGeometry(inGeom) |
122 | 118 | attrs = f.attributes() |
123 | | - attrs.insert(idx1, attr1) |
| 119 | + attrs.append(attr1) |
124 | 120 | if attr2 is not None: |
125 | | - attrs.insert(idx2, attr2) |
| 121 | + attrs.append(attr2) |
126 | 122 | outFeat.setAttributes(attrs) |
127 | 123 | writer.addFeature(outFeat) |
128 | 124 |
|
|
0 commit comments