29
29
30
30
from qgis .PyQt .QtGui import QIcon
31
31
32
- from qgis .core import QGis , QgsFeature , QgsGeometry
32
+ from qgis .core import Qgis , QgsFeature , QgsGeometry , QgsWkbTypes
33
33
34
34
from processing .core .GeoAlgorithm import GeoAlgorithm
35
35
from processing .core .GeoAlgorithmExecutionException import GeoAlgorithmExecutionException
@@ -67,7 +67,7 @@ def processAlgorithm(self, progress):
67
67
geomType = self .singleToMultiGeom (layer .wkbType ())
68
68
69
69
writer = self .getOutputFromName (self .OUTPUT ).getVectorWriter (
70
- layer .pendingFields ().toList (), geomType , layer .crs ())
70
+ layer .fields ().toList (), geomType , layer .crs ())
71
71
72
72
inFeat = QgsFeature ()
73
73
outFeat = QgsFeature ()
@@ -92,7 +92,7 @@ def processAlgorithm(self, progress):
92
92
if first :
93
93
attrs = atMap
94
94
first = False
95
- inGeom = QgsGeometry ( inFeat .geometry () )
95
+ inGeom = inFeat .geometry ()
96
96
vType = inGeom .type ()
97
97
feature_list = self .extractAsMulti (inGeom )
98
98
multi_feature .extend (feature_list )
@@ -108,34 +108,35 @@ def processAlgorithm(self, progress):
108
108
109
109
del writer
110
110
else :
111
- raise GeoAlgorithmExecutionException (self .tr ('Invalid unique ID field' ))
111
+ raise GeoAlgorithmExecutionException (
112
+ self .tr ('At least two features must have same attribute value! Please choose another field...' ))
112
113
113
114
def singleToMultiGeom (self , wkbType ):
114
115
try :
115
- if wkbType in (QGis . WKBPoint , QGis . WKBMultiPoint ,
116
- QGis . WKBPoint25D , QGis . WKBMultiPoint25D ):
117
- return QGis . WKBMultiPoint
118
- elif wkbType in (QGis . WKBLineString , QGis . WKBMultiLineString ,
119
- QGis . WKBMultiLineString25D ,
120
- QGis . WKBLineString25D ):
121
-
122
- return QGis . WKBMultiLineString
123
- elif wkbType in (QGis . WKBPolygon , QGis . WKBMultiPolygon ,
124
- QGis . WKBMultiPolygon25D , QGis . WKBPolygon25D ):
125
-
126
- return QGis . WKBMultiPolygon
116
+ if wkbType in (QgsWkbTypes . Point , QgsWkbTypes . MultiPoint ,
117
+ QgsWkbTypes . Point25D , QgsWkbTypes . MultiPoint25D ):
118
+ return QgsWkbTypes . MultiPoint
119
+ elif wkbType in (QgsWkbTypes . LineString , QgsWkbTypes . MultiLineString ,
120
+ QgsWkbTypes . MultiLineString25D ,
121
+ QgsWkbTypes . LineString25D ):
122
+
123
+ return QgsWkbTypes . MultiLineString
124
+ elif wkbType in (QgsWkbTypes . Polygon , QgsWkbTypes . MultiPolygon ,
125
+ QgsWkbTypes . MultiPolygon25D , QgsWkbTypes . Polygon25D ):
126
+
127
+ return QgsWkbTypes . MultiPolygon
127
128
else :
128
- return QGis . WKBUnknown
129
+ return QgsWkbTypes . Unknown
129
130
except Exception :
130
131
pass
131
132
132
133
def extractAsMulti (self , geom ):
133
- if geom .type () == QGis . Point :
134
+ if geom .type () == QgsWkbTypes . PointGeometry :
134
135
if geom .isMultipart ():
135
136
return geom .asMultiPoint ()
136
137
else :
137
138
return [geom .asPoint ()]
138
- elif geom .type () == QGis . Line :
139
+ elif geom .type () == QgsWkbTypes . LineGeometry :
139
140
if geom .isMultipart ():
140
141
return geom .asMultiPolyline ()
141
142
else :
@@ -147,9 +148,9 @@ def extractAsMulti(self, geom):
147
148
return [geom .asPolygon ()]
148
149
149
150
def convertGeometry (self , geom_list , vType ):
150
- if vType == QGis . Point :
151
+ if vType == QgsWkbTypes . PointGeometry :
151
152
return QgsGeometry ().fromMultiPoint (geom_list )
152
- elif vType == QGis . Line :
153
+ elif vType == QgsWkbTypes . LineGeometry :
153
154
return QgsGeometry ().fromMultiPolyline (geom_list )
154
155
else :
155
156
return QgsGeometry ().fromMultiPolygon (geom_list )
0 commit comments