首页 > 解决方案 > 在 Python 3.7 中与 Rasterio 合并

问题描述

我正在尝试运行此代码:

 # -*- coding: utf-8 -*-
"""
Created on Wed May 13 12:43:07 2020

@author: Matthew Farnham
"""
import gdal
import os.path
import rasterio
from rasterio.merge import merge
from rasterio.plot import show
import glob
import os
import numpy as np


with rasterio.Env(GDAL_TIFF_INTERNAL_MASK=True):
    PIXELTYPE = 'DEFAULT',
    TFW='YES'


    directory = r"H:\Projects\Countries\USA\State\Washington_DC\DTM\LIDAR\Datagateway\Unzipped\elevation"

    Output = r"E:\Previsico\PERM\Matthew\Previsico\7_Model_Workings\DEM_Mosaic\Data_Testing_Keep_empty\Trial1\Test3.tif"

    search_criteria = "*.tif"

    q = os.path.join(directory, search_criteria)

    print(q)

    dem_fps = glob.glob(q)

    print(dem_fps)


    Mosaic_files = []

    for i in dem_fps:
        src = rasterio.open(i)
        Mosaic_files.append(src)


    out_meta = src.meta.copy()




    mosaic, out_trans = merge(Mosaic_files)



    out_meta = src.meta.copy()



    out_meta.update({"driver": "GTiff",
                  "height": mosaic.shape[1],
                  "width": mosaic.shape[2],
                  "transform": out_trans,
                  "crs":"+proj= unknown",
                  "BigTIFF" : "yes",
                  }
                 )

    with rasterio.open(Output, "w", BigTIFF = 'YES', **out_meta) as dest:
        dest.write(mosaic)

我在 64 位环境中的 Python 3.7 中运行它。错误是:“MemoryError: Unable to allocate 17.4 GiB for an array with shape (1, 70544, 66261) and data type float32”

我正在尝试镶嵌(合并)栅格文件(.tif)以创建包含所有单个栅格文件的栅格数据集。有没有办法让 Python 先编写它而不是将所有内容存储到内存中?

谢谢大家的帮助!

标签: pythonrasterio

解决方案


推荐阅读