Advertisement
Guest User

Untitled

a guest
Mar 5th, 2015
192
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.70 KB | None | 0 0
  1. from PyQt4.QtCore import *
  2.  
  3. # easy 2 config vars
  4. myPath = "/media/ymirsson/MyData/GIS/tmp/"
  5. myPts = "test_coords.shp"
  6. myLines = "test_lines.shp"
  7. sortField = "No"
  8. myCRS = "25832"
  9.  
  10. # load the points layer
  11. myPtsLayer = QgsVectorLayer(myPath + myPts, "My Points", "ogr")
  12.  
  13. # field def. 4 lines-layer
  14. fields = QgsFields()
  15. fields.append(QgsField("id", QVariant.Int))
  16. fields.append(QgsField("name", QVariant.String))
  17.  
  18. # create writer
  19. writer = QgsVectorFileWriter(myPath + myLines, "utf-8", fields, QGis.WKBLineString, QgsCoordinateReferenceSystem(int(myCRS), QgsCoordinateReferenceSystem.EpsgCrsId), "ESRI Shapefile")
  20.  
  21. if writer.hasError() == QgsVectorFileWriter.NoError:
  22. # featureobject to list
  23. features = myPtsLayer.getFeatures()
  24. Points=([])
  25. for feature in features:
  26. geom = feature.geometry().asPoint()
  27. sortID = feature.attributes()[myPtsLayer.fieldNameIndex(sortField)]
  28. Points.append([sortID,geom])
  29. Points.sort()
  30.  
  31. # create lines
  32. for i in range(1,len(Points)):
  33. Line = QgsFeature()
  34. Line.setGeometry(QgsGeometry.fromPolyline([Points[i-1][1], Points[i][1]]))
  35. Line.setAttributes([i,str(Points[i-1][0]) + " to " + str(Points[i][0])])
  36. writer.addFeature(Line)
  37. # don't forget the last one -.-
  38. Line = QgsFeature()
  39. Line.setGeometry(QgsGeometry.fromPolyline([Points[len(Points)-1][1], Points[0][1]]))
  40. Line.setAttributes([len(Points),str(Points[len(Points)-1][0]) + " to " + str(Points[0][0])])
  41. writer.addFeature(Line)
  42.  
  43. # flush 2 disk
  44. del writer
  45.  
  46. # load both layers into qgis-project
  47. QgsMapLayerRegistry.instance().addMapLayer(myPtsLayer)
  48. QgsMapLayerRegistry.instance().addMapLayer(QgsVectorLayer(myPath + myLines, "My Lines", "ogr"))
  49.  
  50. print "Done .. "
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement