[Qgis-developer] Few improvements in PyQGIS
Martin Dobias
wonder.sk at gmail.com
Thu Feb 4 16:24:19 EST 2010
Hi all
I hope this is a good news for developers using python. In svn trunk
(r12878) there are few additions that make QGIS API more pythonic.
QgsFeature allows direct access to attributes (get, set, delete attribute):
>>> f = QgsFeature()
>>> f[1] = QVariant("hello")
>>> print f[1].toString()
hello
>>> del f[1]
>>> print f.attributeMap()
{}
QgsVectorLayer and QgsVectorDataProvider support iterating (available
for those with sip >= 4.9).
layer.select([], QgsRectangle())
for f in layer:
# do something with feature f
--- equals to ---
layer.select([], QgsRectangle())
f = QgsFeature()
while layer.nextFeature(f):
# do something with feature f
That's it. The older idioms (using nextFeature) keep working too.
Inspired by a blog post from Sean Gillies:
http://sgillies.net/blog/952/iterators
Btw. fetching a list of values in an column gets this simple:
>>> lst = [ feat[1] for feat in layer ]
(just don't forget a select() call before iterating)
If you have any tips what other parts of QGIS API could be made more
pythonic, let me know.
Martin
More information about the Qgis-developer
mailing list