Проецирование набора массивов, представляющих тайлы спутникового изображения - PullRequest
0 голосов
/ 11 июля 2019

У меня есть спутниковое изображение, которое я хочу разбить на перекрывающиеся сегменты. Мне удалось разделить изображение на эти сегменты, но когда я смотрю на них в ArcMap, все изображения попадают в одно и то же место и полностью перекрывают друг друга.

Как я могу сделать так, чтобы они выстраивались в том же направлении, что и исходное изображение, из которого я их обрезал?

def split_img(img_in, outpath, stride=240, out_img_size=(300,300)):
    file = gdal.Open(img_in)
    arr = file.ReadAsArray()
    tiles = skimage.util.view_as_windows(arr, out_img_size, stride)
    n = tiles.shape[0]
    m = tiles.shape[1]
        for i in range(n):
            for j in range(m):
                a = str(i)+"_"+str(j)
                outfile = os.path.join(outpath, 'Split_%s' % a + '.tif') 
                img = tiles[i,j]
                [cols,rows] = img.shape
                trans= file.GetGeoTransform()
                proj= file.GetProjection()

                outdriver = gdal.GetDriverByName("GTiff")
                outdata   = outdriver.Create(str(outfile), rows, cols, 1, gdal.GDT_Float32)
                outdata.GetRasterBand(1).WriteArray(img)
                outdata.SetGeoTransform(trans)
                outdata.SetProjection(proj)
                outdata = None
                print('Processing %s' % a)

Это код, который я использовал для разделения изображения. Я подумал, что, прикрепив информацию о проекции, а также GeoTransform из исходного изображения, выходные фрагменты будут правильно распределены, но кажется, что это не так.

...