Yapılacak ilk şey, jeo-uzamsal koordinatlarda çakışan dikdörtgeni belirlemektir. Bunu yapmak için, her kaynak görüntü için coğrafi dönüşüm elde edersiniz:
gt1 = ds1.GetGeoTransform()
# r1 has left, top, right, bottom of dataset's bounds in geospatial coordinates.
r1 = [gt1[0], gt1[3], gt1[0] + (gt1[1] * ds1.RasterXSize), gt1[3] + (gt1[5] * ds1.RasterYSize)]
# Do the same for dataset 2 ...
intersection = [max(r1[0], r2[0]), min(r1[1], r2[1]), min(r1[2], r2[2]), max(r1[3], r2[3])]
Ardından, üst ve sol koordinatları çıkararak ve yuvarlayarak piksel boyutuna bölerek bu dikdörtgeni her görüntü için piksele dönüştürün.
Buradan ReadRaster()
, her bir görüntüyü çağırarak , yeni hesapladığınız piksel boyutlarını verin:
band.ReadRaster(px1[0], px1[1], px1[2] - px1[0], px1[3] - px1[1], px1[2] - px1[0], px1[3] - px1[1],
# <band's datatype here>
)
Biraz yorgunum, eğer bu pek mantıklı değilse, bana bildirin!
gt1[1]
vegt2[1]
(veyagt1[5]
vegt2[5]
) karşıt işaretler varsa bu da işe yarar mı? (Dikey veya yatay raster birini çevirmek olurdu Ki, ben. Düşünüyorum) Veya eğerabs(gt1[2])
veabs(gt1[4])
daha büyük olanabs(gt1[1])
veabs(gt1[5])
ancakabs(gt2[2])
veabs(gt2[4])
daha küçükabs(gt2[1])
veabs(gt2[5])
(muhtemelen çapraz raster birini çevirmek olurdu)?