- Notifications
You must be signed in to change notification settings - Fork 51
Expand file tree
/
Copy pathSplit_vector_layer_by_attribute.py
More file actions
Latest commit
47 lines (41 loc) · 1.2 KB
/
Copy pathSplit_vector_layer_by_attribute.py
File metadata and controls
47 lines (41 loc) · 1.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
##Vector=group
##input=vector
##class_field=field input
##output=output vector
##nomodeler
fromqgis.coreimport*
fromPyQt4.QtCoreimport*
# import VectorWriter
try:
# Qgis from 2.0 to 2.4
fromprocessing.core.VectorWriterimportVectorWriter
except:
# Qgis from 2.6
fromprocessing.tools.vectorimportVectorWriter
layer=processing.getObject(input)
provider=layer.dataProvider()
fields=provider.fields()
writers= {}
class_field_index=layer.fieldNameIndex(class_field)
inFeat=QgsFeature()
outFeat=QgsFeature()
inGeom=QgsGeometry()
nElement=0
writers= {}
feats=processing.features(layer)
nFeat=len(feats)
forinFeatinfeats:
progress.setPercentage(int(100*nElement/nFeat))
nElement+=1
atMap=inFeat.attributes()
clazz=atMap[class_field_index]
ifclazznotinwriters:
outputFile=output+'_'+str(len(writers)) +'.shp'
writers[clazz] =VectorWriter(outputFile, None, fields,
provider.geometryType(), layer.crs())
inGeom=inFeat.geometry()
outFeat.setGeometry(inGeom)
outFeat.setAttributes(atMap)
writers[clazz].addFeature(outFeat)
forwriterinwriters.values():
delwriter