7 votos

Clip de trama con otra trama (por extensión) en Python

Estoy tratando de hacer raster álgebra con dos rásteres, pero cuando me transformar los rásteres en la matriz, no puedo hacer la operación, debido a que los archivos no tienen la misma medida

ejemplo:

from osgeo import gdal
import numpy as np

IMG1 = gdal.Open('C:/IMG1.TIF')
IMG2 = gdal.Open('C:/IMG2.TIF')

img1 = IMG1.ReadAsArray()
img2 = IMG2.ReadAsArray()

img1+img2
>>>>> ValueError: operands could not be broadcast together with shapes (5353,3352) (5548,3232) 

Así que.. si veo que el gt de cada img muestran que img1 y img2 tienen el mismo tamaño del píxel (100), pero en diferente medida

g1 = IMG1.GetGeoTransform()
gt1
>>>>> (482084.999999999, 100.0, 0.0, 5652715.00001374, 0.0, -100.0)
g2 = IMG2.GetGeoTransform()
gt2
>>>>> (475184.999999999, 100.0, 0.0, 5643715.00001535, 0.0, -100.0)

Así que.. he utilizado esta operación con el fin de obtener la intersección medida.. pero no sé cómo se aplican

r1 = [gt1[0], gt1[3],gt1[0] + (gt1[1] * IMG1.RasterXSize), gt1[3] + (gt1[5] * IMG1.RasterYSize)]
r2 = [gt2[0], gt2[3],gt2[0] + (gt2[1] * IMG2.RasterXSize), gt2[3] + (gt2[5] * IMG2.RasterYSize)]
intersection = [max(r1[0], r2[0]), min(r1[1], r2[1]), min(r1[2], r2[2]), max(r1[3], r2[3])]

7voto

Encontró la solución

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