[prev in list] [next in list] [prev in thread] [next in thread]
List: qgis-developer
Subject: Re: [Qgis-developer] Accessing Features from API
From: <ahmed () elegantdesigns ! ca>
Date: 2009-08-25 11:55:04
Message-ID: 177320f1fbfdcbe764742b26b54127f3 () 127 ! 0 ! 0 ! 1
[Download RAW message or body]
Motta,
I'd love to see those sources
p.s. thank you to jef(IRC) and Germán for helping me out. It was
invaluable
cheers,
dassouki
On Tue, 25 Aug 2009 08:12:06 -0300, "motta.luiz@gmail.com"
<motta.luiz@gmail.com> wrote:
> You need define which field you want get by call attributeMap.
> ...
>
> id = v_provider.fieldNameIndex( field_name )
> v_provider.select([id]) # Define field you get attribute
> rows = []
> feat = QgsFeature()
> while v_provider.nextFeature( feat ):
> data = feat.attributeMap()[ id ]
> row = [ data ]
> rows.append( row )
>
> ...
>
>
> PS: I made some sources for study case, if you want i can send for you.
>
> ahmed@elegantdesigns.ca escreveu:
>> The output of the attached code is:
>>
>> Layer: "test_shp_layer"
>> field: "test_shp_field"
>> v_provider: "<qgis.core.QgsFeature object at 0xab50dac>"
>> rows: []
>>
>>
>> Even if I add a dummy string to the list, it will only return that
value.
>> For some reason, I cannot seem to fetch the features from the layer and
>> load them into the list. I was wondering, what did my fragile brain do
>> wrong? and how can i fix it?
>>
>> cheers,
>> dassouki
>>
>> # CODE:
>>
>> # loads a field into a python list
>> def field_to_list( self, layer_name, field_name ):
>> v_layer = self.get_vector_layer_by_name( layer_name ) )
>> v_provider = v_layer.dataProvider()
>> id = v_provider.fieldNameIndex( field_name )
>> rows = []
>> feat = QgsFeature()
>> while v_provider.nextFeature( feat ):
>> data = feat.attributeMap()[ id ]
>> row = [ data ]
>> rows.append( row )
>> QMessageBox.warning( self, "window title", str( ",".join( rows ) ) )
>> return rows
>>
>> def get_vector_layer_by_name( self, myName ):
>> layermap = QgsMapLayerRegistry.instance().mapLayers()
>> for name, layer in layermap.iteritems():
>> if layer.type() == QgsMapLayer.VectorLayer and layer.name() ==
>> myName:
>> if layer.isValid():
>> return layer
>> else:
>> return None
>>
>>
>>
>>
>> _______________________________________________
>> Qgis-developer mailing list
>> Qgis-developer@lists.osgeo.org
>> http://lists.osgeo.org/mailman/listinfo/qgis-developer
>>
_______________________________________________
Qgis-developer mailing list
Qgis-developer@lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/qgis-developer
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic