在Python 3.7中与光栅合并

2024-06-12 15:09:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试运行以下代码:

 # -*- 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)

我在Python3.7的64位环境中运行它。错误是:“MemoryError:无法为具有形状(17054466261)和数据类型float32的数组分配17.4 GiB”

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

谢谢大家的帮助


Tags: importsrcos光栅filesmergeoutglob