回答:
最初に行うことは、地理空間座標で重複する長方形を決定することです。これを行うには、各ソースイメージのジオトランスフォームを取得します。
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])]
次に、上部と左側の座標を減算し、ピクセルサイズで割って、切り上げて、その長方形を各画像のピクセルに変換します。
ここからReadRaster()
、各画像を呼び出して、計算したばかりのピクセル範囲を指定できます。
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>
)
私は少し疲れているので、これがあまり意味をなさないなら、私に知らせてください!
gt1[1]
およびgt2[1]
(またはgt1[5]
およびgt2[5]
)が反対の兆候がある場合、これは機能しますか?(垂直または水平ラスタの1を反転ことになる、私は。思う)場合や、abs(gt1[2])
およびabs(gt1[4])
より大きいabs(gt1[1])
とabs(gt1[5])
が、abs(gt2[2])
そしてabs(gt2[4])
よりも小さいabs(gt2[1])
とabs(gt2[5])
(おそらく斜めラスタの1を反転ことになりますか)?