[Qgis-developer] Using QgsAttributeMap to get feature attributevalue

Matthew Denno mgdenno at gmail.com
Sat Jul 18 20:18:55 EDT 2009


Marco,

Thanks for the direction, I got it working.  As it turns out I had tried
something close to the correct way at one point but was making it harder
than it it is.

Thanks again,

Matt

On Sat, Jul 18, 2009 at 3:44 AM, Hugentobler Marco <
marco.hugentobler at karto.baug.ethz.ch> wrote:

> Hi Matthew
>
> You need to first find out what index the attribute with name 'Elevation'
> has. QgsAttributeMap uses that index number, not the field name.
> You may find out the index of a field name by using the function
> fieldNameIndex of QgsVectorDataProvider
>
> int fieldNameIndex(const QString& fieldName)
>
> But that gives you only the commited fields. If you also want to consider
> the not-commited fields, you could work with QgsVectorLayer::pendingFields
>
> Then, once you have the index, query the value of QgsAttributeMap for this
> index. QgsAttribute Map is a map (or a dict in python) with key int (the
> index) and QVariant value (the attribute value).
>
> Regards,
> Marco
>
>
> -----Ursprüngliche Nachricht-----
> Von: qgis-developer-bounces at lists.osgeo.org im Auftrag von Matthew Denno
> Gesendet: Sa 18.07.2009 05:45
> An: qgis-developer
> Betreff: [Qgis-developer] Using QgsAttributeMap to get feature
> attributevalue
>
> Hi,
>
> I am having a problem that I am hoping someone can help me with.  I have a
> piece of code that iterates through a feature class and pulls out the x and
> y coordinates from the geometry.  The z values are stored in the attribute
> table and I would also like to pull that value for each feature.  I have
> looked at Tutorial 6, but it looks like the classes have changed since it
> was written, I think.  I can see that feature.attributeMap() returns a
> dictionary of Key-Value pairs (I think) but I can't figure out how to get
> the "Elevation" field attribute value from that.  Here is the piece of
> code:
>
>  while (mypVectorLayer->nextFeature(currentFeature))
>
> {
>
> //get geometry of the feature
>
> QgsGeometry* currentGeometry = currentFeature.geometry();
>
> QgsPoint currentPoint = currentGeometry->asPoint();
>
>
>  //get the attributes of this feature
>
> const QgsAttributeMap& myAttributes = currentFeature.attributeMap();
>
>
>  //get the value from the "Elevation" field
>
> double zval = //value from field
>
>
>
> //add point coordinates to point and add point to dt
>
>  Point pt = Point(currentPoint.x(), currentPoint.y(), zval);
>
> dt.insert(pt);
>
> //delete currentFeature;
>
> }
>
>
> Thanks,
>
>
> Matt
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/qgis-developer/attachments/20090718/30b34442/attachment.html


More information about the Qgis-developer mailing list