[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