回答:
まず、引き続きPointsToPaths-Plugin(https://plugins.qgis.org/plugins/pointstopaths_v02/)を使用できます。[プラグイン]> [プラグインの管理とインストール(プラグインマネージャ)]> [設定]で[実験的なプラグインも表示]オプションを有効にする必要があるかもしれません。
次に、注文のあるデータフィールドが数値タイプ(整数など)であることを確認します。
QGISバージョン(2.0.1)を使用してポイントシェイプからラインを作成しようとしましたが、すべて問題ありませんでした。ここにスクリーンショットがあります:
多分これは役に立ちます!
test_coordsシェイプの結果のスクリーンショット:
基本的なアプローチは次のとおりです。
iface.legendInterface().layers()
€:楽しみのために:
from PyQt4.QtCore import *
# easy 2 config vars
myPath = "/media/ymirsson/MyData/GIS/tmp/"
myPts = "test_coords.shp"
myLines = "test_lines.shp"
sortField = "No"
myCRS = "25832"
# load the points layer
myPtsLayer = QgsVectorLayer(myPath + myPts, "My Points", "ogr")
# field def. 4 lines-layer
fields = QgsFields()
fields.append(QgsField("id", QVariant.Int))
fields.append(QgsField("name", QVariant.String))
# create writer
writer = QgsVectorFileWriter(myPath + myLines, "utf-8", fields, QGis.WKBLineString, QgsCoordinateReferenceSystem(int(myCRS), QgsCoordinateReferenceSystem.EpsgCrsId), "ESRI Shapefile")
if writer.hasError() == QgsVectorFileWriter.NoError:
# featureobject to list
features = myPtsLayer.getFeatures()
Points=([])
for feature in features:
geom = feature.geometry().asPoint()
sortID = feature.attributes()[myPtsLayer.fieldNameIndex(sortField)]
Points.append([sortID,geom])
Points.sort()
# create lines
for i in range(1,len(Points)):
Line = QgsFeature()
Line.setGeometry(QgsGeometry.fromPolyline([Points[i-1][1], Points[i][1]]))
Line.setAttributes([i,str(Points[i-1][0]) + " to " + str(Points[i][0])])
writer.addFeature(Line)
# don't forget the last one -.-
Line = QgsFeature()
Line.setGeometry(QgsGeometry.fromPolyline([Points[len(Points)-1][1], Points[0][1]]))
Line.setAttributes([len(Points),str(Points[len(Points)-1][0]) + " to " + str(Points[0][0])])
writer.addFeature(Line)
# flush 2 disk
del writer
# load both layers into qgis-project
QgsMapLayerRegistry.instance().addMapLayer(myPtsLayer)
QgsMapLayerRegistry.instance().addMapLayer(QgsVectorLayer(myPath + myLines, "My Lines", "ogr"))
print "Done .. "