小编tac*_*yon的帖子

在块部分重叠的情况下逐块迭代地加载图像

试图处理大型卫星图像(~10GB).对于存储器有效处理,在每次迭代中将图像块(block/ tile)加载到存储器中.

平铺图像

示例代码如下:

def process_image(src_img, dst_img, band_id=1):
    with rasterio.open(src_img) as src:
        kwargs = src.meta
        tiles = src.block_windows(band_id)
        with rasterio.open(dst_img, 'w', **kwargs) as dst:
            for idx, window in tiles:
                print("Processing Block: ", idx[0]+1, ", ", idx[1]+1)
                src_data = src.read(band_id, window=window)
                dst_data = src_data ** 2 # Do the Processing Here
                dst.write_band( band_id, dst_data, window=window)
    return 0
Run Code Online (Sandbox Code Playgroud)

然而,对于需要内核方式操作的任何类型的处理(例如任何convolve类似的滤波器smoothing),这导致在块的边缘附近的处理中的问题.为解决此问题,每个块应略微重叠,如下所示:

重叠放大

我的目标是按以下方式加载块,其中可以根据需要调整重叠量.

重叠的瓷砖

到目前为止,我没有找到任何直接的方法来实现这一目标.在这方面我会感激不尽.

gdal python-3.x rasterio

7
推荐指数
1
解决办法
225
查看次数

从包含字典键的另一个ndarray构造一个值的ndarray

我有一个包含按特定顺序排列的字典键的ndarray.我想创建另一个包含相应键值的ndarray.必须保持订单.显而易见的方法是逐个元素迭代包含键的数组,但问题是没有办法事先知道数组的形状.

是否有可能压平关键字的ndarray并迭代它以生成平坦的数值,并最终在不损害订单的情况下解开它?

 mydict = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5, 'f':6}
 input_pattern = np.array([['a', 'f'], ['b', 'e'], ['c', 'd']])
 expected_output = np.array([[1, 6], [2, 5], [3, 4]])
Run Code Online (Sandbox Code Playgroud)

注意:在上面的示例中,模式数组是2D,但可能并非总是如此.它也可能不包含字典的所有键.

python dictionary numpy python-3.x numpy-ndarray

2
推荐指数
1
解决办法
73
查看次数

标签 统计

python-3.x ×2

dictionary ×1

gdal ×1

numpy ×1

numpy-ndarray ×1

python ×1

rasterio ×1