1 votos

AttributeError: El objeto 'QgsRasterLayer' no tiene el atributo 'pendingFields'

Recuerde que estoy usando Python versión 3.6.2 QGIS versión 3.2

al ejecutar mi código estoy recibiendo este error:

fields = selectedLayer.pendingFields()
AttributeError: 'QgsRasterLayer' object has no attribute 'pendingFields

si estoy usando fields() en lugar de pendingFields() debido a la versión 3x de qgis

obteniendo este error:

fields = selectedLayer.fields()
AttributeError: 'QgsRasterLayer' object has no attribute 'fields

Soy nuevo en este campo, así que por favor dígame correctamente qué debo hacer

aquí está mi código:

    filename = self.dlg.lineEdit.text()
    output_file = open(filename, 'w')

    selectedLayerIndex = self.dlg.comboBox.currentIndex()
    selectedLayer = layers[selectedLayerIndex]
    fields = selectedLayer.pendingFields()
    fieldnames = [field.name() for field in fields]

    for f in selectedLayer.getFeatures():
        line = ','.join(unicode(f[x]) for x in fieldnames) + '\n'
        unicode_line = line.encode('utf-8')
        output_file.write(unicode_line)
    output_file.close()

2voto

Lucas Puntos 128

Su código no funcionará con las capas ráster ya que no tienen ni campos (QGIS no soporta tablas de atributos ráster - enlace ) ni características.

fields ( pendingFields en 2x) y getFeatures son métodos de la QgsVectorLayer clase.

Por lo tanto, pruebe si su capa tiene un fields (es decir if hasattr(selectedLayer, 'fields'): etc... e ignorarla si no lo hace, es decir

filename = self.dlg.lineEdit.text()
selectedLayerIndex = self.dlg.comboBox.currentIndex()
selectedLayer = layers[selectedLayerIndex]
if hasattr(selectedLayer, 'fields'):

    fields = selectedLayer.pendingFields()
    fieldnames = [field.name() for field in fields]

    for f in selectedLayer.getFeatures():
        etc...

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X