1 votos

¿Recuperación de píxeles en la intersección de un polígono y una imagen ráster en PyQGIS?

Soy principiante en PyQGIS.

Me gustaría recuperar los píxeles que se intersecan con mi shapefile (polígono) utilizando un bucle for ... aparentemente, el bucle es incorrecto (sin resultado).

Debajo del código

from PyQt4.QtCore import *
from osgeo import gdal
from osgeo.gdalconst import *

#driver = gdal.GetDriverByName ('GTiff')
Driver.Register # ()

rlayer = "F:\ MASTER GEOM \ MasterGeomatic_data \ PLEIADES \ PLEIADES_20130415_COLNAT.TIF"
rlayer = gdal.Open (rlayer, GA_ReadOnly)
provider = QgsVectorLayer ("F: try1.shp", 'try', 'ogr')
extent = provider.extent ()

collars = rlayer.RasterXSize
rows = rlayer.RasterYSize
#print (passes)
#print (rows)
val = []
for range (cols) in extent:
     print (range)

1voto

Ashley Puntos 16

He aquí una solución propuesta utilizando QGIS y un simple script en python que obtiene los datos como NumPy matriz.
En primer lugar, para obtener el área ráster que se cruza con su shapefile de polígonos, le sugiero que utilice la herramienta de QGIS (a través de la interfaz) denominada Recortar trama por capa de máscara . Este es el aspecto que puede tener la trama de salida de esa herramienta:

Antes: Raster with sample polygon En Output Raster

Ahora su trama de salida contiene sólo los valores para el área del polígono, siendo el resto 'Sin datos' (¡comprenda la diferencia entre 0 y sin datos!). Para obtener simplemente los datos como NumPy (incluido el NoData), utilice el siguiente script:

import gdal 
import numpy as np

rlayer = "C:\\Data\\Clipped_Raster.tif"
rast_data_source = gdal.Open(rlayer)

#Get metadata (optional)
print 'Number of bands: ', rast_data_source.RasterCount
cols = rast_data_source.RasterXSize
rows = rast_data_source.RasterYSize
print 'Size: ', cols, rows

srcband = rast_data_source.GetRasterBand(1)

data = srcband.ReadAsArray(0,0,cols,rows)

for pixel in data:
     #do something with the data

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