[Qgis-developer] Accessing Features from API

ahmed at elegantdesigns.ca ahmed at elegantdesigns.ca
Mon Aug 24 13:26:47 EDT 2009


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






More information about the Qgis-developer mailing list