Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- MULTILINE = 5
- LINESTRING = 2
- def split_lines():
- layer = iface.activeLayer()
- geometry_type = layer.wkbType()
- if geometry_type not in (MULTILINE, LINESTRING):
- return '\nLayer has no line-geometry.'
- features = layer.selectedFeatures()
- if not features:
- return '\nNo features selected'
- layer.startEditing()
- # get the selected features geometry
- for feature in features:
- if geometry_type == MULTILINE:
- geom = feature.geometry().asMultiPolyline()[0]
- else:
- geom = feature.geometry().asPolyline()
- points = list(geom)
- # create new features
- for start_point, end_point in zip(points, points[1:]):
- new_feat = QgsFeature(layer.fields())
- if geometry_type == MULTILINE:
- new_geom = QgsGeometry.fromMultiPolylineXY([[start_point, end_point]])
- else:
- new_geom = QgsGeometry.fromPolylineXY([start_point, end_point])
- new_feat.setGeometry(new_geom)
- layer.addFeature(new_feat)
- return 'Done.'
- if __name__ == '__console__':
- print(split_lines())
Advertisement
Add Comment
Please, Sign In to add comment