Guest User

QGIS Split lines into segments

a guest
Apr 3rd, 2025
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.18 KB | None | 0 0
  1. MULTILINE = 5
  2. LINESTRING = 2
  3.  
  4.  
  5. def split_lines():
  6.     layer = iface.activeLayer()
  7.     geometry_type = layer.wkbType()
  8.    
  9.     if geometry_type not in (MULTILINE, LINESTRING):
  10.         return '\nLayer has no line-geometry.'
  11.        
  12.     features = layer.selectedFeatures()
  13.     if not features:
  14.         return '\nNo features selected'
  15.        
  16.     layer.startEditing()
  17.     # get the selected features geometry
  18.     for feature in features:
  19.         if geometry_type == MULTILINE:
  20.             geom = feature.geometry().asMultiPolyline()[0]
  21.         else:
  22.             geom = feature.geometry().asPolyline()
  23.         points = list(geom)
  24.         # create new features
  25.         for start_point, end_point in zip(points, points[1:]):
  26.             new_feat = QgsFeature(layer.fields())
  27.             if geometry_type == MULTILINE:
  28.                 new_geom = QgsGeometry.fromMultiPolylineXY([[start_point, end_point]])
  29.             else:
  30.                 new_geom =  QgsGeometry.fromPolylineXY([start_point, end_point])
  31.             new_feat.setGeometry(new_geom)
  32.             layer.addFeature(new_feat)
  33.     return 'Done.'
  34.        
  35.  
  36. if __name__ == '__console__':
  37.     print(split_lines())
  38.    
Tags: qgis
Advertisement
Add Comment
Please, Sign In to add comment