5 votos

Carga de capa y comprobación de polígono WkbType en QGIS 3.0

Estoy intentando editar un plugin para que funcione en QGIS 3.0 y quiero comprobar si la capa es poligonal.

for layer in layers:  
    if layer.type() == QgsMapLayer.VectorLayer and layer.wkbType() == Qgis.Polygon:  
        self.dlg.comboBox.addItem( layer.name(), layer )

Da error

" if layer.type() == QgsMapLayer.VectorLayer and layer.wkbType() == Qgis.Polygon : AttributeError: type object 'Qgis' has no attribute 'Polygon'"

¿Cómo puedo utilizar WKBType en QGIS 3.0?

11voto

Elliott Maynard Puntos 11

Como puede ver aquí el enum QGis.WkbType se convierte en QgsWkbTypes.Type en QGIS v3.

Así que una afirmación válida sería:

layer.wkbType() == QgsWkbTypes.Polygon

Sin embargo, esto no sería útil si tiene, por ejemplo, varios polígonos.

Por lo tanto, le sugiero que utilice:

layer.geometryType() == QgsWkbTypes.PolygonGeometry

que es una forma abreviada de manejar todas las geometrías poligonales posibles (por ejemplo, Polygon, PolygonZ, PolygonM, PolygonZM, MultiPolygon, MultiPolygonZ, 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