mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-25 00:58:06 -05:00
[processing] fixed 'add geometric properties' algorithm when output fields already exist in layer
fixes #13010
This commit is contained in:
parent
768485d511
commit
8a541823e5
@ -25,7 +25,8 @@ __copyright__ = '(C) 2012, Victor Olaya'
|
||||
|
||||
__revision__ = '$Format:%H$'
|
||||
|
||||
from qgis.core import QGis, QgsProject, QgsCoordinateTransform, QgsFeature, QgsGeometry
|
||||
from qgis.core import QGis, QgsProject, QgsCoordinateTransform, QgsFeature, QgsGeometry, QgsField
|
||||
from PyQt4.QtCore import QVariant
|
||||
from qgis.utils import iface
|
||||
from processing.core.GeoAlgorithm import GeoAlgorithm
|
||||
from processing.core.parameters import ParameterVector
|
||||
@ -59,29 +60,24 @@ class ExportGeometryInfo(GeoAlgorithm):
|
||||
method = self.getParameterValue(self.METHOD)
|
||||
|
||||
geometryType = layer.geometryType()
|
||||
|
||||
idx1 = -1
|
||||
idx2 = -1
|
||||
fields = layer.pendingFields()
|
||||
|
||||
if geometryType == QGis.Polygon:
|
||||
(idx1, fields) = vector.findOrCreateField(layer, fields, 'area',
|
||||
21, 6)
|
||||
(idx2, fields) = vector.findOrCreateField(layer, fields,
|
||||
'perimeter', 21, 6)
|
||||
areaName = vector.createUniqueFieldName('area', fields)
|
||||
fields.append(QgsField(areaName, QVariant.Double))
|
||||
perimeterName = vector.createUniqueFieldName('perimeter', fields)
|
||||
fields.append(QgsField(perimeterName, QVariant.Double))
|
||||
elif geometryType == QGis.Line:
|
||||
(idx1, fields) = vector.findOrCreateField(layer, fields, 'length',
|
||||
21, 6)
|
||||
idx2 = idx1
|
||||
lengthName = vector.createUniqueFieldName('length', fields)
|
||||
fields.append(QgsField(lengthName, QVariant.Double))
|
||||
else:
|
||||
(idx1, fields) = vector.findOrCreateField(layer, fields, 'xcoord',
|
||||
21, 6)
|
||||
(idx2, fields) = vector.findOrCreateField(layer, fields, 'ycoord',
|
||||
21, 6)
|
||||
xName = vector.createUniqueFieldName('xcoord', fields)
|
||||
fields.append(QgsField(xName, QVariant.Double))
|
||||
yName = vector.createUniqueFieldName('ycoord', fields)
|
||||
fields.append(QgsField(yName, QVariant.Double))
|
||||
|
||||
writer = self.getOutputFromName(
|
||||
self.OUTPUT).getVectorWriter(fields.toList(),
|
||||
layer.dataProvider().geometryType(), layer.crs())
|
||||
writer = self.getOutputFromName(self.OUTPUT).getVectorWriter(
|
||||
fields.toList(), layer.dataProvider().geometryType(), layer.crs())
|
||||
|
||||
ellips = None
|
||||
crs = None
|
||||
@ -120,9 +116,9 @@ class ExportGeometryInfo(GeoAlgorithm):
|
||||
|
||||
outFeat.setGeometry(inGeom)
|
||||
attrs = f.attributes()
|
||||
attrs.insert(idx1, attr1)
|
||||
attrs.append(attr1)
|
||||
if attr2 is not None:
|
||||
attrs.insert(idx2, attr2)
|
||||
attrs.append(attr2)
|
||||
outFeat.setAttributes(attrs)
|
||||
writer.addFeature(outFeat)
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user