Je ne comprends pas ce que vous voulez faire
- ce sont des lignes
- que vous voulez découper suivant des points que vous spécifiez ?
Il y a beaucoup plus simple comme traitement que ceux qui sont indiqués dans les tutoriels de PyQgis (vous êtes sur de ne pas faire d'erreurs
La fonction suivante permet de tout sélectionner dans une couche (géométrie et attributs)
Code:
>>> def select_tout(couche):
... couche.select([])
... couche.setSelectedFeatures([obj.id() for obj in couche])
ensuite
Code:
>>> macouche = qgis.utils.iface.activeLayer()
>>> select_tout(macouche)
fait le reste, tout est dans macouche (géométries et attributs)
Si vous voulez le nom et autres choses
Code:
>>>macouche.name()
PyQt4.QtCore.QString(u'testligne')
ensuite dans Python il vaut mieux travailler avec des boucles plutôt qu'avec la manière indiquée dans les tutoriels et celle que vous utilisez:
Code:
>>> for elem in macouche.selectedFeatures():
... geom = elem.geometry()
... wkt = geom.exportToWkt()
... print wkt
LINESTRING(116935.350012 115500.583375, 117960.618676 115652.475029, 119201.067183 116184.095818, 119947.867814 116639.770780, 120897.190651 117399.229049, 121947.774591 117981.480389, 122821.151601 118411.840075, 123808.447352 118930.803226, 124226.149400 119095.352518, 124859.031291 119250.419917, 125504.570820 119393.903375, 126122.693025 119381.291081, 126746.093024 119250.510605, 127210.875871 119267.479180, 127480.348645 119110.153903, 127755.069429 118784.225242, 127693.191033 118512.405932, 127397.984044 117940.377074, 126837.736203 117219.874727, 126864.632198 116890.211110, 127285.349964 116676.704033, 127920.077596 116613.336464, 128366.270666 116608.104013, 128694.295553 116639.770780, 130466.364848 116576.482590) etc.
etc.
ou avec ce que vous voulez faire:
Code:
>>> for elem in macouche.selectedFeatures():
... geom= elem.geometry()
... x=geom.asPolyline()
... print x
[(116935,115501), (117961,115652), (119201,116184), (119948,116640), (120897,117399), (121948,117981), (122821,118412), (123808,118931), (124226,119095), (124859,119250), (125505,119394), (126123,119381), (126746,119251), (127211,119267), (127480,119110), (127755,118784), (127693,118512), (127398,117940), (126838,117220), (126865,116890), (127285,116677), (127920,116613), (128366,116608), (128694,116640), (130466,116576)], etc.
si vous voulez absolument votre indice i, il faut alors utiliser:
Code:
>>> for i, elem in enumerate(macouche.selectedFeatures()):
... geom= elem.geometry()
... x=geom.asPolyline()
... print "indice: ", i, x
...
indice: 0 [(116935,115501), (117961,115652), (119201,116184), etc.
Pour les attributs, c'est la même chose
Code:
>>> for att in macouche.selectedFeatures():
... attrs = att.attributeMap()
... for (k,atr) in attrs.iteritems():
... print "%d: %s" % (k, atr.toString())
0, -100, test
1, -200, test2
etc.
en résumé:
Code:
def select_tout(couche):
couche.select([])
couche.setSelectedFeatures([obj.id() for obj in couche])
macouche = qgis.utils.iface.activeLayer()
select_tout(macouche)
for elem in macouche.selectedFeatures():
geom= elem.geometry()
attrs = elem.attributeMap()
(traitements)
effectue tout votre traitement en une seule boucle simple, hormis eclate_arc(arc,indice) où je ne pige pas ce que vous voulez faire
Liens sociaux