6 votos

Obtener valor NoData de raster en pyqgis

Estoy luchando con pyqgis con un simple problema. Tengo una capa de trama cargada en mi TDC y me gustaría volver con python su valor NoData.

Me miré en el API, pero (y seguro que es por mi falta) no puedo encontrar una manera de hacer eso.

Así que tengo mi raster como un objeto en la consola:

rl = iface.activeLayer()

y he intentado lo que me he encontrado en algunos sitios web (ver la lista en la parte inferior):

rl.getNoDataValue() #[1]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'QgsRasterLayer' object has no attribute 'getNoDataValue'


rl.noDataValue() #[2] old API
Traceback (most recent call last):
  File "<input>", line 1, in <module>
AttributeError: 'QgsRasterLayer' object has no attribute 'noDataValue'

#[1]: http://qgis.sourceforge.net/qgis_api/html/classQgsRasterLayer.html#a10

#[2]: http://qgis.org/api/1.8/classQgsRasterLayer.html#a558e7f4bb4abe6b95c6882fbe4d2e19f

Buscar en la QgsRasterLayer clase dir(rl) pero no puedo encontrar una manera de devolver el NoData valores.

7voto

Yada Puntos 9489

Que método ('noDataValue") está en la QgsRasterBlock clase (no en QgsRasterLayer). Para acceder a este método, usted puede probar este código:

layer = iface.activeLayer()
extent = layer.extent()

provider = layer.dataProvider()

rows = layer.rasterUnitsPerPixelY()
cols = layer.rasterUnitsPerPixelX()

block = provider.block(1, extent,  rows, cols)

print block.noDataValue()

A mí me funciona.

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